- •1. Системы счисления
- •Десятичная система счисления
- •Двоичная система счисления
- •Восьмеричная и шестнадцатеричная системы счисления
- •Перевод чисел из любой системы счисления в десятичную
- •Перевод чисел из десятичной системы счисления в любую другую
- •2. Алгебра логики
- •2.1. Логические операции
- •Инверсия
- •Конъюнкция
- •Дизъюнкция
- •Эквиваленция (равнозначность)
- •Импликация
- •Антиконъюнкция
- •Антидизъюнкция
- •2.2. Нормальные формы
- •Конъюнктивная нормальная форма
- •Дизъюнктивная нормальная форма
- •3. Применение средств алгебры логики для описания функционирования устройств компьютера
- •Логические схемы
- •Построение логических схем
- •4. Практическая работа 1. Системы счисления
- •Вопросы для самоконтроля
- •5. Практическая работа 2. Алгебра логики
- •Решение логических задач средствами алгебры логики
- •Индивидуальное задание к модулю 1. Построение логических схем по заданным булевым выражениям
- •Приложение 1. Практическое занятие 1 «Системы счисления»
- •Приложение 2. Практическое занятие 2 «Алгебра логики»
- •Приложение 3. Индивидуальное задание. Модуль №1
- •Приложение 4
- •6. Введение в алгоритмизацию
- •7. Знакомство со средой Турбо Паскаль
- •7.1. Общие сведения
- •7.2. Запуск Турбо-Паскаля на выполнение
- •7.4. Работа с текстовым редактором Турбо-Паскаля
- •Клавиши перемещения курсора
- •Работа с блоками текста
- •8. Основы алгоритмизации
- •8.1. Алгоритм
- •8.2. Алгоритмические структуры
- •Самоконтроль
- •9.1. Алфавит языка
- •9.2. Арифметические выражения и правила их записи
- •Знаки операций
- •Операции div и mod
- •9.3. Типы данных
- •Целые типы
- •Логический тип
- •Символьный тип
- •Строковый тип
- •Вещественный тип
- •9.4. Стандартные функции
- •9.5. Структура программы на языке Паскаль
- •9.6. Описательная часть программы
- •9.7. Исполнительная часть программы
- •9.8. Оператор присваивания
- •9.9. Операторы ввода-вывода
- •Оператор ввода
- •Оператор вывода
- •9.10. Комментарии в программе
- •Самоконтроль
- •Задание
- •Пример программы линейной структуры
- •Приложение 1. Таблица вариантов задания №2
- •10. Ветвления
- •10.1. Операторы условия и перехода
- •Логический оператор
- •Операции отношения
- •Логические операции
- •10.2. Оператор выбора
- •Самоконтроль
- •Задание
- •Пример программы разветвленной структуры
- •Приложение 1. Таблица вариантов задания 3
- •11.2. Оператор цикла с постусловием
- •11.3. Оператор цикла с предусловием
- •11.4. Вложенные циклы
- •11.5. Оператор прерывания цикла
- •Самоконтроль
- •Задание
- •Пример программы циклической структуры
- •Приложение 1. Таблица вариантов задания 4
- •12. Операции с индексированными переменными
- •12.1. Массивы одномерные
- •12.2. Описание массивов
- •Ввод элементов массива
- •Вывод элементов массива
- •12.3. Обработка одномерных массивов
- •Самоконтроль
- •Задание
- •Пример программы обработки одномерного массива
- •Приложение 1. Таблица вариантов задания 5
- •13. Двумерные массивы
- •13.1. Матрицы
- •13.2. Описание двумерного массива
- •Ввод элементов двумерного массива
- •Вывод элементов двумерного массива
- •13.3. Обработка двумерных массивов
- •Самоконтроль
- •Задание
- •Пример программы обработки двумерного массива
- •Приложение 1. Таблица вариантов задания 6
- •Структура программы, содержащей процедуру (функцию)
- •14.2. Процедуры
- •14.3. Вложенные процедуры
- •Директива forward
- •14.4. Функции
- •Самоконтроль
- •Задание
- •Пример программы с использованием подпрограмм
- •Приложение 1. Таблица вариантов задания 7
- •15. Обработка строк текста
- •15.1. Символьные переменные
- •Фрагмент таблицы ASCII-кодов букв латинского алфавита
- •Фрагмент таблицы ASCII-кодов букв русского алфавита
- •15.2. Функции обработки символьных переменных
- •15.3. Строковые переменные
- •15.4. Функции обработки строковых переменных
- •15.5. Процедуры обработки строковых переменных
- •15.6. Примеры обработки строковых переменных
- •Самоконтроль
- •16. Структурированные типы данных
- •Записи
- •Самоконтроль
- •Задание
- •Пример программы использования массива записей
- •Приложение 1
- •Приложение 2. Таблица вариантов ИДЗ 2
процедура ввода элементов массива; процедура поиска максимального элемента и определение его номера.
Для передачи массива в процедуру введем пользовательский тип 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);
max_m(n,a,max,kmax ); writeln(‘max=’,max,‘kmax=’,kmax); readln;
end.
14.4. Функции
Если результатом подпрограммы является только одно значение, то имеет смысл оформить такую подпрограмму в виде функции.
Первая строка любой функции:
function <имя >(<список формальных параметров> ):<тип>;
<список формальных параметров> - список имен переменных с указанием их типа, передающих информацию в функцию;
92
<имя> - возвращает результат в основную программу; <тип> - тип возвращаемого результата.
Обращение из основной программы к функции возможно в структуре какого либо оператора, например оператора присваивания:
<переменная>:= <имя> (список фактических параметров);
Функция возвращает в основную программу только один результат через переменную, являющуюся именем функции. Эта переменная не должна быть описана в основной программе. В описательной части функции этой переменной должно быть присвоено какое-либо значение, иначе функция не возвращает никакого значения.
Задача.
Составить программу вычисления n! с использованием функции. n! = 1* 2 * 3 * …* n
program factorial;
{описательная часть основной программы} var
n,k:integer;
function fun(k:integer):integer; {описательная часть подпрограммы} var
p,i:integer; begin
{исполнительная часть подпрограммы} p:=1;
for i:=1 to k do p:=p*i; fun:=p;
end;
{ исполнительная часть основной программы } begin
writeln('введите n'); readln(n);
for k: = 1 to n do writeln(fun(k)); end.
n, k - глобальные переменные. p, i - локальные переменные.
fun - имя функции, возвращает результат в основную программу.
Имя функции в теле функции в операторах присваивания может стоять только слева от знака «:=» , поэтому использована дополнительная переменная p для подсчета произведения.
93
Самоконтроль
1.В каких случаях прибегают к построению подпрограмм?
2.В каком месте программы располагаются функции или процедуры?
3.Что такое процедура?
4.Какова структура процедуры?
5.Как передается информация в процедуру?
6.Каким образом возвращаются результаты работы процедуры в основную программу?
7.Какое соответствие должно быть между формальными и фактическими параметрами?
8.Какие переменные называются глобальными? Время существования глобальных переменных?
9.Какие переменные называются локальными? Время существования локальных переменных?
10.Когда используют директиву forward?
11.В каких случаях целесообразно прибегать к построению функций?
12.Как передается информация в функцию?
13.Каким образом возвращается результат работы функции в основную программу?
Задание
•ответить на вопросы самоконтроля;
•выполнить практическое задание №8, используя пример программы с использованием подпрограмм. Задание выбрать из таблицы по номеру варианта (Приложение1).
Пример программы с использованием подпрограмм
Задача.
1. Формулировка задачи:
Задан двумерный массив целых чисел. Определить количество четных чисел в массиве. Составим: процедуру ввода элементов массива; функцию подсчета количества четных чисел; процедуру вывода двумерного массива в виде матрицы.
2. |
Таблица идентификаторов |
|
||
|
|
|
|
|
|
|
№ |
Наименование переменной |
Обозначения в программе |
|
|
1 |
Имя массива |
a |
|
|
2 |
Количество строк |
n |
|
|
3 |
Количество столбцов |
m |
|
|
4 |
Индексы массива |
I,j |
3. |
Листинг программы. |
|
program pp_1; type
mas=array[1..10,1..10] of integer; var
94