РефератыИнформатикаАлАлгоритмический язык Паскаль

Алгоритмический язык Паскаль

Программа на Р записывается в виде последовательности символов:


· заглавные и прописные латинские буквы;


· арабские цифры;


· знаки препинания ( : ; , . )
;


· знаки операций.


Арифметические операции правила их записи.


Знаки операций: *, /, -, +, div, mod


(adivb) частное от деления а на b(amodb) о
статок, после деления а на b.


(а,b-целые).


a div b= a mod b =a-((a div b)*b)


17 div 3 = 5 17 mod 3 = 2 8 div 2 = 4 8 mod 2 = 0 1 div 5 = 0 1 mod 5 = 1


При выполнении арифметических операций соблюдаются следующие правила:


1. Все знаки проставляются aba*b;


2. Два знака не могут следовать один за другим n/-2 n/(-2);


3. Соблюдается иерархия выполнения арифметических операций: стандартные функции;div, mod; *, /; +, -;


4. Изменить иерархию можно только с помощью скобок.


Типы переменных.


Переменные на языке Паскаль задаются своими именами (63 символа).


Целочисленные переменные.


Shortint - короткие целые числа (1 байт). (-128 127)


Longint - удвоенные целые числа (4 байта). (-231231-1)


Integer - обычные целые числа (2 байта). (-3276832767)


Word - целые положительные числа (2 байта). (065535)


Byte - целые короткие положительные числа (1 байт). (0255)


Верхнее граничное значение целочисленных переменных задано в Паскале как константа и имеет соответствующее имя: Maxint = 32767 (215-1) Maxlongint = 231-1


Логический тип.


Boolean - логические переменные (1 байт) могут принимать 2 значения:


· True (истина)


· False (ложь)


Логические переменные могут использоваться только в логических выражениях. Над ними можно выполнять только 2 операции:


· равно (=)


· не равно (< >)


Для идентификаторов имеет место:


False< True


Над логическими переменными возможны следующие операции:


And (и)


Or (или)


Not (не)


Ord (false) = 0 Ord (true) = 1


Символьный тип.


Chor - служит для хранения одного символа (1 байт)


(буква, цифра, знаки препинания, специальные символы, непосредственно код). Значения символьных переменных задаются в апострофах - “ А”, “9”.


Строковый тип.


String - строковые переменные (255 байт).


Это строка символов заключенных в апострофах.


Вещественный тип.


Real - служит для хранения вещественных чисел (6 байт)


(11 знаков после запятой).


Могут быть заданы в форме с:


1. фиксированной точкой


· 0,5; +5,0; -133,15


плавающей точкой 1200 = 120,0 Е+1 = 12,0 Е+2 = 1,2 Е+3 = 12000,0 Е-1 (показатель степени 38)


Используется для изображения очень больших или очень маленьких чисел.


Стандартные функции.


sin (x) sinx (вещ.)


cos (x) cos x (вещ.)


arctg(x) arctg x (вещ.)


exp (x) ex (вещ.)


ln (x) ln x (вещ.)


pi (x) 3.14 (вещ.)


abs (x) (вещ.)


sqr (x) x2 (вещ.)


sqrt (x) (вещ.)


trunc (x) целая часть числа,дробная остается без округлен. (цел)


trunc (3.7) = 3 trunc (3.1) = 3 trunc (-3.7) = -3


frag (x) дробная часть числа (вещ.)


int (x) ближайшее наименьшее целое число (цел.)


int (3.4) = 3 int (3.7) = 3 int (-3.4) = -4


round (x) ближайшее целое число (матем округ-е) (цел.)


round (3.14) = 3 round (3.74) = 4 round (-3.14) = -3


random (x) генератор случайных чисел (вещ.)


от 0 до x; если x – отсутствует, диапазон чисел 01


odd (x) возвращает TRUE, если x - число нечетное (лог.)


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


Структура программы на Паскале.


Программа – это последовательность инструкций компьютеру приводящих к конечному результату за конечное число шагов.


Программа, написанная на алгоритмическом языке, переводится на язык машинных команд:


program
<имя>;


<описательная часть>;


<раздел функций и процедур>;


begin


<исполнительная часть>;


end.


Зарезервированные слова:


· program – всегда первый;


· begin – начало;


· end – конец.


<имя> - присваивается составителем программы (строится по правилам переменных).


Описательная часть программы.


· Все переменные, используемые в программе должны быть описаны.


Описание начинается со служебного слова var .


program ff;


var


i, n: integer; x,y,z: real;


begin;


.........


end.


Список переменных от типа отделяется “:
”, одно описание от другого – “;
”, список переменных – “,
”.


Метки в программе описываются с помощью служебного слова: label.


Константы : const
.


Пользовательский тип данных: type
.


Исполнительная часть программы.


Отдельные инструкции, входящие в программу, называются операторами. Операторы отделяются один от другого – “;
”.


Бывают трех типов:


· пустой оператор;


· простой оператор;


· составной оператор.


Составной оператор:


begin


<оператор 1>;
<оператор 2>;


end;


Операторы Паскаля.


Оператор присваивания.


“: =” – знак присваивания.


<переменная> : =
<выражения>;




Читается одиноково.


Пример:


;


Паскаль не допускает смешенных выражений. Слева – вещественное, справа - целое выражение (допустимо).


Если в выражении есть хотя бы одна вещественная переменная, все выражение будет вещественным.


Операторы ввода-вывода.


READ
(<список - ввода>)


- имя оператора ввода;


- список переменных, разделенных запятыми.


WRITE
(<список - вывода>)


- имя оператора вывода;


- список переменных вывода, разделенных запятыми.


READLN
(a, b, c) - после вода значений a, b и c курсор перемещается на следующую строку.


WRITELN
- без списка вывода можно использовать для пропуска строк при оформлении вывода результатов.


В операторе WRITE
можно использовать формат вывода значений переменных.


Writeln ( ’_ a = ’ , a:8:3, ’_ b = ’, b:4);


при a = 341.154, b = 2


_ a = _ 341.154 _ b = _ 144


при a = 1.3, b = 144


_ a = _ _ _ 1.300 _ b = _ 144


Program _ prim;


сlrscr - оператор гашения экрана;


var a, b: integer;


x ,y: real;


begin writeln (’ введите a, b ’);


readln ( a, b);


x: = a + b; y: = a/b;


writeln (’ x = ’, x:8:3, ’_ _ ’, ’y = ’, y:8:3)


end.


Ключевые слова горят ярче, чем весь текст прогаммы.


Операторы условия и перехода.


Строки программы на Паскале не нумеруются. Отдельные строки в программе могут иметь метки, к которым можно переходить.


Метки должны быть описаны с помощью ключевого слова


label N1, N2 … ;


в описательной части программы.


N1, N2, … - идентификатор или целое число (положительное) (09999).


Оператор: GO
TO
N;
-передает управление строке с меткой N.


program pr;


label 3;


var


x, y: real;


begin


3: readln (x, y);


go to 3;


end.


Оператор:
IF < условия >
THEN
P1 [
ELSE
P2 ];
если то иначе (не обязательная часть)


<условие> - логическое выражение ;


P1, P2 - простой или составной операторы.


По этому оператору:


если <условие> - "истинно", то выполняется P1 (true);


- " ложно", то выполняется P2 (false).


Если ELSE - отсутствует и <условие> - "ложно", то управление передается следующему оператору.


Распечатать наибольшее из двух чисел:


IF a>b THEN write (a) ELSE write (b).


Вычислить значение функции:


Y =


If x>=0 then y:= sin(x) else y:= - sin(x);


Логические выражения могут быть сложными, составленными с помощью логических операций: AND (и) OR (или) NOT (не).


IF (a>b) and (a>c) THEN writeln (’a = ’, a)


IFa<0 THEN


составной оператор (P1)


ELSE


cоставной оператор (P2)


Паскаль допускает вложенность операторов IF.


IF n>0 THEN


IF ( m div n)>n THEN


m: = m-n


ELSE


m: = m + n;


ELSE - всегда относится к ближайшему оператору IF.


Если n>0 и (mdivn)>n будет выполнено m: = m-n.


Если n>0, но (mdivn)n будет выполнено m: = m + n.


Если n0 - переход к следующему оператору.


Задача
:


Вычислить: y=


Program fun;


var


x, y: real;


begin


writeln (’введите x’); readln (x);


ifx>90 thenwriteln (’функция не определена’)


else begin


if
x<0 then
y: = 0


else
y: = SIN (x*PI/180);


writeln (’y = ’,y:8:3);


end; (составной оператор)


end.


Оператор CASE …
OF;
этот оператор предназначен для замены конструкций из вложенных IF.


Структура:


CASE N of


N1: P1;


N2: P2;


NN: PN;


[elseP;] - необязательная часть оператора.


end;


где N - целочисленная переменная, или выражение целочисленного типа.


N1, N2, … NN - возможные значения переменной N.


P, P1, P2, … PN - простые или составные операторы.


По этому оператору :


если значение - N = N1, то выполняется P1 (после чего управление передается оператору следующему за оператором case ... of);


если значение - N = N2, то выполняется P2, иначе P.


Если структура else - отсутствует и N - не принимает ни одного из перечисленных значений, управление передается следующему за case … of оператору.


Циклические вычислительные процессы.


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


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


При организации циклов необходимо:


- определить параметр цикла и его начальное значение;


- изменять значение параметра цикла на каждом шаге итерации;


- проверка на выход из цикла.


FOR i: = N TO K DO P


(для) (до) (выполнять)


где i - параметр цикла;


N, K - его начальное и конечное значение;


P - простой или составной оператор;


I, N, K - переменные или константы целого типа.


Шаг изменения i - равен 1.


Если K<N, т.е. имеем дело с циклом с отрицательным шагом: (-1)


FOR i: =N DOWNTO K DO P


Рассмотрим пример.


Вычислить


S= 1+1/2+1/3+ … +1/50


Выделим переменную для накапливания суммы - Sum. Значение этой переменной необходимо предварительно обнулить. Паскаль не производит предварительной, начальной, инициализации переменных. Поэтому сумма может быть искажена без Sum = 0.


Program sum;


Var


i: integer;


sum: real;


begin


sum: =0;


for i: = 1 to 50 do


Sum: = sum + 1/i;


Writeln (' сумма = ', Sum);


end.


Оператор for применяют в тех случаях, когда значения параметра цикла целые и меняются с шагом +1, -1.


Оператор цикла с постусловием.


REPEAT


- тело цикла


UNTIL <условие>;


где P1, P2, …PN - любые операторы.


По этому оператору выполняется "тело цикла", а затем проверяется <условие>, если оно не выполнилось, цикл повторяется. И так до тех пор, пока <условие> не будет выполнено.


Необходимо помнить: если <условие> сразу выполнилось, цикл будет пройден один раз.


Вычислить: y = a sin (x ) , x = , =0.2


program fun;


var


y, a, x: real;


begin


x: =0
; read (a)


repeat


y: = a *sin (x); writeln (y, x); x: = x + 0.2
;


until x>1
;


end.


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


Оператор цикла с предусловием.


WHILE <условие> DO P;


Где P - простой или составной оператор.


По этому оператору проверяется <условие> и, если оно выполняется, то выполняется - P, после чего опять проверяется <условие> и т. д.


Итак, P - выполняется до тех пор, пока выполняется <условие>.


Если условие ни разу не выполнилось, P - игнорируется, управление передается следующему оператору.


Вычислить: y = sinx, x, x, - ввести с клавиатуры.


Подсчитать среднее положительное и среднее отрицательное значение функции.


Program cikl;


var


y, x, x k, d x: real;


n, k: integer; SP, n - среднее и количество положительных значений.


SP, S0: real; S0, k - среднее и количество отрицательных значений.


begin


writeln (' введите x - начальное, x - конечное, dx - шаг');


read (x
, x k, d x);


SP: =0; S0: = 0; n: =0; k: =0;


While x< = k x
do.


P Составной оператор.


ifn=0 thenwriteln ('Отрицательные отсутствуют')


elsewriteln (' Средние отрицательные = ', SP/n);


ifk=0 thenwriteln (' Положительные отсутствуют ')


elsewriteln (' Средние положительные = ', S0/k);


end.


Массивы


Задача 1:


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


Program

sum-prois;


uses crt;


const


n = 100;


var


a: array [1…n] of real;


n, k, i: integer;


p, s: real;


begin


clrscr; s: = 0; p: =1;


writeln ('введите размер массива'); readln (nk);


writeln ('введите элемент массива');


for i:=1 to nk do


readln (a[i] );


for i:=1 to nk do


begin


s:= s + a[ i ];


p:= p * a[ i ];


end;


writeln ('Сум. = ', s, 'Произ. =' , p);


end.


Необходимо подготовить ячейки:


- при накапливании суммы - s=0


- при подсчете произведения - p=1.


Задача рассчитана на обработку массива с максимальным размером 100 элементов (n=100).


Конкретный размер массива вводится с клавиатуры (nk).


При каждом прохождении через цикл с клавиатуры вводится только один элемент массива. Два цикла for можно было объединить в один.


Двумерные массивы.


Двумерный массив можно представить в виде матрицы..


Описание двумерных массивов:


a - имя массива;


n, m - количество строк и столбцов в массиве.


Размер массива - nm.


a[i, j] - элемент стоящий на пересечении i-ой строки и j-го столбца.


Каждый элемент определяется двумя индексами.


a[i, i] - элементы главной диагонали.


a[i, 2] - элементы второго стлбца.


Задача 1.


Составить программу подсчета суммы элементов над главной диагональю в двумерном массиве.


Program

matrix;


const


n=10;


m=10;


var


a: array

[1…n, 1…m] of

real;


i, j: integer; n, m: integer;


s: real;


begin s:=0;


writeln (' введите размер массива m, n);


readln (n, m);


{Ввод массива:}


for i:=1 to n do


for j:=1 to m do


readln (a[i, j]);


for i:=1 to n do


for j:=i
to m do


s: s+a[i, j];


writeln('s=', s);


end.


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


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


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


i - меняется медленнее j.


Элементы массива необходимо вводить по строкам.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Алгоритмический язык Паскаль

Слов:2289
Символов:19134
Размер:37.37 Кб.