Стандартные функции и операторы языка Паскаль
Cтандартные функции. Стандартные функции - это заранее разработанные процедуры и функции, объединенные в стандартные модули.Ниже рассмотрены наиболее употребительные стандартные функции, состав и назначение остальных стандартных функции излагается в описании соответствующего стандартного модуля. Арифметические функции можно использовать только с величинами целого и вещественного типов: 1) abs - абсолютная величина 2)sqr -возведение в квадрат 3)sin -синус 4)cos - косинус 5)arctan -арктангенс 6)ln -натуральный логарифм 7)exp -экспонента 8)sqrt -корень квадратный 9)pi -пи=3,
для величин типа REAL определены следующие функции: 10)trunc - отбрасывание дробной части (trunc(2.78)=2); 11) round - округление (round (2.78)=3). Значение функции 1)-9) имеют тип REAL, функций 10)и 11-тип INТEGER. Заметим,что ее значение также имеет тип INТEGER.
Функции для величин порядкового типа. Для величин порядкового типа применимы функции: pred - предыдущее значение (пример :pred(6)=5; pred('d')='c'); succ - следующее значение (пример : succ(1)=2; succ(-3)=-2); 3)ord - возвращает порядковый номер значения (например, ord('+')=43). 4)odd - проверка аргумента (типа longint) на нечетность. результат равен true,если аргумент нечетный, false -если четный. При применении функции pred к первому элементу последовательности, а функции succ - к последнему элементу возникает ошибка.
Операторы языка Паскаль Оператор языка Паскаль представляет собой некоторый неделимый элемент программы, который позволяет выполнения следующего действия. b:=a+c; Отличительной чертой оператора по отношению к другим элементам программы является то, что под ним всегда подразумевается какое-либо действие. Все операторы можно разделить на: простые; структурированные.
I. Простые операторы I. К простым операторам относятся те, которые не содержат в себе другие операторы: оператор присваивания; оператор безусловного перехода; оператор обращения к функции; пустой оператор.
Общие схемы: 1) := ; идентифи выражение катар переменной или функции Вычисляется выражение в правой части присваивания, после этого переменная указанная в правой части получает вычисленное значение. При этом тип выражения должен быть совместим по присваиванию с типом переменных. Исключение: переменная- вещественный тип, выражение – целый тип.
2) оператор перехода: Этот оператор вызывает передачу управления оператору, которому предшествует метка. Goto Существует 4 безусловные функции: Break - позволяет досрочно закончить цикл Continue - позволяет начать новый этап цикла, даже если предыдущий не завершен. Exit - позволяет завершить работу текущего программного блока. Halt(n) - позволяет завершить работу программы с кодом завершения n.
3) (параметры); идентификатар переменной или функции. Summa(x,y,z); 4)Пустой оператор: ;
II Структурированные операторы: Это операторы, состоящие из других операторов.
1) составной оператор: оператор, который начинается с begin и заканчивается end; begin on 1 ; оп 2; End; Задает последовательное выполнение операторов входящих в него в порядке один за другим.
2)Условный оператор: Схема полного условного оператора if then else Выполнение сложного оператора начинается с вычисления значения логического выражения, записанного в условии. Простой условный оператор записывается из равенств и неравенств, сложный условный оператор записывается с помощью: if (x>y) and (x>z) Если условие истинно то выполняется оператор 1, в противном случае оператор 2.
Если в качестве оператора 1 и 2 используется серия операторов, то они заключаются в скобки. if then begin on 1 ; оп 2; end else begin on 1 ; оп 2; end; (перед else ; не ставится)
Пример Вывести на экран большее из двух чисел: Program primer1; var x,y: integer; begin writeln (введите 2 числа); readln (x,y); if x>y then writeln (x) else writeln (y); readln; end.
Вложенный оператор условия: Существует вложенный оператор условия. В этом случае после служебного слова then и else записывается новый условный оператор. Пример: Если a b и a c, то все числа заменить на их квадраты. Если a>b и a>c, то заменить наибольшим из них. В противном случае сменить знак каждого числа.
Оператор варианта. Этот оператор дает возможность выполнять один из нескольких операторов, в зависимости от значения выражения, он является обобщением условия. Схема: Case : ; ………………………… : ; [else ;] end;
Выполнения оператора варианта начинаются с вычисления выражения, которое должно принимать значения принадлежащие порядковому типу. В случае если результат вычисления равен одной из перечисляемых констант, то выполняется соответствующий оператор, стоящий после константы. Затем управление передается за пределы оператора выбора, если значение выражения не совпадает ни с одной из констант, то выполняется оператор стоящий после else, если эта ветвь присутствует, либо управление передается на end и выполнение программы продолжается.
Пример: Составим программу определяющую, какое число из диапазона от 2 до 5 введено, четное или нечетное, для чисел выходящих за пределы диапазона выводить соответствующее сообщение. Program pr2; var n: shortint; begin writeln(); readln(n); case n of 3,5: writeln(нечетное); 2,4: writeln(четное); else writeln( число за пределами диапазона); end; end. Кроме одиночных констант в альтернативах оператора могут быть заданы списки, т.е. диапазоны значений : ;
Правило для составления оператора варианта: 1) значения выражения переключателя, записанного после case должны принадлежать дискретному типу, для целого типа они должны лежать в диапазоне ; 2) все константы предшествующие операторам альтернатив должны иметь тип совместимый с типом выражения; 3) все константы в альтернативах должны быть уникальны в пределах оператора варианта, диапазоны не должны пересекаться и не должны содержать констант указанных в данной или другой альтернативах.
Операторы цикла.
Цикл с параметром или со счетчиком. Схема: 1) For : = A to B do ; 2)For : = A downto B do ;
A- начальное значение переменной, B- конечное значение переменной. Эти переменные могут быть представлены константами или арифметическими значениями. Оператор цикла с параметром применяется тогда, когда известно число повторений одного итого же действия.
Принцип работы сначала вычисляется значение выражения А и В, если А В, то параметр последовательно принимает значения равные А, А+1, А+2,…,В-1, В. И для каждого из этих значений выполняется тело цикла. Если А В, то тело цикла не будет выполнено ни разу. второй оператор выполняется аналогичным образом, но значение параметра выполняется с шагом -1. А, А-1, А-2,…, В. Если тело цикла состоит из нескольких операторов, то они заключаются в операторные скобки begin … end;
Пример: Найти сумму натуральных чисел от 1 до 50 и вывести на экран результат. Program pr3; var i, s: integer; begin s:=0; For i:= 1 to 50 do s:= s+i; writeln ( =,s); readln; end. В Паскале не проводится автоматическая начальная установка переменных. Поэтому необходимо s:=0;
В этой конструкции обязательно указываются следующие параметры: имя переменной, в которой храниться число повторений цикла; некоторые начальные значения для переменной цикла, которые она получает при первом выполнении цикла; некоторые конечные значения для переменной цикла, достигнув которого повторения цикла прекращаются.
Цикл с предусловием. Схема: While do ; Цикл с предусловием используется для программирования процессов, в которых число повторений оператора цикла не известно, а задается некоторое условие его окончания.
Принцип работы Выполнение цикла с предусловием начинается с проверки условия записанного после служебного слова while, если оно соблюдается, то выполняется тело цикла, а затем вновь проверяется условие, как только на очередном шаге окажется, что условие не соблюдается (ложно), то выполнение цикла прекратится. Если тело цикла состоит из нескольких операторов, то они объединяются операторными скобками begin, end. В теле цикла обязательно должен быть оператор, влияющий на соблюдение условия, в противном случае произойдет зацикливание.
Например (часть программы), x:=1; F:=1; While x<=n do begin F:=F*x; x:= x+1; end; Что выполняет этот оператор?
Пример: Дано натуральное число посчитать количество цифр данного числа. Алгоритм решения: Подсчет количества цифр начнем с последней цифры числа, увеличим счетчик цифр на 1, число уменьшим в 10 раз, тем самым мы избавляемся от последней цифры числа. Далее с полученным числом проделываем ту же последовательность действий.
Program pr4; var m,n: longint; k: integer; begin writeln(введите число); readln(n); m:=n; k:=0; while m<>0 do begin k:=k+1; m:=m div 10; { уменьшаем на последнюю цифру} end; writeln(в числе цифр-,k); readln; end.
Оператор цикла с постусловием. Схема: Repeat ; …………….. ; until ; Этот оператор так же используется для программной реализации циклических процессов с неизвестным числом повторений. Это оператор аналогичен оператору цикла с предусловием, но отличен тем, что проверка условия производится после очередного выполнения тела цикла. Это обеспечивает его выполнение хотя бы один раз.
Принцип работы: Последовательность оператора входящего в тело цикла выполняется 1 раз, после чего проверяется соблюдение условия, записанного следом за служебным словом until, если условие соблюдается(истинно), то цикл завершается, в противном случае тело цикла повторяется еще один раз, после чего снова проверяется условие.
Данный оператор предполагает в теле цикла наличие нескольких операторов, поэтому служебные слова begin, end не используются. Пример: Repeat k:= i mod j; i:=j; until j=0;
Правило: При описании цикла с постусловием необходимо следующее: перед первым выполнением цикла условие его окончания (или продолжения) должно быть определено; тело цикла должно содержать хотя бы один оператор, влияющий на условие окончания (или продолжения) иначе цикл будет бесконечным; условие окончания цикла должно быть в результате выполнимо. Любой оператор цикла с постусловием можно записать с помощью оператора цикла с предусловием или с помощью условного оператора.
Пример: Написать программу нахождения наибольшего общего делителя двух неотрицательных чисел. Алгоритм решения: Используем алгоритм Евклида, он основан на следующих свойствах: Пусть х и у одновременно не равны 0, целые неотрицательные числа, пусть х у, тогда если у=0 НОД(х,у) = х если у 0, то для чисел х, у, r (остаток от деления х у) выполняется равенство НОД(х,у)=НОД(у,r)
ху Результат mod 18 =1218x > yНОД(48,18)=НОД(12,18) 18 mod 12=612X <yНОД(12,18)=НОД(12,6) 12 mod 6 =06X >yНОД(12,6)=НОД(0,6) 06X=0НОД(0,6)=6
Program pr5; var x,y:integer; begin writeln(введите x,y); readln(x,y); repeat if x>y then x: =x mod y else y: y mod x; until (x=0) or (y=0); readln; end.
Вложенные циклы При составлении программ могут использоваться вложенные циклы, т.е. внешний и внутренний цикл. При этом внутренний и внешний циклы могут быть любыми из трех ранее рассмотренных, Только внутренний цикл должен полностью укладываться в циклическую часть внешнего цикла.
Пример: Даны натуральные числа n и k составить программу вычисления выражения 1k+2k+…+nk Алгоритм решения: Для вычисления указанной суммы используется цикл с параметром, в котором, во-первых, вычислялось бы очередное значение y=ik, во- вторых, осуществлялось накопление суммы прибавлением полученного слагаемого к сумме всех предшествующих. s:=s+y
Program pr6; var n,k,y,i,s,m:integer; begin writeln(введите n и k); s:=0; for i:=1 to n do begin y:=1; for m:=1 to k do y:=y*i; {находим степень} s:=s+y; end; writeln(s); readln; end.
Форматный вывод данных: mEp, где m-мантисса, p- порядок. Изменить стандартную форму вывода данных вещественного типа можно используя, формат. Writeln(a:n:k), где а - выводимые данные вещественного типа; n- общее поле выводимого числа, включая знак числа, целую часть, точку и дробную часть; k- поле дробной записи. Т.е. при записи этого формата число выводится с фиксированной точкой. Writeln(a:5:2); Если при выводе вещественного типа отсутствует формат, то число выводиться с плавающей точкой, с использованием мантиссы и порядка.