- •1. Системы счисления
- •Десятичная система счисления
- •Двоичная система счисления
- •Восьмеричная и шестнадцатеричная системы счисления
- •Перевод чисел из любой системы счисления в десятичную
- •Перевод чисел из десятичной системы счисления в любую другую
- •2. Алгебра логики
- •2.1. Логические операции
- •Инверсия
- •Конъюнкция
- •Дизъюнкция
- •Эквиваленция (равнозначность)
- •Импликация
- •Антиконъюнкция
- •Антидизъюнкция
- •2.2. Нормальные формы
- •Конъюнктивная нормальная форма
- •Дизъюнктивная нормальная форма
- •3. Классические основы построения ЭВМ
- •3.1. Машина Тьюринга
- •Основные положения машины Тьюринга
- •3.2. Автомат Неймана
- •3.3 Архитектура классической ЭВМ
- •4. Применение средств алгебры логики для описания функционирования устройств компьютера
- •Логические схемы
- •Построение логических схем
- •5. Введение в алгоритмизацию
- •6. Знакомство со средой Турбо Паскаль
- •6.1. Общие сведения
- •6.2. Запуск Турбо-Паскаля на выполнение
- •6.3. Назначение функциональных клавиш системы Турбо-Паскаль
- •6.4. Работа с текстовым редактором Турбо-Паскаля
- •Клавиши перемещения курсора
- •Работа с блоками текста
- •7. Основы алгоритмизации
- •7.1. Алгоритм
- •7.2. Алгоритмические структуры
- •8. Программирование на языке Pascal
- •8.1. Алфавит языка
- •8.2. Арифметические выражения и правила их записи
- •Знаки операций
- •Операции div и mod
- •8.3. Типы данных
- •Целые типы
- •Логический тип
- •Символьный тип
- •Строковый тип
- •Вещественный тип
- •8.4. Стандартные функции
- •8.5. Структура программы на языке Паскаль
- •8.6. Описательная часть программы
- •8.7. Исполнительная часть программы
- •8.8. Оператор присваивания
- •8.9. Операторы ввода-вывода
- •Оператор ввода
- •Оператор вывода
- •8.10. Комментарии в программе
- •9. Ветвления
- •9.1. Операторы условия и перехода
- •Логический оператор
- •Операции отношения
- •Логические операции
- •9.2. Оператор выбора
- •10. Циклические вычислительные процессы
- •10.1. Оператор цикла с параметром
- •10.2. Оператор цикла с постусловием
- •10.3. Оператор цикла с предусловием
- •10.4. Вложенные циклы
- •10.5. Оператор прерывания цикла
- •11. Операции с индексированными переменными
- •11.1. Массивы одномерные
- •11.2. Описание массивов
- •Ввод элементов массива
- •Вывод элементов массива
- •11.3. Обработка одномерных массивов
- •12. Двумерные массивы
- •12.1. Матрицы
- •12.2. Описание двумерного массива
- •Ввод элементов двумерного массива
- •Вывод элементов двумерного массива
- •12.3. Обработка двумерных массивов
- •13. Подпрограммы
- •13.1. Функции и процедуры
- •Структура программы, содержащей процедуру (функцию)
- •13.2. Процедуры
- •13.3. Вложенные процедуры
- •Директива forward
- •13.4. Функции
- •14. Обработка строк текста
- •14.1. Символьные переменные
- •Фрагмент таблицы ASCII-кодов букв латинского алфавита
- •Фрагмент таблицы ASCII-кодов букв русского алфавита
- •14.2. Функции обработки символьных переменных
- •14.3. Строковые переменные
- •14.4. Функции обработки строковых переменных
- •14.5. Процедуры обработки строковых переменных
- •14.6. Примеры обработки строковых переменных
- •15. Структурированные типы данных
- •15.1. Записи
<имя> - уникальный идентификатор, строится по правилам составления имен простых переменных;
<список формальных параметров> - список имен переменных с указанием их типа, передающих информацию в процедуру и возвращающих результаты в основную программу.
Обращение к процедуре из основной программы:
<имя> (<список формальных параметров>);
<список фактических параметров> - список переменных или констант, разделенных запятыми. Например:
procedure prim(x:real; var s:integer; z,y:integer);
Описан заголовок процедуры где:
x, z, y - передают информацию в процедуру;
s - передает информацию в процедуру и возвращает результат - в основную (можно сказать процедура изменяет значение s, хотя значение s в основной программе может быть до процедуры и не определено).
Чтобы формальный параметр возвращал результат в основную, его необходимо описать с использованием служебного слова var.
Обращение к процедуре из основной:
prim (x, s, z, y); ( имена фактических параметров x, s, z,y - совпадают с именами формальных) или
prim (a, s1, b, 5); ( именами фактических параметров a, s1, b – не совпадают с именами формальных, а последний фактический параметр является числовой константой)
Формальные и фактические параметры должны совпадать по типу, количеству и порядку следования. Фактические параметры должны быть описаны в основной программе. Они называются глобальными переменными и доступны как в основной программе, так и в процедуре. Формальные параметры отдельно в процедуре не описываются. Время существования глобальных переменных – от начала и до конца работы программы.
Промежуточные переменные, которые используются только в процедуре, описываются в процедуре и называются локальными. Локальные переменные не доступны в основной программе. Время существования локальных переменных – от начала и до конца работы процедуры, в которой они описаны.
13.3. Вложенные процедуры
Директива forward
Если одна подпрограмма использует другую, а та, в свою очередь, использует первую, возникает проблема размещения этих процедур в программе. Какую из них поместить в программе первой? В этих случаях прибегают к директиве forward.
Например:
procedure pp1(a,b:integer):forward; procedure pp2(c: real); {Вторая процедура} var x,y:integer;
begin
…
67
pp1(x, y); |
|
end; |
|
procedure pp1; |
{Первая процедура} |
var z:real; |
|
begin |
|
… |
|
pp2 (z); |
|
end; |
|
… |
|
Задача. |
|
Задан одномерный массив вещественных чисел. Найти максимальный элемент массива и определить его номер.
Составим программу с использованием двух процедур:
•процедура ввода элементов массива;
•процедура поиска максимального элемента и определение его номера. Для передачи массива в процедуру введем пользовательский тип mas.
program PP; type
mas=array[1..100] of integer; {пользовательский тип} var { глобальные переменные }
a:mas;
max:real;
n,max,kmax:integer;
procedure input_mas(n:integer ; var a:mas ); var i:integer; {локальная переменная} begin
for i:=1 to n do readln(a[ i ]); end;
procedure max_m(n:integer; a:mas; var max,kmax:integer ); var i:integer;
begin max:=a[1];kmax:=1; for i:=1 to n do
if a[i]>max then
begin max:=a[i]; kmax:=i; end; end;
begin
writeln(‘ Введите n<=100’) ; readln( n ); writeln (‘ Введите элементы массива ‘); input_mas(n,a);
68