- •Иркутский государственный университет путей сообщения кафедра “информатика” конспект лекций по дисциплине “программирование на алгоритмическом языке высокого уровня”
- •Иркутск
- •Программирование и алгоритмические языки в историческом аспекте
- •Введение в Паскаль
- •Алфавит Паскаля
- •Служебные (ключевые) слова
- •Константы
- •Запись чисел
- •Переменные
- •Типы данных
- •Стандартные функции
- •Выражения
- •Выражения целого типа
- •Выражения вещественного типа
- •3,61·109 X – 526,237 3.61e9 * X – 526.237 * Sqrt(0.2*y) Выражения логического типа
- •Операторы присваивания
- •Программа и этапы ее разработки. Структура программы
- •Var X, s : Word;
- •Комментарии
- •Ввод данных
- •Вывод данных
- •Бесформатный способ вывода
- •±D.DdddddddddE±dd
- •Форматный способ вывода
- •Структуры данных
- •Массивы
- •Var a : Array [1..2,1..3] Of Integer;
- •Error 201: Range check error
- •Var a : tMatrix;
- •Var Doska : Array [‘a’..’h’,1..8] Of Char;
- •Var Roma : Array [1..787] Of Word;
- •Var Roma : Array [-754..33] Of Word;
- •Var Ozenka : Array [1..2,1..3] Of Word;
- •Var Ozenka : Array [Fam, Predm] Of 2..5;
- •Var a: Array [1..3, 1..4, 1..5] Of Integer;
- •Var I, j: Byte;
- •Алгоритм и его свойства
- •Схемы алгоритмов
- •Базовые структуры
- •Цепочка
- •Ветвления
- •Альтернатива
- •If (условие)
- •Вариант 2 – с использованием операции конъюнкция
- •Часто встречающиея ошибки программирования:
- •Var X, y, s_left, s_right, alfa, sin_alfa, segment : Real;
- •Переключатель
- •Var Month: 1..12;
- •Бесконечные циклы
- •Циклы с предусловием
- •Var I, s : Word;
- •Var I, s, n : Word;
- •Программа
- •Var n, min, max, s, count: Word;
- •Часто встречающиея ошибки программирования:
- •Циклы с постусловием
- •Var I, s : Word;
- •Var I, s, n : Word;
- •Программа
- •Var n,min,max,s,count: Word;
- •Var k : Word;
- •X, y, s : Real;
- •Var Month: 1..12;
- •Var n, s : Word;
- •Var I, s : Word;
- •Примеры:
- •Var I, j, k : Word;
- •Var I, i_max, vector_max : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, s : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, k, m : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, s, count : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, k, min, max, i_min, i_max : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, k, i_otr, i_pol : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, k, posl : Integer;
- •Vector : Array [1..N] Of Integer;
- •Var I, j, t : Integer;
- •Vector : Array [1..K] Of Integer;
- •Var I, j, t : Integer;
- •Vector : Array [1..K] Of Integer;
- •Var I, j, k : Integer;
- •Var I, j, k, posl : Integer;
- •Var I, j, k, m : Integer;
- •Var I, j, k, i_max, j_min : Word;
- •Var I, j, t : Integer;
- •V : Array [1..K] Of Integer;
- •Var I, j, m, t : Integer;
- •V : Array [1..K] Of Integer;
- •Var I, j, b, c : Word;
- •Часто встречающиея ошибки программирования:
- •Множества
- •Var r : tSymb;
- •Основные операции со множествами
- •Типизированные файлы
- •Var f_int : tFile_Int;
- •Var n : Integer;
- •Функции для работы с типизированными файлами
- •И процедуры:
- •Var n : Integer;
- •Текстовые файлы
- •Var f_text : tFile_text;
- •Программа:
- •Var stud_1 : tStudent;
- •Var student : tKadr;
- •Var coord : tCoord;
- •Ключ : ();
- •Подпрограммы
- •Подпрограммы-функции
- •Var p : Real;
- •Var s : Real;
- •Var I: Word;
- •Var a, b, c : Integer;
- •Var a, b, c : Integer;
- •Var a, b : Integer;
- •Var a, b, c: Integer;
- •Рекурсия
- •5 * 4 * Factorial(3)
- •5 * 4 * 3 * Factorial(2)
- •5 * 4 * 3 * 2 * Factorial(1)
- •Var k: Integer; Func_2
- •Var temp : Integer;
- •Особенности рекурсии:
- •Процедуры
- •Var I: Word;
- •Var I, i_min, i_max: Word;
- •Var I: Word;
- •Var I: Word;
- •Var I: Word;
- •Var I: Word;
- •Var I, j, k: Word;
- •Var I: Word;
- •Var I: Word;
- •Var I, j, k: Word;
- •Var I: Word;
- •Var I: Word;
- •Var I, j, k: Word;
- •Var I: Word;
- •Var I: Word;
- •Var I, j: Word;
- •Программные модули
- •Структура модуля
- •Interface
- •Implementation
- •Var f: Text;
- •Var p: Real;
- •Var temp: Real;
- •Компиляция модулей
- •Взаимное использование модулей
- •Ссылки и динамические переменные
- •Var a, b: tPntint;
- •X, y: tPntchar;
- •Динамические структуры данных
- •Связные списки
- •Inf: Integer;
- •Var head, q : tPoint;
- •Inf: Integer;
- •Var head, q : tPoint;
- •Добавление нового элемента в список
- •Var head, q, r: tPoint;
- •Inf: Integer;
- •Var head, q, r : tPoint;
- •Удаление элемента из списка
- •Inf: Integer;
- •Var head, q, r : tPoint;
- •Сортированные списки
- •Var head, q, r, V: tPoint;
- •Inf: Integer;
- •Var head, q, r, V : tPoint;
- •Бинарные деревья
- •Var root, q, V: tRebro;
- •Интерфейс:
- •Var root, q, V : tRebro;
- •Поиск заданного узла в дереве
- •Var root, q, V : tRebro;
- •Удаление узла из дерева
- •Var root, q, V, r : tRebro;
- •Объектно-ориентированное программирование
- •Var X, y, dx, dy: Word;
- •Var x0, y0, dx, dy: Word;
- •Var x0, y0, dx, dy, radius: Word;
- •Var x0, y0, dx, dy, radius: Word;
- •Основы алгебры логики
- •Логическая функция не (отрицание)
- •Логическая функция и (конъюнкция – логическое умножение)
- •Логическая функция или (дизъюнкция – логическое сложение)
- •Логическое следование (импликация)
- •Логическое совпадение(эквивалентность)
- •Закон исключенного третьего
- •Закон противоречия
- •Закон двойного отрицания
- •Закон контрапозиции
- •Закон расширенной контрапозиции
- •Закон перестановки посылок
- •Закон силлогизма
- •Закон де Моргана
- •Системы счисления
- •Двоичная система счисления
- •Восьмеричная система счисления
- •Шестнадцатиричная система счисления
- •Арифметические операции в двоичной системе счисления
- •1111 11 11 - Переносы
- •Арифметические операции в восьмеричной системе счисления
- •Арифметические операции в 16-ричной системе счисления
- •1. Ошибки при компиляции
- •2. Ошибки времени выполнения а) Ошибки системы ms-dos
- •Б)Ошибки ввода-вывода
- •В)Критические ошибки
- •Г)Фатальные ошибки
Var a : Array [1..2,1..3] Of Integer;
Описан массив целых чисел А , имеющийдвестроки с индексами1и2итристолбца с индексами1,2,3.
Внимание! Индексы указываются вквадратныхскобках, между начальными и конечными значениями индексов ставится подветочки, а между измерениями –запятая.
Внимание! При компиляции программ, использующих массивы, настоятельно рекомендуется использовать директиву компиляции{$R+}.В этом режиме проверяются все индексы массивов на выход за свои границы. При выходе за границы выполнение программы прерывается и выдается сообщение об ошибке:
Error 201: Range check error
б) в разделе определения констант, типов и описания переменных:
Const row = 2;
Col = 3;
Type TMatrix = Array [1..row,1..col] Of Integer;
Var a : tMatrix;
Сначала определены поименованныеконстантыrowиcol(описаны их имена и заданы конкретные значения), затем определен новый тип данныхTMatrixс использованием ранее определенных констант, а в конце описан массивAс использованием ранее определенного типа данных,
в) определением массива кактипизированной константы:
Const A : Array [1..2,1..3] Of Integer =((-5,8,0),(9,-1,4));
При этом задаются не только имя, размеры и базовый тип массива, но и конкретное значение его элементов. Эти значения могут изменяться в программе.
Номера строк и столбцов массивов могут быть заданы не только целыми положительными числами, но и символами, отрицательными целыми числами и строками.
Примеры:
Описать массив Doska, позволяющий рассматривать его как модель шахматной доски.
На шахматной доске строки обозначаются латинскими буквами от aдо h,а столбцы – цифрами от1до8, а шахматные фигуры – тоже латинскими буквами. Поэтому описание этого массива может выглядеть так:
Var Doska : Array [‘a’..’h’,1..8] Of Char;
а обращение к элементу этого массива – так:
Doska[‘c’,2]:=’f’;
Использование нечисловых индексов элементов массива повышает наглядность программы, делает ее более понятной.
Описать массив Roma, в котором можно было бы хранить данные о количестве жителей Рима с года его основания (754 г. до н.э.) и до 33 г. н.э.
Традиционноеописание:
Var Roma : Array [1..787] Of Word;
В этом случае первый элемент массива соответствует году основания Рима:
Roma[1]:=2;в год основания Рима в нем жили два основателя
Roma[787]:=450000; в 33 г. н.э. в Риме проживали 450000 жителей
Тогда какой элемент массива соответствует, например, 639 году до н.э.? Сразу сказать трудно, необходимо вычислить индекс этого элемента.
Таким образом, при традиционном описании этого массива возникают трудности сопоставления индекса элемента с годом.
Опишем массив по-другому, используя отрицательныеиндексы элементов:
Var Roma : Array [-754..33] Of Word;
В этом случае можно сразу сказать, что 639 году до н.э. соответствует элемент Roma[-639].
3. Описать массивOzenka, в котором можно было бы хранить оценки студентов Иванова И. и Петрова П. по математике, физике и информатике:
Мат. Физ. Инф.
Иванов И. 4 5 5
Петров П. 3 4 3
Традиционноеописание:
Var Ozenka : Array [1..2,1..3] Of Word;
В этом случае по оператору присваивания:
Ozenka[2,1]:=3;
трудно догадаться, что у Петрова П. по математике оценка3.
Опишем этот массив, введя новые типы данных:
Type Fam = (Ivanov, Petrov);
Predm = (Math, Phis, Inf);