- •Структура программы на алгоритмическом языке Паскаль: Раздел описаний, раздел операторов, понятие «Блок».
- •Символы языка: цифры, буквы, знаки арифметических операций, знаки операций отношения, разделители, скобки, числа, имена.
- •Раздел описаний и последовательность описаний в Паскаль- программе: описание меток, констант, типов, переменных, процедур, функций. Примеры.
- •Понятие блока в Паскаль- программе. Локальные и глобальные описания имен. Области действия описаний. Примеры.
- •Понятие данных в Паскаль- программе. Типы данных: логические, символьные, вещественные, перечисленные типы, тип диапазон, процедурный тип. Их описание. Примеры.
- •Описание массивов. Примеры.
- •Ввод/вывод переменных: скалярного типа, одно- и двумерных массивов. Формат вывода результатов целого и вещественного типов. Примеры.
- •Операторы алгоритмического языка Паскаль: присваивания, перехода, условные, варианта, составной. Примеры.
Операторы алгоритмического языка Паскаль: присваивания, перехода, условные, варианта, составной. Примеры.
Операторы цикла: цикл с параметром, требования к типу параметра цикла, начальному и предельному значениям параметра цикла, вложенные циклы с параметром, циклы с предусловием и постусловием, условия их выполнения. Примеры.
Цикл с параметром:
Служит для компактного задания рода вычислительных процессов. Чаще всего используется следующий вид: For V:= E1 to E2 do S, где for (для), to (увеличиваясь к) и do (выполнять, делать) – служебные слова, V – переменная порядкового типа, называемая параметром цикла, Е1 и Е2 – выражения того же типа, что и параметр цикла, S – оператор, который выполняется многократно в цикле, называемый телом цикла.
После do должен стоять один оператор, если необходимо выполнить несколько действий, то они должны быть объединены в один составной оператор путем заключения в операторные скобки.
Этот оператор предусматривает присваивание параметру цикла V последовательных значений от начального значения, равного значению выражения Е1, до конечного значения, равного значению выражения Е2, т.е. при каждом повторении выполняется оператор присваивания V:= succ( V), и выполнение оператора S при каждом значении параметра цикла V. При этом значения выражений Е1 и Е2 вычисляются один раз, при входе в оператор цикла, а значение параметра цикла V не должно изменяться в результате выполнения оператора S. Если заданное конечное значение меньше начального значения (что допустимо), то оператор S не выполняется ни разу.
Считается, что при нормальном завершении выполнения оператора цикла значение параметра цикла не определено.
С использованием этого оператора алгоритм вычисления суммы первых n членов гармонического ряда может быть задан следующим образом: Readln (n);
Y:= 0;
For i:= 1 to n do y:= y+1/i; В некоторых случаях бывает удобно, чтобы параметр цикла принимал последовательные, но не возрастающие, а убывающие значения. Для таких случаев в Паскале предусмотрен оператор цикла с параметром: For V:= E1 downto E2 do S, где downto (уменьшаясь к) – служебное слово, а все остальные слова и выражения имеют прежний смысл.
Изменение параметра цикла от большего значения к меньшему происходит при выполнении присваивания V:=pred( V). Заметим, что начальное значение может быть меньше конечного значения. В этом случае оператор S не выполнится ни разу. Значение параметра цикла по завершении выполнения такого цикла так же считается неопределенным.
Для обоих вариантов записи цикла с параметром справедливо: если начальное и конечное значения равны, то тело цикла (оператор S) выполнится один раз.
Параметр цикла может и не использоваться в теле цикла, так что основное его назначение – это управление числом повторений цикла. Например, значение y= x n, где n>=0 – целое, можно вычислить по следующему алгоритму: предварительно положить y=1, а затем n раз домножить это значение на x: Readln(n);
Readln(x);
Y:= 1;
For i:= 1 to n do y:= y*x; Параметр цикла i служит лишь для того, чтобы тело цикла (оператор y:= y* x) выполнилось нужное число раз. Требования:
Стоящий после do выполняется, если выражение логического типа равняется true.
Если значение выражение логического типа это false, то оператор, стоящий после do, пропускается и выполняется оператор, стоящий за «;».
Оператор, стоящий после do, может не выполняться ни разу.
Если необходимо выполнение более 1 оператора, то создается составной оператор.
Среди операторов, выполняющихся в цикле, должен быть хотя бы 1 оператор присваивания, который изменяет значение переменной, входящей в выражение логического типа.
Пример:
Определить индекс первого отрицательного элемента в массиве.
Type Ar = array[1..100] of real;
Var i,k,n : byte;
X : Ar;
Begin
Ввод n, X
k:=0;
For i:=1 to n do
If x[i]<0 then
Begin
k:=i; i:=n+1
End;
Writeln('k=',k);
Вложенные циклы: Оператор, который выполняется в цикле, сам может быть циклом. Это относится ко всем видам циклов. В результате мы получаем вложенные циклы. Механизм работы вложенных циклов удобнее всего рассмотреть на примере вложенных циклов с параметром. Пусть нам нужно описать работу электронных часов, начиная с момента времени 0 ч, 0 мин, 0 сек. Значение минут станет равным 1 только после того, как секунды «пробегут» все последовательные значения от 0 до 59. Часы изменят свое значение на 1 только после того, как минуты «пробегут» все последовательные значения от 0 до 59. Таким образом, вывод всех значений времени от начала суток до конца суток может быть представлен следующим фрагментом программы:
For h:=0 to 23 do
For m:=0 to 59 do
For s:=0 to 59 do
Writeln(h,’:’,m,’:’,s);
Д
ля
удобства реализации циклических структур
введены операторы break и continue, применяемые
внутри циклов. Они расширяют возможности
использования циклов и улучшают структуру
программы. В процессе выполнения тела
цикла до полного завершения цикла могут
возникнуть дополнительные условия,
требующие завершения цикла. В этом
случае цикл может быть прекращен
оператором break. В ходе выполнения цикла
может возникнуть условие, при котором
необходимо пропустить все или некоторые
действия, предусмотренные в цикле, не
прекращая работу цикла совсем. Для этого
используется оператор continue, который
передает управление в ту точку программы,
где проверяется условие продолжения
или прекращения цикла.
Циклы
с предусловием и постусловием:
Цикл
с предусловием:
Цикл
с предусловием выполняется до тех пор,
пока условие выполнения не станет
ложным, и продолжается, если условие
истинно.
While <условие выполнения>
Do <оператор>;
Пример:
Program test1;
Var z:Integer;
Begin
z:=10;
Whilez>0 Do
z:=x-3;
WriteLn(z);
End.
Цикл с постусловием:
Условие выполнения проверяется после шага цикла. Цикл с постусловием выполняется до тех пор, пока условие не станет истинно, если условие ложно, цикл продолжается.
Repeat
<оператор>;
<оператор>;
…
<оператор>;
Until <условие завершения>;
Пример:
Program test2;
Var b:Real;
Begin
b:=100;
Repeat b:=b/2;
Until b<10;
Writeln(b:0:2);
End.
Описание процедур и функций: формальные параметры процедур и функций, виды и типы формальных параметров, свойства параметров значений и параметров переменных, описание формальных параметров массивов, параметров процедур и параметров функций, локальные и глобальные имена в процедурах, их описание и область существования. Примеры.
Инициирование процедур и функций: фактические параметры операторов процедур и указателей функций, их свойства, способы задания фактических параметров: числа, переменные, выражения, процедуры и функции, переменные процедурного типа.
Подпрограмма - автономная часть программы, выполняющая определенный алгоритм и допускающая обращение к ней из различных частей общей программы. Использование подпрограмм позволяет реализовать один из самых современных методов программирования - структурное программирование. В языке Паскаль существует два вида подпрограмм: процедура (PROCEDURE ) и функция ( FUNCTION ). Процедуры и функции объявляются в разделе описания за разделом переменных. Параметры, записываемые в обращении к подпрограммам, называются фактическими; параметры, указанные в описании подпрограмм - формальными. Фактические параметры должны соответствовать формальным по количеству, порядку следования и типу. Параметры, объявленные в основной (главной) программе, действуют в любой подпрограмме и называются глобальными. Параметры, объявленные в подпрограмме, действуют только в этой подпрограмме и называются локальными. Процедуры: Процедуры используются в случаях, когда в подпрограмме необходимо получить несколько результатов. В языке Паскаль существует два вида процедур: процедуры с параметрами и без параметров. Обращение к процедуре осуществляется по имени процедуры, за которым могут быть указаны фактические параметры. Все формальные параметры являются локальными для данной процедуры и глобальными для каждой процедуры в ней. При вызове процедуры устанавливается взаимно однозначное соответствие между фактическими и формальными параметрами, затем управление передается процедуре. После выполнения процедуры управление передается следующему, после вызова процедуры, оператору вызывающей программы. Пример 1. Процедура без параметров, которая печатает строку из 60 звездочек. procedure pr; var i : integer ; begin for i :=1 to 60 do write (‘ * '); writeln; end. Пример 2. Процедура c параметрами. Даны 3 различных массива целых чисел (размер каждого не превышает 15). В каждом массиве найти сумму элементов и среднеарифметическое значение. program proc; var i , n , sum: integer; sr : real; procedure work (r:integer; var s:integer; var s1:real); {процедура work} var mas : array [1..15] of integer ; { объявление массива мas} j : integer; begin s:=0; for j:=1 to r do begin {ввод элементов массива mas} write(' Vvedite element - ', j,': ') ; read (mas[j]); s:=s+mas [j]; end; s1:=s/r; end; begin { главная программа} for i:=1 to 3 do begin write ('Vvedite razmer ',i, ' masiva: '); readln(n); work (n, sum, sr); {вызов процедуры work} writeln ('Summa elementov = ',sum); writeln ('Srednearifmeticheskoe = ',sr:4:1); end; readln; end.
Результат работы программы: В программе трижды вызывается процедура work, в которой формальные переменные r, s, s1 заменяются фактическими n, sum, sr. Процедура выполняет ввод элементов массива, вычисляет сумму и среднее значение. Переменные s и s1 возвращаются в главную программу, поэтому перед их описанием ставится служебное слово var. Локальные параметры mas, j действуют только в процедуре. Глобальные - i, n, sum, sr доступны во всей программе. Функции:
Набор встроенных функций достаточно широк (ABS, SQR, TRUNC и т.д.). Если в программу включается новая, нестандартная функция, то ее необходимо описать в тексте программы, после чего можно обращаться к ней из программы. Обращение к функции осуществляется в правой части оператора присваивания, с указанием имени функции и фактических параметров. Функция может иметь собственные локальные константы, типы, переменные, процедуры и функции. Описание функций в Паскале аналогично описанию процедур. Отличительные особенности функций: - результат выполнения - одно значение, которое присваивается имени функции и передается в основную программу; - имя функции может входить в выражение как операнд.
Пример 3. Написать подпрограмму-функцию степени аx, где a, х – любые числа. Воспользуемся формулой: аx = ex ln a program p2; var f, b, s, t, c, d : real; { глобальные параметры} function stp (a, x : real) : real; var y : real; { локальные параметры} begin y := exp (x * ln ( a)) ; stp:= y;{присвоение имени функции результата вычислений подпр-мы} end; { описание функции закончено } begin {начало основной программы } d:= stp (2.4, 5); {вычисление степеней разных чисел и переменных } writein (d, stp (5,3.5)); read (f, b, s, t); c := stp (f, s)+stp (b, t); writeln (c); end.
