Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник_Часть_1.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
974.85 Кб
Скачать

103

МПС РОССИИ

Государственное образовательное учреждение

высшего профессионального образования

«Ростовский государственный университет путей сообщения

Министерства путей сообщения Российской Федерации»

(РГУПС)

___________________________________________________________________

Г.В. Козлов, В.Н. Смоляков

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ВЫСОКОГО УРОВНЯ

Учебное пособие

Часть 1

ЯЗЫК ПРОГРАММИРОВАНИЯ ПАСКАЛЬ

Утверждено

методическим советом университета

Ростов-на-Дону

2003

УДК 681.3.06

Козлов Г.В., Смоляков В.Н.

Программирование на языке высокого уровня: Учебное пособие Ч. 1. Язык программирования Паскаль / Под общ. ред. Е.М. Ульяницкого. Ростов н/Д: Рост. гос. ун-т путей сообщения, 2003. 95 с.

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

Пособие предназначено для студентов специальностей 220100 «Вычислительные машины, комплексы, системы и сети» и 071900 «Информационные системы в технике и технологиях», изучающих дисциплины «Технология программирования» и «Программирование на языке высокого уровня», а также может быть использовано студентами всех специальностей университета для самостоятельного изучения языка Паскаль и освоения основных приемов программирования на нем.

Табл. 7. Ил. 24. Библиогр.: 6 назв.

Рецензенты: д-р техн. наук, проф. Н.А. Целигоров (ВГАВТ);

канд. техн. наук, доц. В.Н. Семенов (РГУПС)

© Ростовский государственный университет

путей сообщения, 2003

Оглавление

ВВЕДЕНИЕ 11

Пример графического изображения алгоритма 13

Свойства алгоритма. При составлении и записи алгоритма необходимо обеспечить, чтобы он обладал рядом свойств. 14

Языки программирования 15

Трансляторы 16

1. ОБЩИЕ СВЕДЕНИЯ О ЯЗЫКЕ ПАСКАЛЬ 17

1.1. Алфавит языка. Идентификаторы и зарезервированные слова 17

2. ДАННЫЕ В ПАСКАЛЕ. ПРОСТЫЕ ТИПЫ ДАННЫХ 18

2.1. Целочисленный тип 18

Рис. 2.1. Структура типов данных языка Паскаль 19

Таблица 2.1 19

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

Таблица 2.2 19

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

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

2.5. Перечисляемый тип 20

operators=(plus, minus, divide); 21

sim=(a, c, d, e); 21

Var m1, m2: metall; 21

Type Boolean = (False, True); 21

2.6. Ограниченный (диапазонный) тип данных 21

TYPE <имя типа>=<нижняя граница>..<верхняя граница>; 21

TYPE MONTH=(JAN,FEB,MAR,APR,MAY,JUN,JUL, 21

AUG,SEP,OCT,NOV,DEC); {перечисляемый тип} 21

TYPE BUKVA = ’A’.. ’Z’; 22

VAR Y:BUKVA; 22

3. ОПЕРАЦИИ И ВЫРАЖЕНИЯ 22

2.1. Целочисленный тип 22

3.2. Арифметические выражения и операции 22

Таблица 3.1 23

3.3. Логические операции и выражения 23

23

Таблица 3.2 24

3.4. Операции отношения 24

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

3.6. Приоритеты операций 26

4. СТРУКТУРА ПРОГРАММЫ 26

PROGRAM STUD(INPUT, OUTPUT); 26

PROGRAM LAB1(INPUT, OUTPUT); 26

PROGRAM RASCHET; 26

4.1. Раздел определения констант 27

4.2. Раздел определения типов 27

TYPE 27

NN=INTEGER; 27

VECTOR=ARRAY[1..10] OF REAL; 27

COLOR=(RED, YELLOW, GREEN, BLUE); 27

4.3. Раздел описания переменных 27

VAR 27

A, B, C: INTEGER; 27

D: REAL; 27

V: BOOLEN; 27

F: VECTOR; 27

4.4. Раздел описания процедур и функций 28

В нем размещаются процедуры и функции пользователя (см. гл. 9). 28

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

PROGRAM PRIM1 (INPUT, OUTPUT); {заголовок программы} 28

END; 28

WRITELN(‘ N=’, N, ‘ N!=’, Fact) 28

4.6. Директивы компилятора и управляющие символы 28

5. ОПЕРАТОРЫ ЯЗЫКА ПАСКАЛЬ 29

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

KOR:=2; 29

RESULT:=SIN(A)+2; 29

5.2. Оператор вывода информации 30

WRITE (V1, V2,...,VN); 30

WRITE(VAR1: P: Q); 30

WRITE(V1: P); 30

5.3. Оператор ввода информации 31

READ (VAR1, VAR2, ... , VARN); 31

PROGRAM PRIM5; 31

VAR 31

A,B,S:REAL; {A, B – стороны, S – площадь} 31

S:= A*B; 31

END. 31

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

BEGIN 32

I:= 8; 32

C:=16; 32

WRITELN(I*C:10) 32

END; 32

5.5. Условный оператор 32

Рис.5.1. Синтаксическая диаграмма условного оператора 32

THEN C:=D 32

ELSE C:=8; 32

IF R 32

THEN C:=10; {R имеет тип BOOLEAN} 32

PROGRAM PRIM6; 33

VAR 33

A,B,C,D,X1,X2:REAL; 33

WRITELN(’A=’, A, ’ B=’, B, ’ C=’, C); 33

D:=SQRT(SQR(B)-4*A*C); 33

X1:=(-B-D)/(2*A); X2:=(-B+D)/(2*A); 33

END 33

END. 33

5.6. Оператор варианта CASE 33

END; 33

PROGRAM PRIM7; 33

VAR 33

DEN:INTEGER; 33

CASE DEN OF 34

END 34

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

5.7.1. Оператор цикла по счетчику (цикл с параметром ) 34

Рис. 5.2. Синтаксическая диаграмма оператора цикла с параметром 34

Порядок выполнения цикла for: 35

П р и м е р 1. Вычислить n! (1* 2 * 3 * 4 … * n). 35

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

Рис. 5.3. Синтаксическая диаграмма цикла с предусловием 36

Readln (A) {читаем новое значение А} 37

Синтаксическая диаграмма цикла с постусловием изображена на рис. 5.4. 37

Рис. 5.4. Синтаксическая диаграмма цикла с постусловием 37

3. Конец цикла; проверка X > PRK. 38

4. Печать суммы. 38

Перечень используемых переменных приведен в табл. 5.2. 38

Таблица 5.2 38

Таблица переменных 38

6. СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ 39

6.1. Массивы 39

TYPE 39

MATR=ARRAY[1..2,1..12] OF REAL; 39

VAR 39

A,B,C:MATR; 39

A,B,C:ARRAY[1..10] OF INTEGER; 39

1. {Программа, позволяющая найти сумму элементов одномерного массива} 40

2. {Программа поиска наибольшего элемента одномерного массива и его порядкового номера} 40

3. {Программа нахождения произведения двух матриц A размером M*N и B размером N*K . Элементы результирующей матрицы C размером M*K рассчитываются по формуле . Значения M, N, K не превышают 10} 41

6.1.1. Сортировка массивов 41

П p и м е p. Отсоpтиpовать массив символов по алфавитy. 42

П p и м е p. Отсоpтиpовать по yбыванию массив методом «пузырька». 42

6.2. Строки 43

Var 44

1. {Подсчитать количество цифр в произвольной строке} 44

2. {Подсчитать cумму цифр в целом положительном числе} 44

6.3. Множества 45

Внутреннее представление множеств. Все значения множества представляются в памяти последовательностями битов одинаковой длины. За каждое значение базового типа «отвечает» 1 бит. Если множество содержит некоторый элемент, в соответствующем бите хранится 1, если не содержит – хранится 0. 45

4. Что будет выведено на экран? 49

6.4. Записи 49

TYPE <имя типа>=RECORD <Список полей> End; 50

Здесь <имя типа> – правильный идентификатор; <Список полей> – список полей; представляет собой последовательность разделов записи, разделяемых точкой с запятой. Каждый раздел записи представляет собой один или несколько идентификаторов полей, отделяемых друг от друга запятыми. За идентификаторами ставится двоеточие и описание типа поля. 50

Как было указано в п. 3.1., запись может быть элементом массива. 50

П р и м е р: 50

Type 50

rec = record 50

a: integer; 50

b: real; 50

c: string[10] 50

end; 50

var 50

elem : rec; 50

tabl : array[1..100] of rec; 50

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

Например, к полям вышеприведенной записи можно обратиться по именам: 50

elem.a, elem.b, elem.c, elem.c[5], 50

a к полям i-го компонента массива записей – по именам: 50

tabl[i].a, tabl[i].b, tabl[i].c, tabl[i].c[1]. 50

Для сокращения обозначения полей записи (когда ведется работа с несколькими полями одной и той же записи) используется оператор присоединения: 50

WITH <переменная запись> DO <оператор>; 50

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

WIHT <переменная-запись_1>, …<переменная-запись_N> DO <оператор>; 50

П р и м е р ы 50