Файл: лекции программирование ОЗО.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.05.2024

Просмотров: 112

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Использование функций

Обычно функции применяют в качестве операндов выражений. Параметром функции может быть константа, переменная или выражение соответствующего типа. Ниже приведены примеры использования стандартных функций и функций преобразования.

n := Round( (x2-x1)/dx); x1: = (-b + Sqrt(d)) / (2*a); m := Random(10); cena := StrToInt(Edit1.Text); Edit2.Text := IntToStr( 100); mes := 'x1=' + FloatToStr( x1) ; n := Round( (x2-x1)/dx); x1: = (-b + Sqrt(d)) / (2*a); m := Random(10); cena := StrToInt(Edit1.Text); Edit2.Text := IntToStr( 100); mes := 'x1=' + FloatToStr( x1) ;

Программирование линейных алгоритмов Оператор присваивания

Оператор присваивания является основной вычислительной инструкцией. Если в программе надо выполнить вычисление, то нужно использовать оператор присваивания.

В результате выполнения оператора присваивания значение переменной меняется, ей присваивается значение.

В общем виде оператор присваивания выглядит так: Имя := Выражение;

где:

Имя — переменная, значение которой изменяется в результате выполнения инструкции присваивания;

: = — символ инструкции присваивания.

Выражение — выражение, значение которого присваивается переменной, имя которой указано слева от символа инструкции присваивания.

Пример:

Summa := Сеnа * Kol; Skidka := 10; Found := False;

Тип выражения должен быть согласован с типом переменной.

Для примера

a:=b;

  1. если a переменная типа Z, то b так же должна быть переменной типа Z;

  2. если aR, то b может быть как Z так и R;

  3. если а переменная логического типа, то b тоже логического типа;

  4. если a типа char, то и b типа char;

  5. если a переменная строкового типа string, то и b строкового типа.


Операторы ввода и вывода

Для ввода исходных данных с клавиатуры используются процедуры:

read(список ввода);

readln(список ввода);

Список ввода представляет собой перечисленные через запятую имена переменных, которым присваиваются введенные с клавиатуры значения. Переменные могут быть целого, вещественного, символьного и строкового типов.

При вводе с клавиатуры информация представляет собой строку символов, т. е. имеет строковый тип. В процессе ввода происходит автоматическое преобразование строковых значений к типу переменных, входящих в список ввода. При наборе информации с клавиатуры она сначала помещается в виде строки в буфер ввода. Преобразование и передача значений из буфера ввода в переменные списка возможно только, если в буфер ввода введен признак конца строки (#13), этот символ вводится в буфер ввода клавишей Enter. При вводе значений из буфера используется указатель считывания.

Процедура read вводит значения переменных из списка ввода. Ввод значений числовых переменных завершается в строке символами пробел, Tab (#9) или признаком конца строки (#13). В качестве значения символьной переменной используется любой символ, на который в данный момент указывает указатель считывания. Признаком конца строкового значения (типа string) является признак конца строки (#13).

Примеры:

  1. vara,b:integer;

beginread(a,b);end.

Если переменным a и b следует присвоить значения 5 и –76 соответственно, то ввести их с клавиатуры можно следующим образом:

5|_|-76Enter или 5 Enter

-76 Enter

2) varc,d:char;

begin read(c,d); {c должно получить значение ’+’, d - значение ’z’}

end.

Ввод с клавиатуры следует осуществить следующим образом:

+z Enter

3) varc:char; d:integer;

beginread(d,c); { d=23, c=’*’}end.

Если ввести: 23|_| * Enter

то d=23, c=’|_|’

Таким образом, если в списке ввода оператора read необходимо указать имена как числовых, так и символьных переменных, то список имен символьных переменных должен предшествовать списку имен числовых переменных. Ввод данных в иной последовательности невозможен.

read(c,d); Ввести:*23 Enter

4) vars:string ;

beginread(s); { s=’8 марта’}end.

Ввести: 8 марта Enter

5) vara,b:string ;

beginread(a); read(b)end.

Если ввести:

да Enter

то a=’да’ и b=’’.

Ввод значений двух переменных, первая из которых имеет тип string, процедурами read невозможен, необходимо использовать процедуры readln, причем в списке ввода должно быть имя только одной переменной типа string. В отличие от процедуры read процедура readln после ввода значений всех переменных списка очищает буфер ввода и переводит курсор в начало следующей строки..


vara,b:string ;

beginreadln(a); readln(b) {a=’мама’, b=’папа’}end.

Ввести: мама Enter

папа Enter

Для вывода на экран используются процедуры:

write(список вывода);

writeln(список вывода);

Список вывода содержит выражения со значениями целого, вещественного, символьного, логического и строкового типов.

Процедура write(список вывода) выводит значения из списка подряд в одну строку и устанавливает курсор в следующую свободную позицию этой же строки экрана.

Процедура writeln(список вывода) выводит значения из списка подряд в одну строку, но после вывода значений переводит курсор в первую позицию следующей строки экрана.

Процедура writeln; переводит курсор в первую позицию следующей строки экрана.

Для вывода значений целого, символьного, логического и строкового типов можно использовать формат вывода: выражение:m, где m- длина поля, в котором размещается выводимое значение, оно выводится прижатым к правому краю поля. Для вывода значений вещественного типа используется формат вывода: выражение:m: n, где m – общая длина поля, n – количество позиций, отводимых под дробную часть.

Если указанной длины поля недостаточно для размещения значения, то поле автоматически раздвигается до нужной длины.

Примеры: На экране:

write(15); 15

writeln(‘a=’,-12); a=-12

writeln(-15.6 : 13 : 2); - 1 5 . 6 0


Программирование разветвляющихся алгоритмов

Для программирования разветвляющихся алгоритмов используются: условный оператор, оператор выбора и оператор безусловного перехода.

1. Условный оператор имеет полную и сокращенную форму записи. Полная форма условного оператора имеет вид:

if логическое выражение then оператор_1 else оператор_2;

Вычисляется значение логического выражения; если оно равно true, то выполняется оператор_1, если же - false - оператор_2.

Сокращенная форма условного оператора имеет вид:

if <логическое выражение> then <оператор>;

Вычисляется значение логического выражения; если оно равно true, то выполняется оператор, записанный после then, если же - false, то этот оператор не выполняется.

Примеры:

if x>y

thenz:=sqr(x)elsez:=y;

Здесь в результате выполнения условного оператора переменная z в любом случае получает новое значение.

if (x>=2) and(x<4)then b:=sin(x);

Здесь, например, при x = 5 переменная b сохраняет то значение, которое она имела до выполнения условного оператора.

В условном операторе после служебных слов then или else записывается лишь один оператор; если необходимо выполнить несколько действий, то соответствующие операторы объединяются в составной оператор, который имеет вид: begin оператор_1;

оператор_2;

оператор_n

end;

Пример: if x>y then begin min:=y; max:=x end

else begin min:=x; max:=y end;

2. С помощью оператора выбора можно выбрать один из любого количества вариантов. Оператор выбора имеет вид:

case <выражение> of

<константа_1>:<оператор_1>;

<константа_2>:<оператор_2>;

…….

<константа_n>:<оператор_n>;

else оператор

end;

Сначала вычисляется значение выражения (имеющего порядковый тип), затем среди констант отыскивается константа, равная вычисленному значению. Выполняется оператор, записанный после найденной константы, и оператор выбора завершает работу. Если в списке выбора не будет найдена константа, соответствующая вычисленному значению выражения, то выполняется оператор, стоящий за словом else. Если же часть else оператор отсутствует, и в списке выбора нет нужной константы, то выполнение оператора выбора завершается.


Пример:case mof

12,1,2: writeln(‘зима’);

3,4,5: writeln(‘весна’);

6,7,8: writeln(‘лето‘);

9,10,11: writeln(‘осень’)

else writeln(‘ошибка в данных’)

end;

3. Оператор безусловного перехода позволяет перейти к нужному оператору, при этом нарушается естественный порядок выполнения операторов. Оператор имеет вид: goto метка;

В качестве метки используется идентификатор или целое число без знака (0-9999). Метка описывается в разделе label:

label метка_1,метка_2, метка_n;

Например: label 1,ab;

Одной меткой можно пометить только один оператор. Метка отделяется от помеченного оператора двоеточием.

метка:оператор;

Например: ab: writeln(‘переход по метке’);

Пример: label t;

varx,y:real;

begingotot; …..

t: y: =sqr(x); …..

end.

Программирование циклических алгоритмов

Для программирования циклических алгоритмов используются операторы цикла. В языке Pascal различают три вида операторов цикла: for, while, repeat. Оператор цикла for имеет вид:

for параметр цикла:= выражение_1 to выражение_2 do оператор;

или

for параметр цикла:=выражение_1 downto выражение_2 do оператор;

параметр цикла - переменная порядкового типа;

выражение_1- начальное значение параметра цикла;

выражение_2– конечное значение параметра цикла.

Сначала вычисляются и запоминаются значения выражения_1 и выражения_2. Далее проверяется: значение выражения_1 меньше или равно (для downto - больше или равно) значению выражения_2. Если нет, то выполнение оператора цикла завершается, если же - да, то параметр цикла получает значение выражения_1, выполняется оператор и параметр цикла получает следующее значение (для downto – предыдущее значение). Затем проверяется: параметр цикла меньше или равен (для downto - больше или равен) значению выражения_2. Если да, то снова выполняется оператор и параметр цикла получает новое значение, если же - нет, то выполнение оператора цикла завершается.

Примеры:

for i:=1to10dowriteln(‘i=’,i);

for i:= 10downto1dowriteln(‘i=’,i);

Оператор цикла while имеет вид:

while логическое выражение do оператор;

Пока значение логического выражения true, выполняется оператор, записанный после служебного слова do, как только значение станет false, оператор цикла завершит свою работу. Если значение выражения с самого начала false, то указанный в цикле оператор не выполнится ни разу.