Лекция по паскалю

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


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


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


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


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


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


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


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

(a div b)
частное от деления а на b                                                                                           
  (a mod b)  остаток, после деления а на 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.   Все знаки проставляются             a b           
a*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)                     sin x                
(вещ.)


  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)


   IF a<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 и (m div n)>n будет выполнено m: = m-n.


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


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


 


Задача:


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


Program fun;


var


         x, y: real;


begin


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


        if x>90 then writeln (’функция не определена’)


                    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;


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


                          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 = sin x, 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 - конечное, d x - шаг');


        read (x, x k, d x);


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


       While    x< = k x    do.


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


if   n=0   then       writeln ('Отрицательные
отсутствуют')


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


if   k=0   then       writeln (' Положительные
отсутствуют ')


               else       writeln (' Средние положительные = ', 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

Название реферата: Лекция по паскалю

Слов:2284
Символов:23195
Размер:45.30 Кб.