- •Оглавление
- •Тема1 41
- •Тема 2 Условный оператор, оператор выбора 41
- •Тема 4. Строки и символы 43
- •Предисловие
- •1 Основы построения программы на языке Турбо-Паскаль
- •1.1 Алфавит языка и специфика его использования
- •1.2 Этапы решения задачи на эвм
- •1.3 Общая структура программы на языке Паскаль
- •1.4 Выражения
- •1.4.1 Арифметические выражения
- •1.4.2 Логические выражения
- •1.5 Стандартные функции
- •2 Типы данных
- •2.1 Стандартные типы данных
- •2.1.1 Целочисленные типы
- •2.1.2 Логический тип (булевый тип).
- •2.1.3 Символьный тип
- •2.1.4 Перечисляемый тип
- •2.1.5 Интервальный тип
- •2.1.6 Вещественный тип
- •2.2 Объявление констант
- •2.3 Объявление переменных
- •3 Алгоритмизация вычислительных процессов
- •3.1. Понятие алгоритма
- •3.2 Операторы для записи линейных процессов
- •3.2.1 Оператор присваивания
- •3.2.2 Оператор ввода числовых данных
- •3.2.3 Оператор вывода числовых данных
- •3.2.4 Вывод числовых данных с форматом
- •4 Разветвляющиеся вычислительные процессы
- •4.1 Типы разветвляющихся алгоритмов
- •4.2 Операторы перехода
- •4.2.1 Условный оператор
- •4.2.3 Оператор выбора
- •4.2.4 Метка. Оператор перехода
- •5 Итерационные циклические процессы
- •5.1 Типы циклических процессов
- •5.2 Итерационные циклические процессы
- •5.2.1 Оператор цикла с предварительным условием
- •5.2.2 Оператор цикла с последующим условием
- •5.3 Оператор цикла с параметром
- •6 Структурированные типы данных
- •6.1 Массивы
- •6.2 Записи
- •6.2.1 Оператор присоединения
- •6.3 Множества
- •6.4 Строки
- •6.4.1 Основные операции
- •7 Подпрограммы
- •7.1 Процедуры
- •7.2 Функции
- •8 Работа с файлами
- •8.1 Инициация файла
- •8.2 Процедуры и функции для работы с файлами
- •8.3 Текстовые файлы
- •8.4 Типизированные файлы
- •8.5 Нетипизированные файлы
- •9 Указатели и динамическая память
- •9.1 Выделение и освобождение динамической памяти
- •10 Модули
- •10.1 Компиляция модулей
- •10.2 Стандартные модули
- •10.2.1 Модуль crt
- •10.2.2 Модуль Graph
- •10.2.3 Модуль Overlay
- •Индивидуальные задания
- •Тема 2 Условный оператор, оператор выбора
- •Тема 3.
- •Задание в - обработка числовых последовательностей
- •Тема 4. Строки и символы
- •Тема 5. Массивы
- •Тема 6. Файлы
- •Тестовые задания
- •Электронные образовательные интернет-ресурсы Дистанционные курсы
- •Электронные учебники
5.3 Оператор цикла с параметром
Синтаксис оператора цикла с параметром:
For I:= N to K do
Begin
< предложения тела цикла >
End;
Здесь FOR (для), TO (до), DO (выполнить) - ключевое слова; I - параметр цикла; N, K - начальное и конечное значение параметра цикла.
Циклическая часть программы выполняется повторно для каждого значения параметра цикла I от его начального значения N до конечного значения K включительно.
В качестве параметра цикла может использоваться только переменная порядкового типа, N и K могут быть заданы выражениями. Если в выражении присутствуют действительные переменные, то необходимо к выражению применить стандартные математические функции ROUND или TRUNC.
Если параметр цикла I описывается в разделе переменных как переменная целого типа, то параметр I изменяется на величину шага, равную +1 или -1. Если значение параметра цикла уменьшается, то шаг его изменения -1, и в операторе цикла FOR ключевое слова TO заменяется на ключевое слово DOWNTO.
Пример: найти сумму первых ста членов последовательности 1, 2, 3, …
Program Summa;
Var I, Sum : Integer;
Begin
For I:=1 to 100 do S:=S+I;
Writeln(S);
End.
6 Структурированные типы данных
6.1 Массивы
Массив - это упорядоченная совокупность однотипных элементов. Члены этой совокупности называются элементами массива. Каждый элемент определяется именем массива и его положением в массиве.
Упорядоченность последовательности данных заключается в том, что элементы массива располагаются в последовательных ячейках памяти.
Массивы бывают одномерные, двумерные, трехмерные, и т.д. Массив называется одномерным, если для получения доступа к его элементам достаточно одной индексной переменной.
Объявление одномерного массива:
VAR
Имя_массива: ARRAY[1..k] OF <Тип_данных>;
Здесь переменная k задает количество элементов в массиве, при этом значение индекса элементов лежит в интервале от 1 до k и может принимать только целые значения.
Массивы могут иметь и более одного измерения. Размерность ("мерность") массива определяет количество индексов отдельного элемента.
Объявление двумерного массива (двумерной матрицы):
Имя_массива: ARRAY [1..k1,1..k2] OF Тип_данных;
Здесь k1 задает количество строк и диапазон изменения индекса строк, k2 - количество столбцов и диапазон изменения индекса столбцов.
Объявление трехмерного массива:
Имя_массива: ARRAY[1..k1,1..k2,1..k3] OF < Тип_данных>;
Здесь k1 задает количество строк и диапазон изменения индекса строк, k2 - количество столбцов и диапазон изменения индекса столбцов, k3 - количество слоев и диапазон изменения индекса слоев.
Подобным образом описываются массивы и более высокой размерности. Ограничения на максимальное значение размерности не существует.
Обращение к отдельным элементам массива осуществляется по имени массива и последовательности его индексов, заключенных в квадратные скобки и разделенных запятой.
На примере двумерного массива А(5х6) рассмотрим ввод элементов массива и вывод их на экран в виде строк и столбцов.
Program Wwod_Wywod;
Var A : Array [1..5,1..6] of integer;
I,J : Integer;
Begin
For I:=1 to 5 do
For J:=1 to 6 do
read(A[I,J]); {- считывание в цикле всех 30 элементов массива}
For I:=1 to 5 do Begin
For J:=1 to 6 do Write (A[I,J]:4); {- вывод в одну строку значений элементов массива вложенного цикла длиной в 4 символа}
Writeln; {- переход на новую строку}
End;
End.
При работе с массивами надо помнить, что в каждый момент времени мы работаем с одним конкретным элементом массива заданного типа. Если элементов массива много, то для ввода значений часто используют функцию Random(Х), которая возвращает случайное целое число, равномерно распределенное в диапазоне от 0 до Х-1 (Х – параметр обращения). Если параметр Х опущен, то функция возвращает вещественное число в диапазоне от 0 до 1.
Program Wwod;
Var A : Array [1..8,1..10] of Integer;
I, J : Integer;
Begin
For I:=1 to 8 do
For J:=1 to 10 do A[I,J] := Random(100);
……………
End.
При решении задач массивы используются очень часто, и зачастую эти массивы необходимо отсортировать по возрастанию или по убыванию. Существует два основных алгоритмов сортировки.
Сортировка выбором
Установить номер наименьшего элемента массива
Поменять местами наименьший и первый элементы массива.
Оставив в покое первый элемент, выполнить первые два пункта над остатком массива. Пункт 3 повторять, пока остаток не сократится до одного элемента.
Метод пузырька (обменная сортировка)
Сравнивать в цикле соседние элементы, и если левый элемент оказался больше, то поменять его местами с правым.
Выполнить шаг 1, не обращаясь к последнему элементу.
Пример. Отсортировать массив в порядке убывания (сортировка осуществляется при помощи двух вложенных циклов)
For j:=1 to N-1 do
Begin
NEW:=MAS[N];
K:=N;
For i:=N downto j do
If MAS[i]>NEW then
Begin
K:=i;
NEW:=MAS[i]
End;
MAS[K]:=MAS[j];
MAS[J]:=NEW;
End;