- •5.091405 «Обслуговування комп’ютеризованих інтегрованих та робототехнічних систем»
- •Виды алгоритмов
- •Структура програми. Алфавіт. Типи даних та операції
- •Структура программы
- •Алфавит языка
- •Знаки операций
- •Комментарии
- •Типы данных и операции
- •Описание меток
- •Описание переменных
- •Var имя переменной : тип;
- •Описание типов
- •Арифметические выражения
- •Логические выражения
- •Основные операторы
- •Операторы ввода и вывода
- •Ввод с консоли
- •Вывод на консоль
- •Форматный вывод
- •Условные операторы Условный оператор if
- •Оператор выбора case
- •Циклічні розрахункові процеси
- •Оператор цикла с параметром
- •Оператор цикла с условием
- •Регулярний тип (масив)
- •Сортировка массивов
- •Улучшенные сортировки
- •Сортировка Шелла
- •Символьный тип данных
- •Тип динамічні рядки (string)
- •Типи даних, що визначаються користувачем
- •Var Имя множества:Set of базовый тип;
- •Var Имя множества:Имя типа;
- •1. Var Имя записи:record
- •Var Имя записи:Имя типа для записи;
- •Складні програми. Робота з файлами Робота з процедурами та функціями
- •Види файлів. Робота з файлами
- •Когда нужно использовать файлы
- •Разновидности файлов
- •Открытие файла
- •Закрытие файла
- •Считывание из файла
- •Запись в файл
- •Модульна структура програми. Створення інтерфейсу користувача
- •Стандартные модули языка Pascal
- •Подключение модулей
- •Секция реализации
- •Секция инициализации
- •Взаимодействие модулей
- •Компиляция модулей
- •Пример модуля
- •Передача аргументов из командной строки
- •Створення інтерфейсу користувача Текстовый режим
- •Позиционирование
- •Ожидание
- •Пример использования текстовой графики
- •Решение
- •Создание дружественного интерфейса
- •Заставка
- •Ввод информации
- •Приглашения
- •Мова Сі Основні поняття та складові частини мови Сі
- •Структура програми на мові Сі. Елементи мови Сі
- •Типи даних та їх об"явлення. Базові типи даних.
- •1.2.1 Категории типов данных
- •Типи даних, що визначаються користувачем.
- •Вирази та присвоювання
- •Програмування на мові Сі
- •Види операторів. Умовні оператори
- •Оператори циклів
- •Оператори передачі керування
- •Процедури та функції
- •Виклик функцій зі змінною кількістю параметрів. Параметри функції main
- •Структура програми та класи пам"яті. Область життя та область видимості
- •Покажчики та операції над покажчиками
- •Масиви. Робота з масивами
- •Динамічний розподіл пам"яті. Динамічне розміщення масивів
- •Директиви препроцесора
- •Лінійні списки. Робота зі списками
- •Стеки та черги
- •Сортування та злиття списків
- •Пошук в лінійних списках
- •Технологія створення програм
- •Робота з файлами та потоками
- •Открытие файла: функция fopen
- •Константа null
- •Диагностика ошибок: функция perror
- •Функции бинарного чтения и записи fread и fwrite
- •Закрытие файла: функция fclose
- •Пример: подсчет числа символов и строк в текстовом файле
- •Форматный ввод-вывод: функции fscanf и fprintf
- •Понятие потока ввода или вывода
- •Функции scanf и printf ввода и вывода в стандартные потоки
- •Функции текстового преобразования sscanf и sprintf
- •Другие полезные функции ввода-вывода
- •Робота з рядками
- •Определение типов символов
- •Пример: программа "Записная книжка"
- •Аргументы командной строки
Var Имя множества:Set of базовый тип;
или
Type Имя типа=Set of базовый тип;
Var Имя множества:Имя типа;
Например:
Type
TM=Set of 1..100;
TS=Set of 'a'..'z';
Var Mch:TM; {Множество целых чисел от 1 до 100}
MSym:TS; {Множество строчных латинских букв}
M: Set of 1..10; {Множество целых чисел от 1 до 10}
Значения переменных множества задаются в разделе операторов с помощью конструктора множества, который представляет собой список элементов базового типа, заключенный в квадратные скобки.
Например:
Var M1,M2,M3:set of 1..99;
Begin . . .
M1:=[]; { Множество пустое}
M2:=[1,3,5,7,9]; { Множество нечетных чисел в первом десятке}
M3:=[2,4,6,8]; { Множество четных чисел в первом десятке}
. . .
End.
В качестве элементов в изображении множеств допускается использовать константы и выражения, тип которых совместим с базовым типом.
Типизированная константа - множество задается в виде правильного конструктора множества, например:
Type
Type_month=(Jn,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec);
TDays=Set of 1..31;
Tmonth=Set of 1..12;
Tsym=Set of 'A'..'Z';
Tmno=Set of Type_month;
Const
SymMno:Tsym=['A','E','I','O','U']; {подмножество гласных букв}
DaysMno:TDays=[1,8,15,22,29]; {подмножество выходных дней месяца}
Spring_Mes:Tmonth=[3,4,5]; {подмножество весенних месяцев года}
Spring_Month:Tmno=[Mar,Apr,May]; {то же, что и предыдущее}
Над множествами определены следующие операции:
-
- пересечение множеств: результат содержит элементы, общие для обоих множеств. Например: пусть имеется описание:
Var S1,S2,S3,S4,S5:Set of 1..10;
Begin
S1:=[1,3,4,6];
S2:=[2,4,5,1];
S3:=S1*S2; - в S3 будет содержаться [1,4].
-
- объединение множеств : результат содержит элементы первого множества, дополненные недостающими элементами из второго множества:
S4:=S1+S2; - в S4 будет содержаться [1,3,4,6,2,5].
-
- разность множеств: результат содержит элементы из первого множества, которые не принадлежат второму:
S5:=S1-S2; - в S5 будет содержаться [3,6].
-
- проверка эквивалентности (или равенства): возвращает TRUE, если оба множества эквивалентны, т.е. содержат все одинаковые элементы.
-
<> - проверка неэквивалентности (или неравенства): возвращает TRUE, если оба множества неэквивалентны, т.е. содержат неодинаковые элементы.
-
<= - проверка вхождения: возвращает TRUE, если первое множество включено во второе (т.е. все элементы первого множества присутствуют также и во втором).
-
>= - проверка вхождения: возвращает TRUE, если второе множество включено в первое.
-
IN - проверка принадлежности элемента множеству. Эта операция возвращает результат TRUE, если элемент (или выражение), стоящий слева принадлежит множеству, указанному справа.
Дополнительно к этим операциям можно использовать две процедуры:
Include - включает новый элемент во множество: Include(M,elem);
где М - множество элементов некоторого базового типа, а elem - элемент того же типа, который необходимо включить в множество М.
Exclude - исключает элемент из множества: Exclude(M,elem).
В отличие от операций "+" и "-", реализующих аналогичные действия над двумя множествами, эти процедуры оптимизированы для работыс одиночными элементами множества и поэтому отличаются высокой скоростью выполнения.
Основным достоинством использования множеств является экономия памяти: внутренне устройство множества таково, что каждому его элементу ставится в соответствие один двоичный разряд (один бит). Если элемент включен в множество, то соотвествующий разряд имеет значение 1, в противном случае - 0. Минимальной единицей памяти является 1 байт, содержащий 8 бит, поэтому для хранения множества мощностью 256 элементов выделяется память 32 смежных байта.
Рассмотрим работу с множествами на следующем примере.
Из множества целых чисел от 1 до 20 выделить:
-
множество чисел, делящихся на 2 и 3 одновременно;
-
множество чисел, делящихся на 2 или на 3.
Первая задача соответствует нахождению пересечения множеств чисел, одно из которых содержит числа, делящиеся на 2, а другое на 3. Вторая - объединению этих двух множеств.
Обозначим множество чисел, делящихся на 2 через М2; множество чисел, делящихся на 3 через М3; множество чисел, делящихся на 2 и 3 через М2and3; множество чисел, делящихся на 2 или 3 через М2or3.
Текст программы
Type TM=Set of 1..20; {Описание типа множества целых чисел от 1 до 20}
Var M2,M3,M2and3,M2or3:TM; {Описание множеств}
k:1..20; {Описание переменной}
Begin
M2:=[]; M3:=[]; {Пустые множества}
for k:=1 to 20 do
begin
if k mod 2 = 0 then Include(M2,k); {Включение элемента делящегося на 2 в
множество М2}
if k mod 3 = 0 then Include(M3,k); { Включение элемента делящегося на 3 в
множество М3}
end;
M2and3:=M2*M3; {Пересечение двух множеств}
M2or3:=M2+M3; {Объединение двух множеств}
write(' На 2 и 3 делятся числа: ');
for k:=1 to 20 do { Цикл для опеределения элементов в множестве}
if k in M2and3 then write(k:3); { вывод элементов делящихся на 6}
writeln; {Переход на новую строку экрана}
write(' На 2 или 3 делятся числа: ');
for k:=1 to 20 do
if k in M2or3 then write(k:3); readln; {Остановка для просмотра}
End.
Тип данных - записи, их описание и использование. Оператор присоединения
Запись - это структура данных, состоящая их фиксированного числа компонентов, называемых полями. Запись имеет имя. Каждое поле записи также имеет имя. Обращение к любому элементу записи осуществляется по составному имени, имеющему вид:
Имя записи.Имя поля
В отличие от массива компоненты (поля или элементы) записи могут быть различного типа. Записи удобно использовать в тех случаях, когда необходимо описать атрибуты (характеристики или свойства) одного объекта, имеющие различный тип.
Запись может быть объявлена в разделе Var или в разделах Type и Var, одновременно.