Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Алгоритмические языки высокого уровня. Курс лекций

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
940 Кб
Скачать

end;

function M_V(VS:RealAr):integer; var

nom:integer;

PromV:real; begin

nom := 1; PromV :=VS[1]; for i :=2 to MaxRaz do begin

if VS[i] > PromV then begin

nom := i; PromV :=VS[i]; end;

end;

Max_Value :=nom; end;

Begin

fin :=false; repeat

clrscr;

gotoxy(1,1); write(‘Введите MaxRaz - ’); readln(maxRaz); gotoxy(20,1); write(‘MaxR =’,maxRaz);

if maxRaz=0 then Fin := true; assign (FileD,FileName); rewtite(FileD);

for i :=1 to maxRaz do begin

gotoxy(15,3); write(Pr); gotoxy(15,4);write(Pr);

gotoxy(1,3); write(‘Введите Name - ’); read(NameFD); gotoxy(1,4);write(‘Введите Sum - ’); readln(SumFD);

VFD.Name := NameFD; VFD.Sum :=SumFD;

write(FileD,VFD);

gotoxy(1,6); write(i,‘-элемент’,‘Name=’,NameFD:10,‘Sum=’,SumFD:12:2); end;

close(FileD); Read_FileD; Write_Array; gotoxy(1,24);

write('max’,‘Name’,Vname[M_V(VSum)]:10, ‘Sum-’,VSum[M_V(VSum)]:12:2);

while not keypressed do until Fin

End.

31

3. ОПЕРАТОРЫ ЯЗЫКА РASCAL

Структурированная программа это программа, составленная из фиксированного множества базовых конструкций (следование, ветв- ление, цикл). Применяя эти конструкции, можно реализовать алго- ритм решения любой задачи.

Конструкция, представляющая собой последовательное выполне- ние двух или более операций, называется следованием (P1, P2 – опе- рации).

Конструкция, состоящая из развилки, двух операций и слияния, называется ветвлением (P1, P2 – операции).

Конструкция, имеющая линии управления, ведущие к предыду- щим операциям или разветвлениям, называется циклом (P1 – опера- ция).

Конструкции следование, ветвление и цикл можно представить как операции, так как они имеют единственный вход и единственный

32

выход. Произвольную последовательность операций можно предста- вить как одну операцию. Операция может быть реализована любым оператором языка (простым или составным), либо группой операто- ров. В Pascal используются следующие базовые конструкции: следо- вание, ветвление, цикл с пред- и постусловием, цикл с параметром, вариант.

3.1.Простые операторы

1.Самым простым действием над переменной является занесение

внее величины соответствующего типа (присвоение переменной конкретного значения).

Оператор присваивания представляет собой одно строго опре- деленное действие по записи вычисленного значения (выражения) в оперативную память.

Синтаксис

Имя переменной

:=

Выражение

 

 

Пример: а := а + 1; (из ячейки памяти, в которой находится значение переменной а, берется это значение, прибавляется единица и полученное значение помещается обратно в эту ячейку памяти).

Выражение, указанное справа от знака «:=», должно приводить к значению того же типа, какого и сама переменная, или типа, совмес- тимого с переменной относительно команды присваивания. Напри- мер, переменной типа Real можно присвоить значение типа Integer или Word (но наоборот этого делать нельзя). Выражение будет сна- чала вычислено, затем его результат будет положен в ячейки памяти, отведенные для хранения значения переменной.

2. Этот оператор является основой многих элементов алгоритмов. Составной оператор это последовательность произвольных операторов программы, заключенная в операторные скобки begin

. . . end.

 

 

 

 

 

Синтаксис

 

 

 

 

 

begin

 

Оператор (ы)

end

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Составной оператор служит для объединения нескольких опера- торов.

33

Пример

begin

if x<0 then writeln (’y = ’,y:8:3); end;

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

3.2. Условные операторы

Условный оператор средство для разветвления вычислитель- ного процесса на два направления.

Синтаксис

if

Логическое

then

 

else

 

выражение

1

2

 

Оператор

Оператор

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

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

34

Пример программы

Описание: программа выводит на экран код введенного числа в шестнадцатеричной системе счисления.

program IF_Test;{HEX} uses crt;

var ch:char; n:integer;

Stop:boolean; begin

Stop := false; Repeat

clrscr;

gotoxy(1,1); write ( ‘Введите число ’ ); read (n);

if (n>0) and (n<15) then begin

if n<10 then

ch := chr(ord(‘O’) + n) else

ch := chr(ord(‘A’) + n - 1)

gotoxy(1,2); write(‘ Результат - ’, ch); end

else begin

gotoxy(1,2); write(‘ Ошибка ’); Stop := true;

end;

gotoxy(1,3); write(‘Press any key…’ ); while not keypressed do

until Stop end.

Оператор выбора позволяет выбрать одно из нескольких воз- можных продолжений (ветвлений) программы.

 

 

 

Case

 

 

 

 

Выражение порядкового типа

 

 

Of

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

По результату ключевого выражения

Из вариантов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Варианты через ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Константа

 

 

:

 

 

 

 

 

Оператор

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Действие по варианту

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ELSE

 

 

 

 

Оператор

 

 

 

 

 

END

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

35

Синтаксис

сase <ключ выбора> of <список выбора> else <оператор> end;

Параметром, по которому осуществляется выбор, является выра- жение <ключ выбора> – выражение (<ключевое выражение>) любого порядкового типа, дающее результат порядкового типа, имеющего не более 65535 значений.

Ключевое

нет

 

 

 

Действия при несовпадении

выражение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ключ 1

 

 

 

Действия по варианту 1

 

 

 

 

 

 

Ключ 2

 

 

 

 

 

 

 

Действия по варианту 2

 

Ключ 3

 

 

 

 

 

 

 

 

 

 

 

 

Действия по варианту 3

 

 

 

 

 

 

 

. . .

 

 

. . .

. . .

 

Ключ n

 

 

 

 

 

 

 

Действия по варианту n

 

 

 

 

 

 

 

 

 

<Список выбора> одна или несколько конструкций вида:

<константа выбора>(ключ) <константы выбора> : <оператор>.

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

Пример программы

Описание: программа определяет, какая из клавиш клавиатуры была нажата. В состав Pascal входят модули (библиотеки), исполь- зуемые при программировании ресурсов. В модуле (библиотеке) Crt, входящей в состав Pascal есть функция readkey, позволяющая полу- чить код нажатой клавиши. Действие функции readkey: если нажата алфавитно-цифровая клавиша, функция возвращает соответствую- щий символ. Если нажата клавиша курсора, возвращается символ с кодом 0, а при повторном вызове можно получить так называемый расширенный код клавиши. Для простоты можно считать, что рас- ширенный код это номер клавиши на клавиатуре. Функция ord по- зволяет получить числовой код символа.

36

program cursor_keys; uses Crt;

var key : char; begin

writeln('Нажмите одну из клавиш клавиатуры '); key := readkey;

if ord(key) <> 0 then writeln('обычная клавиша') else

begin

key := readkey; case ord(key) of

77: writeln('стрелка вправо'); 75: writeln('стрелка влево'); 72: writeln('стрелка вверх');

80:writeln('стрелка вниз'); else writeln('не стрелка');

end;

end;

end.

Пример программы

Описание: программа-калькулятор для выполнения простых арифмитических действий.

program CASE_test;{калькулятор - calculator} uses crt;

var

znak: char; x,y,z: real; Stop: boolean; begin

Stop := false;

Repeat clrscr;

gotoxy(1,1); write(‘Введите первое число: ’); readln(x); gotoxy(1,2); write(‘Введите второе число: ’); readln(y); gotoxy(1,3); wtite(‘Введите знак операции: ’); read(znak);

case znak of ‘+’ : z := x+y; ‘-’ : z := x-y; ‘*’ : z := x*y; ‘/’ : z := x/y; else

begin

gotoxy(1,5); write(‘Ошибка ’); Stop := true;

end;

end;

37

if not Stop then begin

gotoxy(1,6); write(x:6:2, ‘ ’, znak, ’ ’, y:6:2, ‘ = ’, z:12:2);

end else begin break; end;

gotoxy(1,10); write(‘Press any key…’ ); while not keypressed do

until false; end.

3.3. Операторы цикла

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

 

 

Параметр цикла

 

 

Список

Выполнять

 

Для

 

 

 

значений

 

 

 

 

 

 

 

 

 

 

 

 

Переменная

 

 

 

 

 

 

 

 

For

 

порядкового

:=

 

Диапазон

DO

 

 

Оператор

 

 

значений

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

типа

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Синтаксис: For i:=1 to (downto) do <оператор>

Список значений может быть определен двумя способами как возрастающий диапазон значений (определяется символом TO) или как убывающий диапазон значений (DOWNTO).

 

TO

Выражение 1

Выражение 2

DOWNTO

Выражение 1 и выражение 2 определяют границы диапазона зна- чений параметра цикла. Результаты вычислений выражений 1 и 2 и параметр цикла должны быть одного порядкового типа.

38

Условием выполнения оператора цикла с параметром является существование списка значений для возрастающего списка значе- ний (TO) значение выражения 1 должно быть меньше или равно зна- чению выражения 2; для убывающего списка значений (DOWNTO) значение выражения 1 должно быть больше или равно значению вы- ражения 2.

Порядок выполнения оператора цикла.

1.Вычисляется условие выполнения оператора цикла с парамет- ром. Если условие имеет значение FALSE, то выполнение оператора цикла прекращается (выполняется следующий оператор, стоящий за оператором цикла).

2.Выбирается очередное значение параметра цикла из списка зна- чений (первый раз значение выражения 1). Если список значений исчерпан (было выбрано значение выражения 2), то выполнение опе- ратора цикла прекращается (выполняется следующий оператор, стоящий за оператором цикла).

3.Выполняется оператор, стоящий после символа DO (тело цик-

ла).

4.Осуществляется переход к пункту 2.

Пример программы

Описание: программа выводит на экран результат вычисления сумм.

Program for_test; {Вычисление сумм} uses crt;

var

i, n, s: integer; rs: real;

Stop: boolean; begin

stop:= false; repeat

clrscr;

gotoxy(1,1);write(‘Введите число ’); read(n); s:=0; rs:=0;

if (n>0) then begin

for i:=1 to n do begin

s:= s+1; rs:= rs+sqrt(i); end;

end else begin

39

for i:=-1 downto n do begin

s:=s+i; rs:=rs+sqrt(abs(i)); end;

end;

goto(1,2); write(‘Результат: s= ’,s, ‘ rs = ‘, rs); if n=0 then

begin

gotoxy(1,2); write(‘ Stop ’); Stop:= true; end;

gotoxy(1,3); write(‘ Press any key… ’); while not keypressed do

until Stop end.

Оператор цикла с предусловием полностью соответствует структуре цикла с предусловием: «пока выполняется условие повто- рения повторять серию команд».

вход

 

 

 

 

 

 

Условие

 

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

повторения

 

 

 

выход

 

 

 

 

 

 

 

 

цикла

 

 

 

 

 

 

 

 

 

 

 

 

 

 

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Тело цикла

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Серия

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

WHILE

 

 

Логическое

 

 

 

 

DO

 

Оператор

 

 

 

 

 

 

выражение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Синтаксис: While <условие> do <оператор>

Название этого оператора определяется тем, что условие распо- ложено в начале структуры. С точки зрения синтаксиса тело опера- тора цикла пока может состоять только из одного оператора (естест- венно, любого, в том числе и составного).

Порядок выполнение оператора цикла с предусловием.

1. Вычисляется логическое выражение, являющееся условием по- вторения цикла.

40

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]