- •1.Этапы разработки компьютерной программы.
- •2.Алгоритмы и их свойства.
- •3.Формы существования алгоритмов; Блок-схемы; Примеры записи алгоритма в виде блок схемы.
- •4.Классификация алгоритмических языков.
- •5.Понятие структурного программирования.
- •6.Характеристика алгоритмического языка Паскаль.
- •7.Элементы языка Паскаль (алфавит, индентификаторы, константы, выражения, операции).
- •8.Структура программ, при использовании для разработки программы алгоритмического языка Паскаль.
- •9.Операторы Паскаля.
- •1. Составной и пустой операторы
- •2. Операторы ветвлений
- •3. Операторы повторений
- •10.Ввод и вывод данных в Паскале.
- •11.Операторы Паскаля: составной оператор и пустой оператор.
- •12. Операторы Паскаля: условный оператор.
- •13. Операторы Паскаля: операторы повторений.
- •14. Операторы Паскаля: операторы цикла с предусловием.
- •16. Операторы Паскаля: оператор цикла с постусловием (repeat… until).
- •17.Операторы Паскаля: оператор цикла с параметрами (for …to …do).
- •18. Операторы Паскаля: оператор безусловного перехода, метки. Оператор безусловного перехода goto
- •19.Подпрограммы в Паскале.
- •20.Процедуры в Паскале.
- •21.Функции в Паскале.
- •Описание и вызов процедур и функций
- •22.Типы данных в Паскале: простые типы.
- •23. Типы данных в Паскале: структурированные типы. Массивы.
- •24. Типы данных в Паскале: структурированные типы. Записи.
- •25. Типы данных в Паскале: структурированные типы. Множества.
- •26. Типы данных в Паскале: структурированные типы. Файлы (понятие файла, доступ к файлу, процедуры и функции для работы с файлами).
- •27. Типы данных в Паскале: структурированные типы. Файлы (текстовые, типизированные, нетипизированые).
- •28.Аппарат формальных и фактических параметров при работе с подпрограммами.
- •Назначение подпрограмм.
- •Механизм подпрограмм, их описание и вызов
- •Параметры подпрограмм ]Назначение параметров
- •[Править]Формальные и фактические параметры
- •[Править]Способ передачи параметров в подпрограмму
- •[Править]Виды подпрограмм
- •29.Массивы.
- •30.Сортировки массивов. Прямые методы сортировки.
- •31.Сортировка вставкой.
- •32.Сортировка массивов. Прямые методы сортировки.
- •33.Сортировка обменом.
- •34.Сортировка массивов. Прямые методы сортировки
- •35. Сортировка выбором.
- •36.Двоичный поиск в массиве.
- •37. Поиск данных в массиве по ключу.
- •38.Средства тп для работы с файлами.
- •39.Классификация структур данных в Паскале.
- •40.Данные статической структуры в Паскале.
- •41.Переменные строкового типа.
- •42.Динамические структуры данных в Паскале.
- •43.Динамическая память. Понятия адреса и указателя. Объявление указателей. Динамическая память
- •Адреса и указатели
- •Объявление указателей
- •44.Динамическая память. Выделение и освобождение динамической памяти.
- •45.Процедуры и функции для работы с динамической памятью.
- •46.Связанные динамические данные.
- •47. Связанные динамические данные: очередь.
- •Принципы работы с динамической очередью
- •48. Связанные динамические данные: стек.
- •Описание стека
- •Работа с динамическим стеком
- •49. Связанные динамические данные: списки. Динамические структуры данных
- •Классификация структур данных
- •Данные динамической структуры:
- •Статические и динамические переменные в Паскале
- •Указатели
- •Объявление указателей
- •Выделение и освобождение динамической памяти
- •Присваивание значений указателю
- •Операции с указателями
- •Присваивание значений динамическим переменным
- •Динамические структуры
- •Описание списка
- •Формирование списка
- •Просмотр списка
- •Удаление элемента из списка
- •Динамические объекты сложной структуры
- •50. Связанные динамические данные: деревья.
- •51.Понятие рекурсии, примеры рекурсивных алгоритмов.
22.Типы данных в Паскале: простые типы.
23. Типы данных в Паскале: структурированные типы. Массивы.
Массивы - это совокупности однотипных элементов. Характеризуются они следующим:
каждый компонент массива может быть явно обозначен и к нему имеется прямой доступ;
число компонент массива определяется при его описании и в дальнейшем не меняется.
Для обозначения компонент массива используется имя переменной-массива и так называемые индексы, которые обычно указывают желаемый элемент. Тип индекса может быть только порядковым (кроме longint). Чаще всего используется интервальный тип (диапазон).
Описание типа массива задается следующим образом:
type
имя типа = array[ список индексов ] of тип
Здесь имя типа - правильный идентификатор; список индексов - список одного или нескольких индексных типов, разделенных запятыми; тип - любой тип данных.
Вводить и выводить массивы можно только поэлементно.
Пример 1. Ввод и вывод одномерного массива.
const
n = 5;
type
mas = array[1..n] of integer;
var
a: mas;
i: byte;
begin
writeln('введите элементы массива');
for i:=1 to n do readln(a[i]);
writeln('вывод элементов массива:');
for i:=1 to n do write(a[i]:5);
end.
Определить переменную как массив можно и непосредственно при ее описании, без предварительного описания типа массива, например:
var a,b,c: array[1..10] of integer;
Если массивы a и b описаны как:
var
a = array[1..5] of integer;
b = array[1..5] of integer;
то переменные a и b считаются разных типов. Для обеспечения совместимости применяйте описание переменных через предварительное описание типа.
Если типы массивов идентичны, то в программе один массив может быть присвоен другому. В этом случае значения всех переменных одного массива будет присвоены соответствующим элементам второго массива.
Вместе с тем, над массивами не определены операции отношения. Сравнивать два массива можно только поэлементно.
Так как тип, идущий за ключевым словом of в описании массива, - любой тип Турбо Паскаль, то он может быть и другим массивом. Например:
type
mas = array[1..5] of array[1..10] of integer;
Такую запись можно заменить более компактной:
type
mas = array[1..5, 1..10] of integer;
Таким образом возникает понятие многомерного массива. Глубина вложенности массивов произвольная, поэтому количество элементов в списке индексных типов (размерность массива) не ограничена, однако не может быть более 65520 байт.
Работа с многомерными массивами почти всегда связана с организацией вложенных циклов. Так, чтобы заполнить двумерный массив (матрицу) случайными числами, используют конструкцию вида:
for i:=1 to m do
for j:=1 to n do a[i,j]:=random(10);
Для "красивого" вывода матрицы на экран используйте такой цикл:
for i:=1 to m do begin
for j:=1 to n do write(a[i,j]:5);
writeln;
end;
24. Типы данных в Паскале: структурированные типы. Записи.
Реальные данные об объектах часто описываются величинами разных типов. Например, товар на складе описывается следующими величинами: наименование, количество, цена, наличие сертификата качества и т. д. В этом примере наименование – величина типа string, количество – integer, цена – real, наличие сертификата качества можно описать величиной типа boolean. Для записи комбинации объектов разных типов в Pascal применяется комбинированный тип данных – запись.
Запись представляет собой наиболее общий и гибкий структурированный тип данных, так как она может быть образована из неоднотипных компонентов и в ней явным образом выражена связь между элементами данных, характеризующими реальный объект.
Запись – это структурированный тип данных, состоящий из фиксированного числа компонентов одного или нескольких типов. Определение типа записи начинается идентификатором record и заканчивается зарезервированным словом end. Между ними располагается список компонентов, называемых полями, с указанием идентификаторов полей и типа каждого поля.
Формат:
type
<имя типа> = record
<идентификатор поля>:<тип компонента>;
<идентификатор поля>:<тип компонента>
end;
var
<идентификатор, ...> : <имя типа>;
Пример:
type Саr = record
Number : integer; {Номер}
Marka : string[20]; {Марка автомобиля}
FIO : string[40]; {Фамилия, инициалы владельца}
Address : string[60] {Адрес владельца}
end;
var
М, V : Саr;
В данном примере запись Саr содержит четыре компонента: номер, название марки машины, фамилию владельца и его адрес. Доступ к полям записи осуществляется через переменную типа «запись». В нашем случае это переменные М и V типа Саr. Идентификатор поля должен быть уникален только в пределах записи, однако во избежание ошибок лучше делать его уникальным в пределах всей программы. Объем памяти, необходимый для записи, складывается из длин полей. Значения полей записи могут использоваться в выражениях. Имена отдельных полей не применяются по аналогии с идентификаторами переменных, поскольку может быть несколько записей одинакового типа. Обращение к значению поля осуществляется с помощью идентификатора переменной и идентификатора поля, разделенных точкой. Такая комбинация называется составным именем. Например, чтобы получить доступ к полям записи Саr, надо записать:
М.Number
M.Marka
M.FIO
M.Address
Составное имя можно использовать везде, где допустимо применение типа поля. Для присваивания полям значений используется оператор присваивания.
Пример:
М.Number := 1678;
М.Marka := ТАЗ - 24';
M.FIO := 'Демьяшкин В.А.1';
M.Address := 'ул. Пушкина 12 - ЗГ';
Составные имена можно использовать, в частности, в операторах ввода-вывода:
Read(M.Number, M.Marka, M.FIO, M.Address);
Write(M.Number:4, M.Marka:7, M.FI0:12, M.Address:25);
Допускается применение оператора присваивания и к записям в целом, если они имеют одинаковый тип. Например,
V := М;
После выполнения этого оператора значения полей записи V станут равны значениям соответствующих полей записи М.В ряде задач удобно пользоваться массивами из записей. Их можно описать следующим образом:
type
Person = record
FIO : string[20];
Age : 1 .. 99;
Prof : string[30]
end;
var
List : array[1..5O] of Person;
Обращение к полям записи имеет несколько громоздкий вид, что особенно неудобно при использовании мнемонических идентификаторов длиной более пяти символов. Для решения этой проблемы в языке Pascal предназначен оператор with, который имеет следующий формат:
with <переменная типа запись> do <оператор>;
Один раз указав переменную типа запись в операторе with, можно работать с именами полей как с обычными переменными, т.е. без указания перед идентификатором поля имени переменной, определяющей запись.