- •Иркутский государственный университет путей сообщения кафедра “информатика” конспект лекций по дисциплине “программирование на алгоритмическом языке высокого уровня”
- •Иркутск
- •Программирование и алгоритмические языки в историческом аспекте
- •Введение в Паскаль
- •Алфавит Паскаля
- •Служебные (ключевые) слова
- •Константы
- •Запись чисел
- •Переменные
- •Типы данных
- •Стандартные функции
- •Выражения
- •Выражения целого типа
- •Выражения вещественного типа
- •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
- •Б)Ошибки ввода-вывода
- •В)Критические ошибки
- •Г)Фатальные ошибки
Запись чисел
1. Целыеконстанты (целые числа) записываются как обычно:
5 -2 0
2. Вещественныеконстанты могут быть записаны в двух формах:
форме с фиксированнойзапятой – в виде десятичной дроби, только вместо десятичной запятой ставитсяточка. Число не должно начинаться или заканчиваться десятичной точкой. В памяти компьютера сохраняются11-12цифр дробной части:
3.1415926535898 -2.13 5.0 0.5
Ошибки: 5. .1 - отсутствуют дробная или целая части
форме с плавающейзапятой – в виде мантиссы с последующим десятичным порядком (экспоненциальная форма записи):
-2.3e-12 0.41E+5 -6.23e15
Показатель степени записывается после буквы е (Е),причем знак плюс не обязателен.
Внимание! В записи числа пробелы и знаки умножения недопустимы!
Переменные
В математике с понятием переменной связывают некоторый поименованный объект, который может принимать одно значение из допустимого множества значений.
В программировании термин переменнаяозначает ячейку оперативной памяти, в которой находится текущее значение какого-то объекта программы. Имя переменной рассматривается как наименование илиадрестакой ячейки памяти. Знание этого адреса дает возможность программисту изменять значение переменной в процессе выполнения программы.
Константам тоже выделяются необходимые ячейки памяти, однако их адреса программисту недоступны, поэтому значения констант нельзя изменить в процессе выполнения программы.
Таким образом, понятие переменнойупотребляется для обозначения поименованной величины, которая может принимать одно из допустимого диапазона значений. Обращение к переменной осуществляется по ееимени, которое программист выбирает сам, руководствуясь следующими правилами:
имя переменной должно отражать ее назначение, то есть оно должно нести определенный смысл,
имя может состоять из букв латинского алфавита, цифр и знаков подчеркивания,
имя должно начинаться с буквы или знака подчеркивания,
не допускается совпадение имени со служебными словами, именем программы, именами подпрограмм или функций.
Как и константы, переменные могут быть пяти стандартных типов: целые, вещественные, символьные, логические и строковые. Тип переменной определяет диапазон ее изменения.
Кроме стандартных типов, программист может использовать интервальныеиперечисляемыетипы.
Таким образом, любая переменная характеризуется уникальным именем, типом и конкретным значением из диапазона, определяемого ее типом.
Типы данных
Именование констант и переменных в программировании очень похоже на использование символических выражений в алгебре, однако, для того, чтобы компилятор смог их обрабатывать, нужно снабдить его некоторой дополнительной информацией – выполнить описание. В этой информации сообщается о типекаждой именованной величины.
Идея типов берет свое начало в математике и логике и призвана предотвращать двусмысленные и ошибочные конструкции языка программирования.
Человек, решающий какую-либо задачу вручную, обладает интуитивной способностью быстро разобраться в типах данных и тех операциях, которые для каждого типа справедливы. Например, нельзя извлечь квадратный корень из слова или написать число с заглавной буквы. Одна из причин, позволяющих легко провести такое распознавание, состоит в том, что слова, числа, даты, время и другие данные для человека выглядят по-разному. Однако для компьютера все типы данных сводятся, в конечном счете, к последовательности битов, образующих байты – содержимому ячеек памяти. Поэтому в программах различие в типах следует делать явным.
Паскаль, как и другие языки программирования высокого уровня, позволяет отвлечься от представления данных в виде последовательности бит – двоичных разрядов, наилучшего с точки зрения компьютера. При написании программы программист может использовать понятия, соответствующие терминам решаемой задачи: целое и вещественное число, массив, запись, файл, множество. Это существенно упрощает решение. Естественно, что в конце концов они отображаются на конкретное битовое представление.
Таким образом, типопределяетмножество значений, которые могут принимать объекты программы (константы, переменные), а такжесовокупностьопераций, допустимых над этими значениями.
Как уже было сказано, в Паскале имеется пять стандартных:
целый,
вещественный,
символьный,
логический
строковый
и два нестандартных:
интервальный
перечисляемый
типов данных.
Введение концепции типов данных в Паскале привело к следующему:
каждая единица языка программирования (константа, переменная, выражение, функция) имеет только один тип. Тип определяет множество значений, которое может принимать это данное,
явное введение типов позволяет четко установить тип каждой программной единицы перед выполнением самой программы,
между каждым типом и некоторым ограниченным подмножеством операций существует однозначная связь, то есть для каждого типа определен свой ограниченный набор операций,
использование типов вносит избыточность в сам язык, но это существенно помогает при обнаружении ошибок в структуре алгоритма, реализованного в программе.