- •Иркутский государственный университет путей сообщения кафедра “информатика” конспект лекций по дисциплине “программирование на алгоритмическом языке высокого уровня”
- •Иркутск
- •Программирование и алгоритмические языки в историческом аспекте
- •Введение в Паскаль
- •Алфавит Паскаля
- •Служебные (ключевые) слова
- •Константы
- •Запись чисел
- •Переменные
- •Типы данных
- •Стандартные функции
- •Выражения
- •Выражения целого типа
- •Выражения вещественного типа
- •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 X, s : Word;
Begin
ClrScr; очистка экрана
x := 534;
s := 0;
s := s + x Mod 10;
s := s + x Div 10 Mod 10;
s := s + x Div 10 Div 10 Mod 10;
WriteLn(‘s=’,s); вывод результата работы программы на экран
ReadLn;
End.
Комментарии
В любом месте программы, где разрешен пробел, можно записать пояснительный текст – комментарий. Он не обрабатывается компилятором и не включается в исполняемыйexe-файл. Признак профессионализма программиста – наличие развернутых комментариев в программе.
Комментарии нужны в любой программе, даже если программа не очень объемная и не очень сложная. Обычно молодые и начинающие программисты (первокурсники) весьма самоуверенно пренебрегают этой рекомендацией. И здесь не столь важно, что вашу программу без комментариев будет трудно понять постороннему человеку, например, преподавателю. Преподаватель поймет все. Гораздо весомее тот аргумент, что вы сами через некоторое время ее забудете, и вам придется потратить много времени, чтобы в ней снова разобраться. Как правило, даже выгодно переписать ее заново, но уже с комментариями.
Комментарии в программе выполняют информационную роль и в общем случае должны раскрывать назначение программы как в целом, так и отдельных ее частей, а также должны описывать информационную модель решаемой задачи, акцентируя внимание на используемые математические методы и алгоритмы. В то же время во многих практических случаях достаточно будет ограничиться расшифровкой обозначений, инструкций по подготовке и вводу исходных данных, описанием получаемых данных.
Комментарием считается последовательность произвольных фраз, заключенных в символы {. . .} или (* . . .*):
{ это комментарий }
(* это комментарий *)
Поместить комментарий можно между любыми двумя соседними операторами программы или в конце оператора:
x:=x+1;{увеличиваем счетчик на единицу}
Комментарии можно использовать при отладке программы, временно исключая из текста программы те или иные участки с помощью таких скобок.
Ввод данных
Программы на алгоритмических языках обычно составляются таким образом, чтобы они могли быть использованы при различных наборах исходных данных. При этом исходные данные не задаются в программе операторами присваивания, а помещаются отдельно от программы, например, в файле на внешнем носителе, а в самой программе предусматривается возможность ввода нужных значений с устройств ввода-вывода (дисков, клавиатуры) в оперативную память и вывода результатов вычислений из памяти на внешние носители информации.
Под вводомданных понимается передача информации из внешних устройств в оперативную память компьютера.
Ввод информации в программе осуществляется операторами:
Read(x1, x2, x3, …);
ReadLn(x1, x2, x3, …);
где x1, x2, x3, …- список ввода – перечень имен переменных, значения которых вводятся.
Пример:ReadLn(n, m, r); - ввести значения переменных
n, m, r.
Операторы ввода позволяют организовать диалоговый (интерактивный) режим работы компьютера – при их исполнении выполнение программы останавливается, и ожидается ввод данных.
Пользователь должен ввести с клавиатуры необходимое количество данных в соответствии с типами переменных, перечисленных в операторе ввода (чисел, символов, строк):
если переменные целого или вещественноготипа, то их значения можно вводить одной строкой, разделяя пробелами:
1.5 -2.21 5 10.6е-12
если переменные символьноготипа, то при вводе одной строкой их значения записываются без апострофов и каких бы то ни было разделителей (пробелов или запятых), которые в этом случае будут восприниматься как символы,
строкивводятся в соответствии с описанной длиной: если вводимая строка длиннее описанной, то она обрезается, если меньше, то пробеламинедополняется,
значения переменных логическоготипанельзявводить с клавиатуры,
в любом случае значения переменных можно вводить по одному в строке:
1.5
-2.21
5
10.6е-12
после выполнения оператора Readкурсор на новую строку не переводится, а оператораReadLn- переводится в начало новой строки и очищаетсябуфер ввода,
оператор ReadLnбез списка ввода останавливает выполнение программы до тех пор, пока не будет нажата клавишаENTER.