- •1Основы алгоритмизации
- •1.1Этапы решения задач на эвм
- •1.2Алгоритм. Свойства алгоритмов
- •1.3 Алгоритмическая конструкция ветвления
- •1.4Алгоритмическая конструкция цикла
- •22. Программирование на Турбо Паскаль
- •2.1Основные конструкции языка Паскаль
- •2.1.1История создания языка.
- •2.1.2Программа на tp.
- •2.1.3 Простые типы данных.
- •2.1.4Константы, переменные и оператор присваивания.
- •2.1.5Операторы ввода/вывода.
- •2.2 Управляющие конструкции языка тп
- •2.2.1Безусловные конструкции.
- •2.2.2Условные конструкции.
- •2.2.3Циклические конструкции.
- •1. Цикл с предусловием.
- •Цикл с постусловием.
- •3. Цикл с параметром.
- •2.3Массивы
- •2.3.1Одномерные массивы
- •2.3.2Сортировка массивов.
- •2.3.3Двумерные массивы
- •2.4Процедуры и функции.
- •2.4.1Использование
- •2.4.2Формальные и фактические параметры
- •2.4.3Описание
- •2.4.4Вызов процедур и функций в основной программе
- •2.4.5Пример
- •2.5Использование библиотек стандартных процедур в программах. Модуль Crt. Текстовые режимы использования экрана.
2.3Массивы
2.3.1Одномерные массивы
До сих пор мы рассматривали переменные, которые имели только одно значение, могли содержать в себе только одну величину определенного типа. Но компьютер предназначен в основном для облегчения работы человека с большими объемами информации. Как же, используя только переменные известных вам типов, сохранить в памяти и обработать данные, содержащие десяток, сотню, тысячу чисел или, к примеру, строк? Во всех существующих языках имеются типы переменных, отвечающие за хранение больших массивов данных.
Массивом называется упорядоченная последовательность данных одного типа, объединенных под одним именем. Кстати, под это определение подходит множество объектов из реального мира: словарь (последовательность слов), мультфильм (последовательность картинок) и т. д. Проще всего представить себе массив в виде таблицы, где каждая величина находится в собственной ячейке. Положение ячейки в таблице должно однозначно определяться набором координат (индексов). Самой простой является линейная таблица, в которой для точного указания на элемент данных достаточно знания только одного числа (индекса).
Объявление переменной массива происходит в разделе var. При этом используется зарезервированное слово array, указывается тип массива и его размерность перечислением индексов, а также объявляется тип данных в массиве.
Var <Имя массива> : Array [<Диапазон индексов>] Of <Тип элементов>;
Пример :
Var
S, B : Array [1..40] Of Real; N : Array [-20..20] Of Integer;
T : Array [1..40] Of Real;
Теперь переменные S, B и T представляют собой массивы из сорока вещественных чисел; массив N может хранить в себе 41 число типа Integer.
Единственным действием, которое возможно произвести с массивом целиком - присваивание. Для данного примера описания впоследствии допустима следующая запись: S:=BB;
Однако, присваивать можно только массивы одинаковых типов. Даже массиву T присвоить массив S нельзя, хотя, казалось бы, их описания совпадают, произведены они в различных записях раздела описания.
Никаких других операций с массивами целиком произвести невозможно, но с элементами массивов можно работать точно также как с простыми переменными соответствующего типа. Обращение к отдельному элементу массива производится при помощи указания имени массива и в квадратных скобках - индекса конкретного элемента. Например: R[10] - элемент массива R с индексом 10.
Пример 1: a [2,4]
а) ввести значение: read (A[2,4]);
б) присвоить значение: A[2,4]:=5;
в) сообщить значение: write (A[2,4]);
Фундаментальное отличие компонента массива от простой переменной состоит в том, что для элемента массива в квадратных скобках может стоять не только непосредственное значение индекса, но и выражение, приводящее к значению индексного типа. Таким образом реализуется косвенная адресация:
B[15] - прямая адресация;
B[K] - косвенная адресация через переменную K.
Косвенная адресация позволяет использовать цикл для заполнения, обработки и распечатки его содержимого.
Задача ввода элементов линейного массива:
|
program vvod; var A: array [1..10] of integer; i:integer; begin for i:=1 to 10 do read (A[i]); end. |
Задача нахождения минимального элемента в массиве:
|
program min; const n=10; var i: byte; a: array [1..n] of real; min: real; begin for i:=1 to n do read (A[i]); min:=A[1]; for i:=1 to n do if min>A[i] then min:=A[i]; write (min); end. |