
- •Часть 1
- •1. With elem 50
- •2.1. Если поступившая запись предшествует корневой, идти в левое 98
- •2.2. Иначе – в правое поддерево. 98
- •Введение Основные этапы решения задач на эвм
- •Языки программирования
- •Трансляторы
- •1. Общие сведения о языке паскаль
- •1.1. Алфавит языка. Идентификаторы и зарезервированные слова
- •2. Данные в паскале. Простые типы данных
- •2.1. Целочисленный тип
- •2.2. Вещественный тип
- •2.3. Логический тип
- •2.4. Символьный тип
- •2.5. Перечисляемый тип
- •Var m1, m2: metall;
- •2.6. Ограниченный (диапазонный) тип данных
- •Над значениями ограниченного типа допустимы те же операции, что и над значениями базового типа, используемыми при задании в разделе определения типов. Если, к примеру, задано определение:
- •Var y:bukva;
- •3. Операции и выражения
- •2.1. Целочисленный тип
- •3.2. Арифметические выражения и операции
- •3.3. Логические операции и выражения
- •3.4. Операции отношения
- •3.5. Стандартные функции
- •3.6. Приоритеты операций
- •4. Структура программы
- •4.1. Раздел определения констант
- •4.2. Раздел определения типов
- •4.3. Раздел описания переменных
- •V: boolen;
- •4.4. Раздел описания процедур и функций
- •4.5. Раздел операторов
- •4.6. Директивы компилятора и управляющие символы
- •5. Операторы языка паскаль
- •5.1. Оператор присваивания
- •5.2. Оператор вывода информации
- •5.3. Оператор ввода информации
- •5.4. Составной оператор
- •5.5. Условный оператор
- •5.6. Оператор варианта case
- •5.7. Операторы цикла
- •5.7.1. Оператор цикла по счетчику (цикл с параметром )
- •Иденти-фикатор перемен-ной
- •I,n:integer; {I -пар-р цикла, n - его кон.Занч.}
- •X,s,p;integer;
- •5.7.2. Оператор цикла с предусловием
- •Пример составления таблицы переменных
- •Var a,Summa:real;
- •Inc (Summa, a);
- •5.7.3. Оператор цикла с постусловием
- •X,Summa:real;
- •6. Структурированные типы данных
- •6.1. Массивы
- •I,ne:integer;
- •6.1.1. Сортировка массивов
- •Vr:char;
- •Vr : char;
- •6.2. Строки
- •6.3. Множества
- •I : byte;
- •6.4. Записи
- •With elem
- •7. Типизированные константы
- •7.1. Типизированные константы скалярных типов
- •7.2. Типизированные константы - массивы и строки
- •7.3. Типизированные константы – множества
- •Var a: hvor;
- •I, j, k, simp: byte;
- •7.4. Типизированные константы – записи
- •8. Файлы
- •8.1. Типизированные файлы
- •8.2. Текстовые файлы
- •Var f : text;
- •9. Подпрограммы
- •9.1. Процедуры и функции
- •9.2. Процедуры и функции пользователя
- •Var p: real;
- •Var p: real;
- •9.3. Параметры подпрограмм
- •Var X: real; m: integer;
- •Var I : integer;
- •10. Рекурсии
- •10.1. Рекурсивные алгоритмы и определения
- •10.2. Рекурсивные процедуры и функции
- •Var f : longint ;
- •Var a, y, z : real;
- •10.3. Виды рекурсивных процедур
- •If условие
- •If условие
- •If условие then Recur ; then begin
- •Var k : integer;
- •Var c : char;
- •Var c : char;
- •11. Графика в паскале
- •11.1. Основы работы в графическом режиме
- •11.1.1. Аппаратная и программная поддержка графики
- •11.1.2. Запуск графической системы
- •Var Driver, Mode: integer;
- •Init Graph (Driver, Mode, Path);
- •11.1.3. Обработка ошибок
- •11.1.4. Закрытие видеорежима
- •11.2. Система координат дисплея
- •11.3. Экран и окно
- •11.4. Установка цвета, заполнения и палитры
- •11.5. Построение простейших геометрических образов
- •11.6. Работа с текстом OutText (X,y:integer; txt:string) – вывести строку txt с текущего положения указателя.
- •11.7. Вывод числовых значений
- •12. Программные модули
- •12.1. Структура программного модуля
- •Interface –интерфейсные раздел («видимая» часть модуля)
- •Implementation – раздел реализации («черный ящик»)
- •Interface
- •Var X:integer;
- •Implementation
- •Interface
- •X: integer;
- •Implementation
- •12.3. Ссылки на модули
- •Unit hlp _ sr;
- •Xa, ya, xb, yb, xc, yc: integer;
- •13. Динамическая память
- •Var a1: array[1..300,1..300] of integer.
- •13.1. Адресация памяти
- •13.2. Указатели
- •13.2.1. Операции с указателями
- •13.2.2. Нетипизированные указатели
- •X: integer;
- •13.2.3. Типизированные указатели
- •13.3. Создание и уничтожение динамических переменных
- •X: real;
- •13.4. Администратор кучи
- •Heapend содержит адрес конца кучи
- •13.5. Примеры использования указателей
- •Объявление
- •Var Pr:preco;
- •14. Использование указателей для организации связанных динамических структур
- •14.1. Списки
- •14.1.1. Алгоритмы работы со списками
- •14.2. Организация стека в динамической памяти
- •Var p, st :pstack; {st - указатель на вершину стека}
- •I: integer;
- •14.3. Очереди
- •14.4. Деревья
- •14.4.1. Организация деревьев в динамической памяти
- •14.4.2. Построение полного двоичного дерева
- •I,j :I nteger; I - значение инф. Поля очередной
- •Var p,h:pstack;
- •Inc(I); {создаем новый узел – вершину}
- •Inc(j); {переместим указатель t и переход
- •14.4.3. Алгоритмы работы с двоичными упорядоченными деревьями (деревьями поиска)
- •14.4.4. Рекурсивные алгоритмы работы с двоичными деревьями
- •I, X : integer;
- •Литература
- •Часть 1. Язык программирования Паскаль
Языки программирования
Чтобы персональный компьютер (ПК) выполнил решение какой-либо задачи, ему необходимо получить от человека инструкции, как её решать. Набор таких инструкций для компьютера, направленный на решение конкретной задачи, называется компьютерной программой.
Современные компьютеры не настолько совершенны, чтобы понимать программы, написанные на каком-либо употребляемом человеком языке.
Команды, записанные для ЭВМ, необходимо представлять в понятной компьютеру форме. С этой целью применяют языки программирования – искусственные языки, алфавит, словарный запас и структура которых удобны и понятны компьютеру.
В самом общем смысле языком программирования называется фиксированная система обозначений и правил для описания алгоритмов и структур данных.
Языки программирования должны быть понятны и человеку, и ЭВМ. Они делятся на языки низкого и высокого уровня.
Язык низкого уровня – средство записи программы простыми приказами – командами на аппаратном уровне. Такой язык отражает структуру данного класса ЭВМ и поэтому иногда называется машинно-ориентированным языком. Пользуясь системой команд, понятной ПК, можно описать алгоритм любой сложности, но такая запись для сложных задач будет очень громоздкой и мало приспособленной для использования человеком.
Существенной особенностью языков низкого уровня является жесткая ориентация на определённый тип аппаратуры (систему команд процессора).
Чтобы приспособить язык программирования низкого уровня к человеку, был разработан язык символичного кодирования – язык Ассемблер. Структура команд Ассемблера определяется форматами команд и данных машинного языка.
Программа на Ассемблере ближе человеку, потому что операторы этого языка – те же коды, но они имеют мнемонические названия; используются не конкретные адреса, а их символьные имена.
Многочисленную группу составляют языки программирования высокого уровня. Средства таких языков допускают описание задачи в наглядном, легко воспринимаемом виде.
Отличительной особенностью этих языков является ориентация не на систему команд той или иной ЭВМ, а на систему операторов, характерных для записи определённого класса алгоритмов.
К языкам программирования этого типа относятся Бейсик, Фортран, Паскаль, Си и др. Программа на языках высокого уровня записывается системой обозначений, понятной человеку (например, фиксированным набором слов английского языка).
Все вышеперечисленные языки – вычислительные. Более молодые – декларативные (непроцедурные) языки. Их отличительная черта – задание связей и отношений между объектами и величинами и отсутствие определенной последовательности действий (один из первых – Пролог, затем C++, Delphi, Visual Basic). Эти языки дали толчок к разработке специальных языков искусственного интеллекта и языков представления знаний.
Трансляторы
Текст программы, записанный на Паскале, не может быть воспринят ЭВМ непосредственно, требуется перевести его на машинный язык.
Перевод программы с языка программирования на язык машинных кодов называется трансляцией (translation – перевод) и выполняется специальными программами – трансляторами.
Существует три вида трансляторов: интерпретаторы, компиляторы, ассемблеры.
Интерпретатором называется транслятор, производящий покомандную обработку и выполнение исходной программы.
Компилятор преобразует (транслирует) всю программу в модуль на машинном языке, после этого программа записывается в память ПК и лишь потом выполняется.
Ассемблеры переводят программу, записанную на языке автокода, в программу на машинном языке.
Любой транслятор решает следующие основные задачи:
– анализирует транслируемую программу, в частности, проверяет, содержит ли она синтаксические ошибки;
– генерирует выходную программу (её часто называют объектной или рабочей) на языке команд ЭВМ;
– распределяет память выходной программы, в простейшем случае – назначает каждому фрагменту программы (переменным, константам и другим объектам) свои адреса в памяти.