- •Лекция 1. Структура программы на языке Turbo Pascal
- •Лекция 2. Процедуры ввода-вывода. Некоторые встроенные функции Турбо-Паскаля.
- •Лекция 3. Операторыусловного выполнения.
- •1. Оператор if.
- •2. Оператор выбора (case)
- •Лекция 4. Операторыциклов в Паскале
- •1. Цикл с постусловием (Repeat)
- •2. Цикл с предусловием (While)
- •3. Цикл со счетчиком (For)
- •Лекция 5. Символьные и строковые переменные
- •1. Символьный тип
- •2. Строковый тип
- •Лекция 6. Перечисляемый и ограниченный типы
- •1. Перечисляемый тип
- •2. Ограниченный тип
- •Лекция 7.Массивы
- •1. Понятие массива. Одномерные массивы
- •2. Многомерные массивы
- •3. Сортировка и поиск
- •Лекция 8. Тип запись
- •Лекция 9. Процедуры и функции
- •Лекция 10. Модуль crt
- •1. Управление экраном
- •2. Работа с клавиатурой
- •3. Другие возможности
- •Лекция 11. Графика в Турбо Паскале
- •1. Включение и выключение графического режима.
- •2. Построение элементарных изображений
- •3. Вывод текстовой информации.
- •Лекция 12. Текстовые файлы
- •1. Объявление файловой переменной и привязка к файлу на диске
- •2. Чтение данных из файла
- •3. Записьданных в файл
- •Лекция 13. Двоичные файлы
- •1. Типизированные файлы
- •2. Нетипизированные файлы
- •Лекция 14. Модули в Турбо Паскале
- •Лекция 15. Динамические переменные
- •Динамические структуры данных
- •Лекция 16. Динамические переменные: другие виды списков, стек и очередь.
- •1. Другие виды списков
- •2. Стек и очередь
- •Лекция 17. Деревья и поиск в деревьях
- •Лекция 18. Таблицы и простейшие алгоритмы поиска.
- •1. Определения и описания структур данных
- •1. Массив
- •2. Список
- •3. Дерево
- •2. Алгоритмы
- •1. Линейный поиск в массиве
- •2. Двоичный поиск
- •3. Линейный поиск в списке
- •Лекция 19. Перемешанные таблицы
2. Ограниченный тип
Этот тип также рассмотрим на примере. Пусть в некоторой переменной нужно хранить текущее число, то есть номер дня в месяце. В Турбо Паскале можно задать тип DaysInMonth = 1..31;. Переменные и константы этого типа могут принимать только такие значения, если попытаться задать что-либо другое, то компилятор выдаст ошибку. В качестве границ могут употребляться и отрицательные числа, напримерTemperature=-60..50;
В качестве базовоготипа (то есть типа, из которого выбирается диапазон значений) могут использоваться почти всепорядковыетипы, то есть те, которые хранятся в виде целых чисел. К порядковым типам относятся: все целые типы (byte, integer, и т. п.),char, boolean, перечисляемые типы и ограниченные типы. В качестве базового типа нельзя использовать лишь сам ограниченный тип (трудно представить, как это можно сделать). С учетом этого правила допустимы такие объявления типов:
type SmallLatin = 'a'..'z'; {малые латинские буквы}
MyBoolean = True..False; {хотя это и бессмысленно}
Holidays = Sat..Sun; {выходные}
Нельзя в качестве базового типа употребить какой-либо вещественный тип, следующее объявление приведет к ошибке:
type Wrong = -1.25..1.25;
Заметим, что функции Ord, Succ иPred могут применяться к любым порядковым типам, и, в частности, к ограниченным.
Лекция 7.Массивы
1. Понятие массива. Одномерные массивы
Массивы являются представителями структурированных типов данных, то есть таких, переменные которых составлены из более простых элементов согласно определённому порядку. Для массивов характерно то, что они являются совокупностью некоторого числа одинаковыхэлементов. В простейшем случае эти элементы могут быть занумерованы натуральными числами из некоторого диапазона. Рассмотрим пример такой переменной в Турбо Паскале:
var a: array [1..10] of real;
Переменная a состоит из десяти ячеек типаreal, можно записывать и извлекать значения из них, пользуясь записью a[<номер ячейки>].
Пример 1. Поиск наибольшего числа среди элементов массива.
program FindMaximumInArray;
var a: array[1..10] of real;
i,max: integer;
begin
for i:=1 to 10 do begin
write('Введите элемент номер ',i,' -> ');
readln(a[i]);
end;
max:=a[1];
for i:=2 to 10 do
if a[i]>max then max:=a[i];
writeln('Максимум равен ',max);
readln;
end.
В качестве типа элементов массива можно использовать все типы, известные нам на данный момент (к ним относятся все числовые, символьный, строковый и логический типы).
Нумеровать элементы массивов можно не только от единицы, но и от любого целого числа. Вообще для индексов массивов подходит любой порядковый тип, то есть такой, который в памяти машины представляется целым числом. Единственное ограничение состоит в том, что размер массива не должен превышать 64 Кб. Рассмотрим некоторые примеры объявления массивов.
var Numbers: array [0..1000] of integer;
Names: array [1..10] of string;
Crit: array[shortint] of boolean;
CountAll: array[char] of integer;
Count: array['a'..'z'] of integer;
В следующем примере показано для чего может понадобиться последний тип.
Пример 2. Подсчет количества различных букв в строке.
program CountLetters;
var s: string;
count: array['a'..'z'] of byte;
ch: char;
i: byte;
begin
write('Введите строку > ');
readln(s);
for i:=1 to length(s) do
if (s[i]>='a')and(s[i]<='z') then inc(count[s[i]]);
writeln('Количество различных букв в строке: ');
for ch:='a' to 'z' do
if count[ch]<>0 then
writeln(ch,': ',count[ch]);
readln;
end.
