53
Язык Язык Паскаль Паскаль

Язык Паскаль

  • Upload
    trula

  • View
    106

  • Download
    2

Embed Size (px)

DESCRIPTION

Язык Паскаль. Блез Паскаль. Блез Паскаль (1623-1662) - французский математик, физик и философ. Монах. - PowerPoint PPT Presentation

Citation preview

Page 1: Язык Паскаль

ЯзыкЯзыкПаскальПаскаль

Page 2: Язык Паскаль

2

Блез ПаскальБлез Паскаль (1623-1662) - французский математик, физик и философ. Монах.

В 1642 г. начал работу на созданием суммирующей машины, которая представляет собой механическое устройство - ящик с многочисленными шестеренками {за десять лет он построил более 50 вариантов машины}. Складываемые числа вводились путем поворота наборных колесиков {на колесиках имелись цифры от 1 до 9}, каждое из которых соответствовало одному десятичному разряду числа. Избыток над 9 колесико ‘переносило’, совершая полный оборот и продвигая соседнее справа. Другие операции производились путем процедуры повторных сложений Изобретенный Паскалем принцип связанных колесиков явился основой, на которой строились большинство вычислительных устройств на протяжении следующих трех столетий.

Блез Паскаль изобрел и сконструировал первое механическое счетное устройство, позволяющее складывать в десятичной системе счисления, в котором числа "набирались" на специальных дисках. (В суммирующей машине Паскаля десятичные цифры шестизначного числа задавались поворотами дисков с цифровыми делениями, а результат операции можно было прочитать в шести окошечках - по одному на каждую цифру десятичного числа). Диски были механически связаны, при сложении можно было учесть "перенос единицы" в следующий десятичный разряд. Диск "единиц" был связан с диском "десятков", диск "десятков" - с диском "сотен" и т.д. Если при повороте диск проходил через 0, то следующий диск поворачивался на один зубец. Этот поворот, в свою очередь, мог вызвать поворот на зубец следующего диска (например, при прибавлении 1 к числу 99) и т.д. Механический компьютер Паскаля предназначался для его отца, работавшего сборщиком налогов.

Blaise Paskal

Page 3: Язык Паскаль

3

Никлаус Вирт

Niklaus E. Wirth[15.02.1934, Winterhur (Switzerland) - ]

• создатель языка программирования

Pascal [1970] • автор концепции структурного

программирования• Премия им. Тьюринга в 1984• …

Page 4: Язык Паскаль

4

Филип Кан• «Бешеный француз»,

дипломированый математик, саксафонист-любитель

• Студент Н.Вирта: прослушал вводный курс по Паскалю

• Разработчик Турбо-Паскаля, основатель Borland International (1984)

• 150 000$ за первый месяц продаж компилятора TurboPascal (по 50$ за копию)

Page 5: Язык Паскаль

5

Классический Паскаль • Процедурный язык: поддерживает концепцию

структурного программирования (технологию создания программ в виде иерархически связанных модулей, представляющих собой линейную последовательность операторов цикла, присваивания и условных операторов, а также вызовов вложенных модулей)

• Императивный язык: его инструкции предназначены для последовательного, пошагового изменения состояния вычислительного устройства

• Язык со строгой типизацией: все определяемые в программе переменные принадлежат конкретным типам данных, что позволяет избежать многих ошибок обработки данных ещё на этапе компиляции.

Page 6: Язык Паскаль

6

1. Словарь языка паскаль

• Все латинские буквы• Все арабские цифры• Ограничители и специальные символы

+ - * / := . , ; : = <> < <= > >= ( ) [ ] .. { }• Ключевые слова

AND ARRAY BEGIN CASE CONST DIV DO DOWNTO ELSE END FILE FOR FUNCTION GOTO IF IN LABEL MOD NIL NOT OF OR PACKED PROCEDURE PROGRAM RECORD REPEAT SET THEN TO TYPE UNTIL VAR WHILE WITH

Page 7: Язык Паскаль

7

2. Правила синтаксиса• Комментарий – конструкция вида

{произвольный текст в фигурных скобках}. Может быть помещен в любом месте программы

• Пробелы, комментарии, концы строк являются разделителями

• Между любыми именами, числами, ключевыми словами должен стоять разделитель

• Внутри имени, числа или ключевого слова нельзя отделять один символ от другого

• …

Page 8: Язык Паскаль

8

3. Данные

• По отношению к процессу выполнения программы подразделяются на– исходные данные (задаются на входе),– результаты (получаются на выходе).

• В зависимости от способа хранения и обработки подразделяются на– константы,– переменные.

Page 9: Язык Паскаль

9

3.1. Константы

• Числовые – для представления целых и вещественных числовых данных.

• Булевские – для представления данных, имеющих смысл логических высказываний (да/нет, истина/ложь).

• Символьные – для представления последовательностей символов (текстов).

Page 10: Язык Паскаль

10

3.1.1. Целые константы (INTEGER)

Целая константа – последовательность десятичных цифр. Может предшествовать знак «-» (минус):158-12856789

Page 11: Язык Паскаль

11

3.1.2. Вещественные константы (REAL)

• В виде десятичной дроби (точка вместо запятой!):3.2-156.890.567

• В виде числа с указанием на степень десяти:2.5Е13 {соответствует числу 2,5*1013}0.13Е-13 {соответствует числу 0,13*10-13}

Page 12: Язык Паскаль

12

3.1.3. Булевские константы (BOOLEAN)

TRUEFALSE

Page 13: Язык Паскаль

13

3.1.4. Символьные константы (CHAR)

Символьная константа - символ, заключённый в апострофы:‘A’‘1’‘=‘

Page 14: Язык Паскаль

14

3.1.5. Константы-строки (STRING)

Строка - последовательность символов, заключённая в апострофы:‘язык паскаль’‘MGIMO finished? Ask!’‘Itogo = 0’

Page 15: Язык Паскаль

15

4. ИдентификаторыИдентификатор – последовательность букв или

цифр, начинающаяся с буквы. Используются для обозначения переменных и

др.Пробелы не допускаются.Нельзя использовать идентификаторы,

совпадающие по написанию с ключевыми словами паскаля (см.п.1).

Синонимы слова «идентификатор»: «имя», «наименование», «название».

Page 16: Язык Паскаль

16

5. Типы переменныхТип переменной определяет

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

• «Простые» типы– Скалярные

• Стандартные– Целый (INTEGER)– Вещественный (REAL)– Булевский (BOOLEAN)– Символьный (CHAR)– Строковый (STRING)

• Нестандартные (перечисление)– Ограниченные (SUBRANGE)

• «Сложные» типы– Массив (ARRAY)– Множество (SET)– Файл (FILE)– Запись (RECORD)

• Указатели (POINTER)

Page 17: Язык Паскаль

17

6. Скалярные типы

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

Page 18: Язык Паскаль

18

6.1. Тип целый (INTEGER)Переменные типа INTEGER могут принимать только целые значения.

Описываются следующим образом:A,B,C, Summa, Porjadkovy_Nomer: INTEGER;

С операндами целого типа дают целый результатоперации

* умножение,+ сложение,- вычитание,DIV деление без округления {целая часть частного},MOD остаток от деления { A MOD B = A – ((A DIV B)*B) },

функцииABS(X) абсолютная величина X,SQR(X) квадрат X.

С операндами целого и вещественного типа дают целый результатфункции

TRUNC(X) отбрасывание десятичных знаков (знаков после точки) числа X,ROUND(X) округление числа X до целого.

Page 19: Язык Паскаль

19

6.2. Тип вещественный (REAL) Переменные типа REAL могут принимать только вещественные значения.

Описываются следующим образом:X,Y,Z,DlinaLinii: REAL;

Если (хотя бы один) операнд - вещественного типа, дают вещественный результатоперации

* умножение,+ сложение,- вычитание,/ деление (даже в случае, когда оба операнда – целые),

функцииABS(X) абсолютная величина X,SQR(X) квадрат X.SIN(X) синус X (Х в радианах),COS(X) косинус X (Х в радианах),LN(X) натуральный логарифм Х,EXP(X) экспонента Х,SQRT(X) квадратный корень из Х,ARCTAN(X) арктангенс Х.

Нельзя использовать переменные и константы вещественного типа– в функциях PRED(X), SUCC(X), ORD(X),– в качестве индексов массивов,– в определении базы множества (SET).

Page 20: Язык Паскаль

20

6.3. Тип булевский (BOOLEAN)

Булевские (логические) значения TRUE и FALSE упорядочены следующим образом:

FALSE < TRUE

Стандартные булевские функции:ODD(X) = TRUE, если Х нечётное (Х целое),EOLN(X) = TRUE, если встретился конец строки

(Х – имя текстового файла),EOF(X) = TRUE, если встретился конец файла

Х.

Page 21: Язык Паскаль

21

6.4. Тип символьный (CHAR)Переменная типа CHAR может принимать

значения из множества символов, разрешённого транслятором паскаля на данном компьютере.

Функции преобразования:ORD(С) - номер символа C в символьном

наборе (в таблице ASCII),CHR(i) - i-й символ (i целое) в символьном

наборе.

Page 22: Язык Паскаль

22

6.5. Тип строковый (STRING)Значение переменной типа STRING: строка

символов (не более 255 символов).

Стандартные операции:+ - конкатенация строк {s1_2:= s1 + s2},Length(строка) – функция «длина строки»,Copy(строка, с_позиции, сколько_символов) –

функция «копирование подстроки»,Delete(строка, с_позиции, сколько_символов) –

процедура «удаление подстроки».

Page 23: Язык Паскаль

23

6.6. Тип «перечисление»Тип задаётся перечислением всех значений, которые может

принимать переменная. Упорядочивание значений – по порядку перечисления.

Примеры:TYPE color = (red, yellow, green, blue, пёстрый); бархатный_сезон = (июль, август, сентябрь);

Стандартные функции:PRED(X) - элемент последовательности значений, предыдущий Х

(здесь Х – переменная типа «перечисление»),SUCC(X) - элемент, следующий за Х,ORD(X) - номер элемента Х в последовательности.

Page 24: Язык Паскаль

24

7. Ограниченные типы (SUBRANGE)

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

VAR год_рождения: 1900..2007; лето: июнь..август;

Page 25: Язык Паскаль

25

8. Структура программы

• Заголовок• Блок

Page 26: Язык Паскаль

26

8.1. Заголовок программыВ заголовке указывается имя программы и список

параметров:

PROGRAM HELLO_WORLD2(INPUT, OUTPUT, FILE1, FILE2,…);

Здесь:• HELLO_WORLD2 – имя программы,• INPUT – файл ввода, указывается, если в программе

есть ввод данных,• OUTPUT – файл вывода, указывается всегда,• FILE1,… - внешние файлы, указываются, если

используются.

Page 27: Язык Паскаль

27

8.2. БлокСостоит из 6 разделов, следующих в строго

определённом порядке:1. [Раздел меток (LABEL).]2. [Раздел констант (CONST).]3. [Раздел типов (TYPE).]4. [Раздел переменных (VAR).]5. [Раздел процедур и функций.]6. Раздел операторов.

Названия разделов в тексте программы указываются один раз.

Page 28: Язык Паскаль

28

8.2.1 Раздел меток (LABEL)Любой оператор может быть снабжён меткой –

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

LABEL 5,10,100;…5: А:=0;…10: B:=999;…100: C:=-25;

Page 29: Язык Паскаль

29

8.2.2. Раздел констант (CONST)

Повторяющиеся и громоздкие постоянные значения принято обозначать именами и описывать в разделе констант. Это делает программу более наглядной и удобной при отладке и внесении изменений:

CONST PI=3.1415926; {число Пи}

Page 30: Язык Паскаль

30

8.2.3. Раздел типов (TYPE)

Если в программе вводится тип, отличный от стандартного, то но описывается в разделе TYPE:

TYPE palitra = (RGB, CMYK); sex = (male, female, bi, trans);

Page 31: Язык Паскаль

31

8.2.4. Раздел переменных (VAR)

Каждая переменная должна быть описана в разделе VAR и отнесена к одному и только одному типу:

VAR indeks_massiva: INTEGER; a,b,c: INTEGER; summa_znacheniy: REAL;

Page 32: Язык Паскаль

32

8.2.5. Раздел операторов

Выполняемая часть программы, состоит из операторов, ограничена операторными скобками

BEGIN … … …END.

Page 33: Язык Паскаль

33

9. Операторы

Операторы – описания действий.Отделяются друг от друга точкой с

запятой.Исключение: «;» не ставится перед END,

UNTIL, ELSE.

Page 34: Язык Паскаль

34

9.1. Оператор присваиванияОбший вид:

V:=A;Здесь V – переменная, А – выражение, := – операция присваивания.

Выражение может содержать константы, переменные, названия функций, знаки операций и скобки. Действия выполняются справа налево с учётом старшинства операций.

Примеры:Summa:=Price*Qtty;A:=SQRT(SQR(C)-SQR(B));TGX:=SIN(X)/COS(X);

Page 35: Язык Паскаль

35

9.2. Вывод информации на печать

Общий вид:WRITELN(P1,P2,…,PN);

Здесь WRITELN – имя процедуры вывода, P1,P2,…,PN – список выражений, значения

которых выводятся на печать.

На печать можно выводить произвольный набор символов, заключённый в апострофы.

Пример: WRITELN(‘Длина окружности радиусом 5 ’ + ‘равняется ’, 2*3.146*5);

Page 36: Язык Паскаль

36

10. Ввод информации с консоли

Общий вид:READLN(V1,V2,…,VN);

Здесь READLN – имя процедуры ввода, V1,V2,…,VN – список имён переменных,

значения которых вводятся c консоли.

Пример: READLN(A,B,C);

Page 37: Язык Паскаль

37

9.3. Пример простейшей программы

PROGRAM Vichislenie_Ploschadi_KRUGA(INPUT,OUTPUT);

CONST PI = 3.1415926; {Число Пи}

VAR S_KR: REAL; {Площадь круга} R_KR: REAL; {Радиус круга}

BEGIN WRITELN(‘Работает программа вычисления площади круга’); {Ввод исходных данных:} WRITE(‘Введите значение радиуса: ‘); READLN(R_KR);

S_KR := PI * SQR(R_KR); {собственно вычисление площади круга}

{Вывод результатов:} WRITELN(‘Площадь круга радиусом ’, R_KR, ‘равна: ‘, S_KR); WRITELN; WRITELN(‘До свидания!’)END.

Page 38: Язык Паскаль

38

9.5 Составной операторНачинается ключевым словом BEGIN,

заканчивается словом END.Между этими операторными скобками

помещаются операторы, которые выполняются в порядке следования:

BEGIN {пример составного оператора} I:=2; {…ещё какие-то операторы…} J:=3END;

Page 39: Язык Паскаль

39

9.6. Операторы условного перехода

IF…THEN…ELSE…;CASE………ELSE…END;

Page 40: Язык Паскаль

40

9.6.1 Оператор условного перехода «IF»

Обший вид:IF ATHEN ST1ELSE ST2;

Здесь А – булевское выражение, ST1,ST2 – простые или составные операторы («тело

цикла»).

Если А=TRUE, то выполняется оператор ST1, иначе – выполняется ST2.

ST1 ST2

ATRUE FALSE

Page 41: Язык Паскаль

41

9.6.1 Оператор условного перехода «CASE»

Обший вид:CASE N OF ValueN1,…,ValueNM: ST1; ValueNX,…,ValueNY: ST2; … ELSE STK;END;

Здесь N – выражение-селектор, ValueN1,…ValueNY – значения селектора; ST1,ST2,…STK – операторы.

Если N=ValueN1, то выполняется оператор ST1,…

Page 42: Язык Паскаль

42

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

WHILE…DO…REPEAT…UNTIL…FOR…DO…

Page 43: Язык Паскаль

43

9.7.1. Оператор цикла «WHILE»Обший вид:

WHILE A DO ST;

Здесь А – булевское выражение, ST – оператор.

До тех пор, пока А=TRUE, снова и снова (в цикле) выполняется оператор ST.

Пример:WHILE X<>0 DOBEGIN C:=C+K*X; DEC(X);END;

C:=C+K*XDEC(X)

X<>0

Page 44: Язык Паскаль

44

9.7.2. Оператор цикла «REPEAT»Общий вид:

REPEAT ST UNTIL A;

Здесь А – булевское выражение, ST – оператор.

В цикле выполняется оператор ST до тех пор, пока А не станет TRUE.

Пример:REPEAT WRITELN(‘Я учу паскаль!’);UNTIL FALSE;

WRITELN(‘Я УЧУ ПАСКАЛЬ!’);

FALSE

Page 45: Язык Паскаль

45

9.7.1. Оператор цикла «FOR»Обший вид (варианты):

FOR J:=N1 TO N2 DO ST;FOR J:=N2 DOWNTO N1 DO ST;

Здесь J – переменная цикла, N1, N2 – начальное/конечное значение переменной цикла, ST – оператор.

До тех пор, пока J<N2, в цикле выполняется оператор ST.

Пример:FOR J:=1 TO 100 DOBEGIN WRITELN(‘J=‘,J);END;

Page 46: Язык Паскаль

46

12.1. Массивы (ARRAY)Массив – структура данных, состоящая из фиксированного числа

компонентов одного типа. Массивы описываются в разделе VAR.

Общий вид описания массива:

A: ARRAY [iType1, iType2,…iTypeL] OF TypeA;

Здесь A – имя массива, TypeA – тип компонентов (базовый тип массива), L – размерность массива (количество индексов), iType1, iType2,…iTypeL – типы индексов.

Пример описания массива:M: ARRAY[1..5,1..8] OF INTEGER; {матрица целых чисел размером 5x8}

Page 47: Язык Паскаль

47

19. Записи (RECORD)Запись – это структура данных, состоящая из фиксированного числа компонентов, называемых

полями. В одном поле данные имеют один и тот же тип, в разных полях -

Общий вид описания типа RECORD:

TYPE T=RECORD ID11,ID12,…,ID1N: Type1; ID21,ID22,……..,ID2L: Type2; …………………….. IDK1,IDK2,……………….,IDKM: TypeK; END;

Здесь T – имя типа; IDmn – идентификаторы полей; TypeN – типы полей.

Пример:TYPE COMPLEX=RECORD {тип «комплексные числа»} RE,IM: REAL; {действительная и мнимая часть комплексного числа} END;

Page 48: Язык Паскаль

48

19.1. Оператор «WITH»

Используется для удобства работы с переменными типа RECORD.

Общий вид:WITH A DO ST;

Здесь A – имя переменной типа RECORD,

ST – оператор.

Page 49: Язык Паскаль

49

13. Процедуры (PROCEDURE)Процедура паскаля – это самостоятельная подпрограмма.

Процедуры, используемые в разных программах, помещаются в т.н. «библиотеки процедур» и находятся в памяти ЭВМ (оперативной либо внешней).

Процедура имеет ту же структуру, что и главная программа: заголвок процедуры, разделы описаний CONST, TYPE, VAR и выполняемую часть BEGIN…END;.

Общий вид заголовка процедуры:PROCEDURE N (P1:T1;…PN:TN; VAR PM:TM;…);

Здесь N – имя процедуры, P – формальные параметры, T – их типы.

Page 50: Язык Паскаль

50

Вызов процедуры. Формальные и фактические параметры.

Вызов процедуры (запуск процедуры в работу) производится оператором вида

N (fP1,fP2,fP3,…);Здесь N – имя вызываемой процедуры, fP – фактические параметры.

При вызове процедуры производятся действия:• устанавливается взаимно однозначное соответствие

между формальными и фактическими параметрами (по количеству и по типу);

• управление передаётся процедуре;• по завершении работы процедуры управление

передаётся вызывающей программе (процедуре) на оператор, следующий за вызовом процедуры.

Page 51: Язык Паскаль

51

13.2. Параметры-переменныеВ заголовке процедуры перед именами

формальных параметров –переменных стоит ключевое слово VAR.

Соответствующий фактический параметр может быть только переменной (не константой, не выражением).

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

Page 52: Язык Паскаль

52

13.1. Параметры-значения

Соответствующий фактический параметр может быть переменной, константой или выражением.

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

Page 53: Язык Паскаль

53

14. Функции (FUNCTION)Функция паскаля – это самостоятельная подпрограмма,

в качестве результата действия которой получается одно единственное значение.

Общий вид заголовка функции:FUNCTION F (P1:T1;…PN:TN):TYPEF;

Здесь F – имя функции, TYPEF – тип возвращаемого результата, P – формальные параметры, T – их типы.