Программирование и комп-ры

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


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

 1. заглавные и прописные латинские буквы;
 2. арабские цифры;
 3. знаки препинания ( :  ;  ,  . );
 4. знаки операций.
                 Арифметические операции правила их записи.

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

(a div b) частное от деления а на b
                                                     (a mod b)  остаток,
после деления а на b.
(а,b-целые).

a div b= [pic] 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 [pic]127)
Longint - удвоенные целые числа (4 байта). (-231[pic]231-1)
Integer - обычные целые числа (2 байта). (-32768[pic]32767)
Word - целые положительные числа (2 байта). (0[pic]65535)
Byte - целые короткие положительные числа (1 байт). (0[pic]255)
Верхнее граничное значение целочисленных переменных задано в Паскале как
константа и имеет соответствующее имя: Maxint = 32767 (215-1) Maxlongint =
231-1

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

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

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

7. равно (=)
8. не равно (< >)
  Для идентификаторов имеет место:

  False< True

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

  And (и)
  Or (или)
  Not (не)
Ord (false) = 0                                Ord (true) = 1


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

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

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


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

String - строковые переменные (255 байт).
Это строка [pic]символов заключенных в апострофах.

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

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


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

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

1. фиксированной точкой
 9. 0,5; +5,0; -133,15
плавающей точкой 1200 = 120,0 Е+1 = 12,0 Е+2 = 1,2 Е+3 = 12000,0 Е-1
  (показатель степени [pic]38)
  Используется для изображения очень больших или очень маленьких чисел.


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

[pic]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)                        [pic]                    (вещ.)
  sqr (x)                       x2                        (вещ.)
  sqrt (x)                      [pic]                       (вещ.)
  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 – отсутствует, диапазон чисел
0[pic]1
odd (x)                 возвращает TRUE, если x - число нечетное
(лог.)
Аргументом стандартной функции может быть переменная, константа, выражение,
стоящее справа от имени в скобках. Воспринимается в радианах для
тригонометрических функции.

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


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

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

  program         <имя>;


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

  <раздел функций и процедур>;
  begin
  <исполнительная часть>;
  end.
  Зарезервированные слова:

10. program – всегда первый;
11. begin – начало;
12. end – конец.
    <имя> - присваивается составителем программы (строится по правилам
    переменных).


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

13. Все переменные, используемые в программе должны быть описаны.
    Описание начинается со служебного слова var .

    program ff;

    var

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

       begin;

       .........

       end.

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

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

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

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


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

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

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

14. пустой оператор;
15. простой оператор;
16. составной оператор.
    Составной оператор:

  begin
  <оператор 1>; <оператор 2>; …
  end;

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

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


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

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


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

Пример:

[pic];        [pic]    [pic]

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

Если в выражении есть хотя бы одна вещественная переменная, все выражение
будет вещественным.
      Операторы ввода-вывода.
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, … - идентификатор или целое число (положительное) (0[pic]9999).
Оператор:         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 =[pic]
If     x>=0    then   y:= sin(x)   else    y:= - sin(x);

      Логические выражения могут быть сложными, составленными с помощью
логических операций: AND (и) OR (или) NOT (не). [pic]
            IF  (a>b)  and  (a>c)   THEN  writeln (’a = ’, a)

   IF a<0   THEN
                              [pic]  составной оператор (P1)
                              ELSE
                                [pic]   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)[pic]n будет выполнено m: = m + n.
Если n[pic]0 - переход к следующему оператору.

Задача:
Вычислить:          y=[pic]
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