- •Раздел 1. Языки программирования
- •Программное обеспечение. Основные этапы решения задач на эвм. Жизненный цикл программного средства.
- •7. Решение задачи на эвм и анализ результатов
- •Основная структура программы.
- •Эквивалентность типов
- •Преобразование типов
- •Разбор программы
- •1.3. Логический тип. Ветвления. Оператор условного перехода. Полная и сокращённая форма условного оператора. Составные условия
- •1.4 Символьный тип и функции для обработки символьного типа. Перевод символьного представления числа в целый тип.
- •1.5 Оператор выбора
- •1.6. Операторы цикла. Оператор цикла с предусловием. Оператор цикла с постусловием. Оператор цикла с параметром
- •1.7 Процедуры и функции. Параметры, локальные и глобальные переменные. Передача параметров по адресу и по значению.
- •Локальные и глобальные переменные
- •Регулярный тип (массивы). Описание массивов. Ввод и вывод элементов массива. Нахождение максимального (минимального) элемента массива.
- •Обработка матриц. Поиск заданного элемента в матрице.
- •Работа с динамическими переменными. Динамические массивы.
- •1.11. Файловый ввод-вывод. Работа с текстовыми и двоичными файлами.
- •Чтение файла при помощи fgetc. Функция fgetc применяется для чтения символа из потока.
- •Чтение файла при помощи fgets
- •Запись в файл при помощи fwrite
- •1.12. Микропроцессор Intel х86. Регистры. Команды обмена данными. Команды работы со стеком.
- •1.13 Микропроцессор Intel х86. Арифметические команды. Логические команды и команды сдвига. Команды передачи управления.
- •Двоичная арифметика
- •Десятичная арифметика
- •Логические операции
- •Сдвиговые операции
- •Команды передачи управления
- •1.14 Микропроцессор Intel х86. Способы адресации: регистровая, непосредственная, прямая, косвенная. Регистровая адресация
- •Непосредственная адресация
- •Прямая адресация
- •Косвенная адресация
Регулярный тип (массивы). Описание массивов. Ввод и вывод элементов массива. Нахождение максимального (минимального) элемента массива.
Массивом называется ограниченная упорядоченная совокупность однотипных величин. Каждая отдельная величина называется компонентой массива. Тип компонент может быть любым, принятым в языке Pascal, кроме файлового типа. Тип компонент называется базовым типом. Вся совокупность компонент определяется одним идентификатором, посредством которого к нему осуществляется обращение, указывается тип и количество элементов массива. Для обозначения отдельных компонент используется конструкция, называемая переменной с индексом или с индексами: A[5] S[k+1] B[3,5]. Пример описания массивов. Type Massiv = array [1..20] of Real; Var A, B:Massiv; C: array [10..30] of Integer; В данном примере описаны одномерные массивы с именами A, B, C, причём массивы A и B имеют элементы типа Real, порядковые индексы элементов изменяются от 1 до 20, а массив С - с элементами типа Integer, и индексами от 10 до 30. В квадратных скобках указывается тип индекса (в приведённых примерах - это тип диапазон). В качестве индекса может быть использовано выражение. В индексных типах, по одному для каждой размерности массива, указывается число элементов. Допустимыми индексными типами являются все порядковые типы, за исключением длинного целого и поддиапазонов длинного целого. Индексы интервального типа, для которого базовым является целый тип, могут принимать отрицательные, нулевое и положительные значения. Массив может быть проиндексирован по каждой размерности всеми значениями соответствующего индексного типа; число элементов, поэтому равно числу значений в каждом индексном типе. Число размерностей не ограничено. Массивы бывают одномерные и многомерные. Из многомерных наиболее часто приходится иметь дело с двумерными. Двумерные массивы хранятся в памяти ЭВМ по строкам. Двумерный массив можно представить как матрицу элементов. Описание такого массива выглядит так: Type Matrix = array [1..20, 1..10] of Real; Var X, Y: Matrix; Z: array [1..10, 1..10] of Integer; Массивы X и Y имеют двадцать строк и десять столбцов. Массив Z представляет собой квадратную матрицу размером 10X10. Для доступа к элементам массива необходимо указать идентификатор массива с одним или несколькими индексами в скобках (в зависимости от размерности массива). Конкретный элемент массива обозначается с помощью имени переменной массива, за которой указывается индекс, определяющий данный элемент. Индексные выражения обозначают компоненты в соответствующей размерности массива. Число выражений не должно превышать числа индексных типов в описании массива. Более того, тип каждого выражения должен быть совместимым по присваиванию с соответствующим индексным типом. В случае многомерного массива можно использовать несколько индексов или несколько выражений в индексе. Например: X[I][J] тождественно записи: X[I,J]. Для одномерного массива обращение к элементу будет выглядеть так: Z[I]. В этом и предыдущем случае переменные I и J должна иметь значения, не превышающие диапазона индексов соответствующего массива. Если тип элемента в типе массив также является массивом, то результат можно рассматривать как массив массивов или как один многомерный массив. Например, array[boolean] of array[1..100] of array[Size] of Real интерпретируется компилятором точно так же, как массив: array[boolean,1..10,Size] of Real. Массив вида: array[0..X] of Char, где X - положительное целое число, называется массивом с нулевой базой. Массивы с нулевой базой используются для хранения строк с завершающим нулем, и, когда разрешен расширенный синтаксис (с помощью директивы компилятора {$X+}), символьный массив с нулевой базой совместим со значением типа PChar. Pascal допускает единственно возможное действие над массивом в целом: использование его в операторе присваивания. Например: Vect1:=Vect2 причем типы обоих массивов в данном случае должны быть эквивалентны. Для работы со всем массивом используется идентификатор массива без указания индекса. К массивам приемлемы только операции отношения "=", "<>". Массивы, являющиеся операндами, должны соответствовать друг другу по структуре, т.е. быть одного типа (одинаковые количество и типы элементов). Таким образом, для двух однотипных массивов X, Y:array [1..30] of Integer; приемлемы следующие выражения: - X=Y (равно TRUE, если значения каждого элемента массива X равны соответствующим элементам массива Y); - X<>Y (TRUE, если хотя бы одно значение элемента массива X неравно значению соответствующего элемента массива Y).
Задача:заполнить массив случайными числами от -100 до 100. Найти максимальный и минимальный элемент и их номера. uses crt;
var m:array[1..100]of integer;
i,n,min,max:integer;
begin
clrscr;
write('N-> ');
readln(n);
for i:=1 to n do
begin
m[i]:=-100+random(201);
write(m[i],' ');
end;
writeln;
min:=1;
max:=2;
for i:=1 to n do if m[i]>m[max] then max:=i else if m[i]<m[min] then min:=i;
writeln('MAX - M[',max,']=',m[max]);
writeln('MIN - M[',min,']=',m[min]);
readln;
end.
uses
Crt;