Перейти на главную страницу
В качестве условия указывается какое-либо логическое выражение. Если условие оказывается истинным, то выполняется оператор1, в противном случае выполняется оператор2.
if условие then оператор
Если условие оказывается истинным, то выполняется оператор, в противном случае происходит переход к следующему оператору программы.
В случае конструкции вида
Операторы отделяются один от другого символом ";".
Например:
Так, как служебное слово end является закрывающей операторной скобкой, оно одновременно указывает и конец предыдущего оператора, поэтому ставить перед ним символ ";" необязательно. Перед end может ставиться ";". В этом случае считается, что последним оператором перед end является пустой оператор, не выполняющий никаких действий. Пустой оператор не содержит никаких действий, просто в программу добавляется лишняя точка с запятой.
Иногда требуется осуществить выбор более чем из двух условий. В этом случае применяется оператор множественного выбора, позволяющий выбрать из списка одно из условий.
Переключатель представляет собой выражение порядкового типа (целого, символьного, перечислимого или интервального), а списки выбора содержат константы совместимого типа. Как и в операторе if, ветвь else может отсутствовать.
Оператор case (в случае) работает следующим образом. В списке выбора проверяется на совпадение текущее значение переключателя и меток списка, и если найдено совпадение, то выполняется оператор, соответствующий данной строке списка. Если же значение переключателя не найдено ни в одной строке, то выполняется оператор else. В случае, если ветвь else отсутствует, оператор case не выполняет никаких действий, а управление передается внешнему оператору, следующему за конструкцией CASE.
Список выбора состоит либо из одной константы, либо из диапазона значений вида a..b (константа a должна быть меньше константы b). Можно также перечислить несколько констант или диапазонов через запятую:
В списках выбора диапазоны меток не должны пересекаться. Например, в результате выполнения следующего фрагмента:
программа завершится сообщением об ошибке:
" Ошибка: Пересечение диапазонов меток в операторе case".
Раздел 3.3.5. Оператор безусловного перехода goto.
Оператор безусловного перехода goto используется для изменения естествен-ной последовательности выполнения программы, и имеет следующую форму:
Он передаёт выполнение программы к оператору, помеченному меткой.
Метка представляет собой идентификатор. Для совместимости со стандартным Паскалем в качестве метки можно использовать целое число без знака. Чтобы пометить оператор меткой, необходимо перед оператором указать метку с последующим двоеточием. Формат описания метки:
label1: оператор
Метки должны быть описаны в разделе меток с использованием служебного слова label:
label 1,2,3;
Например, в результате выполнения программы:
будет выведено 654321.
Метка должна помечать оператор в том же блоке, в котором описана. Нельзя помечать одной меткой несколько операторов. Запрещается из внешней стороны цикла переходить на метку внутри цикла.
Оператор безусловного перехода (goto) надо использовать только в крайнем случае. По количеству применений этого оператора судят о квалификации программиста, хотя всё же, иногда его применение бывает оправдано. Например, при использовании меню в программе или при проверке данных при вводе их с клавиатуры.
В большинстве программ требуется многократное повторение каких-то опера-ций. Если известно количество этих повторений, то можно написать линейный алгоритм, обрабатывающий последовательно все эти операции. Но при этом программа будет неоправданно большой. В случае же, когда количество этих повторений неизвестно, то линейный алгоритм применить невозможно.
Оператор цикла for (для) имеет одну из двух форм:
for переменная:=начальное значение to конечное значение do оператор или
for переменная:=начальное значение downto конечное значение do оператор
для обеих форм содержимое строк можно интерпретировать как:
для <параметр цикла>:=<нач.знач> до <конеч.знач> выполнять <оператор>
Содержимое текста от слова for до слова do включительно называется заголовком цикла, а оператор после do - телом цикла. Переменная после слова for называется параметром цикла. Параметр цикла, его начальное и конечное значения должны принадлежать к одному и тому же, порядковому (целому, символьному, перечислимому или интервальному) типу данных, т.е. параметр выступает в качестве счётчика цикла.
Если для цикла for ... to начальное значение переменной цикла больше конечного значения или для цикла for ... downto начальное значение переменной цикла меньше конечного значения, то тело цикла не выполнится ни разу.
Изменение переменной-параметра цикла внутри цикла является логической ошибкой. Например, следующий фрагмент со вложенным оператором for является ошибочным:
for i:=1 to 10 do
for i:=1 to 5 do
write(i);
Раздел 3.4.2. Цикл с неизвестным количеством повторений WHILE.
В цикле с неизвестным количеством повторений вместо счётчика цикла используется условие выхода из цикла.
Если условие всегда оказывается истинным, то может произойти зацикливание:
Для выхода из зациклившейся программы, можно использовать комбинацию клавиш Ctrl-F2 или кнопку Stop.
Оператор цикла repeat имеет следующую форму:
В отличие от цикла while, условие вычисляется после очередной итерации цикла, и если оно истинно, то происходит выход из цикла. Таким образом, операторы, образующие тело цикла оператора repeat, выполняются по крайней мере один раз.
Если условие всегда оказывается ложным, то может произойти зацикливание:
repeat
write(1);
until 2=1;
Для выхода из зациклившейся программы, можно использовать комбинацию клавиш Ctrl-F2 или кнопку Stop.
Циклы могут быть простыми или вложенными (цикл в цикле).
Например:
Program VCicl;
begin
writeln;
for j:=10 to 13 do
write('i=',i,' j=',j);
end;
readln;
end.
begin for j:=10 to 13 do
write(' i= ', i, ' , j = ', j);
writeln;
end;
Этот цикл является внешним, по отношению к нему внутренним будет цикл:
Разберём работу программы, с вложенным циклом.
Заметим, что оператор write отличается от оператора writeln тем, что он не начинает вывод с новой строки, а продолжает писать в той же строке, т.е. после второго выполнения внутреннего цикла на экране появится
i= 1, j=10 i= 1, j=11.
Программа продолжит выполнение внутреннего цикла, и, когда он закончится (выполнится для j = 10,11,12,13), на экране будет строка
i = 1 j = 10 i =l j = 11 i = 1 j = 12 i = 1 j = 13.
Внутренний цикл закончится, однако тело внешнего цикла еще не закончи-лось, поэтому выполняется оператор writeln, который переводит курсор на новую строку. После этого тело внешнего цикла закончится, но сам цикл отработал только для i = 1. Поэтому внешний цикл продолжит работу, присвоив i: =2 и вновь начав выполнение своего тела. Встретив внутренний цикл j, на экран с новой строки выведется: i=2, j=10, затем к этой строке добавится i=2, j=11 и т.д., пока не закончится внутренний цикл.
Таким образом, внешний цикл, изменяя индекс i от 1 до 5, заставит каждый раз выполняться полностью внутренний цикл, и в результате работы программы на экране появится:
i=l, j=10 i=1, j=11 i=1, j=12 i=1, j=13
i=2, j=10 i=1, j=11 i=1, j=12 i=1, j=13
i=3, j=10 i=1, j=11 i=1, j=12 i=1, j=13
i=4, j=10 i=1, j=11 i=1, j=12 i=1, j=13
i=5, j=10 i=1, j=11 i=1, j=12 i=1, j=13
for i:=l to 9 do
for j:=l to 9 do
for k:=l to 9 do
writeln (i, j, k);
дает столбик цифр:
111 112 113 114 … 119
– – – – –
121 122 123 124 … 129
– – – – –
211 212 213 214 … 219
– – – – –
991 992 993 994 … 999
что составляет 1000 строчек.
Практически во всех больших программах, встречаются группы одинаковых команд, которые выполняются много раз. Для того, чтобы упростить вид прог-раммы, наборам таких команд присваивают имена и когда требуется, выполнить эти группы команд, указывают только их имена (вызывают по имени). Такие группы команд называют функциями или процедурами (подпрограммами).
Все процедуры и функции делятся на две группы:
Процедуры и функции, создаваемые разработчиком программы, должны соответствовать следующему виду.
Описание функции:
Операторы подпрограммы, окаймленные операторными скобками begin … end, называются телом этой подпрограммы.
В рекурсивных алгоритмах необходимо предусматривать условие завершения процесса, т.е. когда вызова больше не происходит.
var n:integer;
function f(x:integer):real;//определяем функцию f обращающуюся,
begin //к предыдущему значению самой себя,
if x = 1 then f:= 1 else f:= x * f(x-1);//для вычисления своего значения
end;
writeln('Введите число N (N=1..170)'); //при N>170 возникает
readln(n); // ошибка « Вещественное переполнение »
writeln('Факториал N!=',f(n));
end.
Раздел 3.5.1. Стандартные процедуры и функции.
При работе с различными типами данных в ЯП Паскаль имеются стандартные процедуры и функции, представленные ниже.
Имя и параметры |
Процедура или функция |
Типы параметров |
Тип возвращаемого значения |
Действие |
Read(a,b,...) |
процедура |
a,b - переменные числового или типа string |
|
вводит значения с клавиатуры в переменные a, b ... |
Write(a,b,..) |
процедура |
a,b,c - выражения числового типа или string |
|
выводит значения a, b ... в окно вывода |
Readln(a,b,.) |
процедура |
a,b,c - переменные простого типа или типа string |
|
вводит значения с клавиатуры в переменные a, b ..., и переводит курсор на следующую строку. |
Writeln(a,b,.) |
процедура |
a,b,c - выражения простого типа, типа string или указатели |
|
выводит значения a, b ... в окно вывода и осуществляет переход на следующую строку. Если параметры процедуры не указаны, то выполняет только переход на следующую строку. |
Abs(x) |
функция |
x - integer, real |
совпадает с типом параметра |
возвращает абсолютное значение (модуль) x |
Sqr(x) |
функция |
x - integer, real |
совпадает с типом параметра |
возвращает квадрат x |
Sqrt(x) |
функция |
x - real, |
совпадает с типом параметра |
возвращает квадратный корень из x |
Sin(x) |
функция |
x - real, |
совпадает с типом параметра |
возвращает синус x |
Cos(x) |
функция |
x - real, |
совпадает с типом параметра |
возвращает косинус x |
Arctan(x) |
функция |
x - real, |
совпадает с типом параметра |
возвращает арктангенс x |
Power(x,y) |
функция |
x, y - real |
real |
возвращает x в степени y |
Round(x) |
функция |
x - real |
integer |
возвращает результат округления x до ближайшего целого |
Int(x) |
функция |
x - real |
real |
возвращает целую часть х |
Frac(x) |
функция |
x - real |
real |
возвращает дробную часть х |
Ord(x) |
функция |
x - порядкового типа |
integer |
возвращает номер значения порядкового типа (символа) |
Chr(x) |
функция |
x - integer |
char |
возвращает символ с кодом х |
Odd(x) |
функция |
x - integer |
boolean |
возвращает True, если х - нечетное, и False в противном случае |
Inc(x) |
процедура |
x - порядкового типа |
|
Увеличивает x на 1 |
Dec(x) |
процедура |
x - порядкового типа |
|
Уменьшает x на 1 |
Inc(x,n) |
процедура |
x - порядкового типа, n - целого типа |
|
Увеличивает x на n |
Dec(x,n) |
процедура |
x - порядкового типа, n - целого типа |
|
Уменьшает x на n |
Pred(x) |
функция |
x - порядкового типа |
совпадает с типом параметра |
возвращает предыдущее значение порядкового типа |
Succ(x) |
функция |
x - порядкового типа |
совпадает с типом параметра |
возвращает следующее значение порядкового типа |
Random(x) |
функция |
x - integer |
integer |
возвращает случайное целое в диапазоне от 0 до x-1 |
Random |
функция |
|
real |
возвращает случайное вещественное в диапазоне [0..1) |
Имя и параметры |
Процедура или функция |
Типы параметров |
Тип возвра-щаемого значения |
Действие |
Length(s) |
функция |
s - string |
integer |
возвращает длину строки s |
Copy(s,index, count) |
функция |
s - string, index и count - integer |
string |
возвращает подстроку строки s длины count, начиная с позиции index |
Delete(s,in-dex,count) |
процед. |
s - string, index и count - integer |
|
удаляет в строке s count символов начиная с позиции index |
Insert(pods, s,index) |
процед. |
s, pods - string, index - integer |
|
вставляет подстроку pods в строку s с позиции index |
|
|
|
|
|
SetLength(s,n) |
процед. |
s - string, n - integer |
|
устанавливает длину строки s равной n |
Str(x,s) Str(x:n,s) Str(x:n:m,s) |
процед. |
s - string, x - integer, real и n, m - integer |
|
преобразует x к строковому представлению (во втором и третьем случаях согласно формату вывода, устанавливаемому n и m) и записывает результат в строку s |
Val(s,v,code) |
процед. |
s - string, v - integer, real, и code - integer |
|
преобразует строку s к числовому представлению и записывает результат в переменную v. Если преобразование возможно, то в переменной code возвращается 0, если невозможно, то в code возвращается ненулевое значение |
Concat(s1,..,sn) |
функция |
s1,..., sn - string |
string |
возвращает строку, являющуюся результатом слияния строк s1,..., sn. Результат тот же, что у выражения s1+s2+...+sn |
IntToStr(i) |
функция |
i - integer |
string |
преобразует целое число к строке |
StrToInt(s) |
функция |
s - string |
integer |
преобразует строку в целое число . Если преобразование невозможно, то возникает ошибка времени выполнения |
Методическое пособие рассчитано на школьников 9-11 классов, а также может быть полезно учащимся других учебных заведений среднего образования, изучающих основы программирования
25 09 2014
6 стр.
Касторнов А. Ф., Касторнова В. А. Практикум по программированию на языке паскаль. Учебно-методическое пособие. – М.: Иио рао, 2011. – 84 с
25 09 2014
16 стр.
Прописные и строчные буквы Pascal'eм не различаются. Знаки «возведение в степень» и двойная кавычка в языке отсутствуют
25 09 2014
1 стр.
В данной брошюре собраны материалы для подготовки и проведения по программированию на Паскале, когда идет освоение языка и выработка навыков составления программ
02 10 2014
15 стр.
Блеза Паскаля. На основе языка Паскаль в 1985 г фирма Borland выпустила версию Turbo Pascal версии с этого времени язык Паскаль используется во всем мире в учебных заведениях в кач
02 10 2014
4 стр.
Блеза Паскаля. Первоначально этот язык был создан для обучения программированию. Однако благодаря заложенным в нем большим возможностям структурного программирования он стал широко
25 09 2014
6 стр.
В языке программирования Turbo Pascal все данные, используемые программой должны принадлежать к какому-либо типу данных. Некоторые из них
13 10 2014
1 стр.
06 10 2014
1 стр.