Информатика (паскаль) / лаб.9 / Филиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования
.docxФилиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования
«Национальный исследовательский университет «МЭИ» в г. Смоленске
Кафедра информатики
Отчет
по лабораторной работе
Тема: «Массивы»
по курсу: «Информатика и программирование»
Студент: Лобанева Е.И.
Группа: ПИЭ-12
Преподаватель: Нестеров А.П.
Смоленск, 2012
-
Теоретическое введение
Массив – структура однотипных данных с индексированным доступом. Каждый элемент массива получает один или несколько номеров, называемых индексами. Индексы записываются в квадратных скобках через запятую.
Массивы бывают следующих видов:
Одномерные – каждый элемент массива получает два индекса (пр. [2,3]).
Многомерные – каждый элемент получает более 2-х индексов (пр. [1,1,k]).
Описание массивов
Каждый из индексов массива находится в некотором диапазоне (<нач. элемент>…<кон. элемент>). Причем конечный элемент больше либо равен начальному элементу. В качестве диапазона можно использовать: Integer, Char, Boolean.
Массив в языке Паскаль это сложный тип данных, поэтому чаще всего его описывают в разделе переменных.
Var <переем. массив>: array[<диапазон 1>..<диапазон N>]
Of <тип переменной>;
Пример: список студентов группы
Var Spisok: array[1..40] String[20];
Получение элементов массива
Каждый элемент массива - это переменная, которой можно присваивать значения в операторах и функциях. Для того, чтобы указать элемент массива, необходимо записать все его индексы.
<перем. массив>[<индекс>,..,<индекс N>]
Пример:
Spisok[1]:=’Иванов’;
Ввод массива с клавиатуры
Массив нельзя ввести с клавиатуры одной командой, для этого организовывается цикл с параметром. Для того чтобы обеспечить правильный ввод массива, необходимо соблюдать следующий алгоритм:
<приглашение к вводу массива>;
<ввод количества элементов массива>;
For i:=1 to <кол-во элементов> do
Begin
<приглашение к вводу i-го элемента>;
<ввод i-го элемента>;
End;
Пример:
WriteLn (‘ввод списка студентов’);
WriteLn (‘введите количество студентов’);
ReadLn (kolvo);
For i:=1 to kolvo do
Begin
WriteLn (i,’ ’);
ReadLn (spisok[i]);
End;
Вывод массива на экран
Вывод в строку. При выводе массива в строку нужно использовать Write, которая будет находиться в цикле с параметром, а после цикла нужно поставить WriteLn.
Пример:
For i:=1 to kolvo do
Write(spisok[i],’ ‘);
WriteLn;
Вывод массива в столбец. При выводе в столбец в цикле указывается WriteLn, причем для массивов, содержащих числа, следует также указывать количество знаков при выводе на экран.
Пример:
For i:=1 to kolvo do
Write (i:2,’. ’,spisok[i]);
Действия с массивами
Над массивами нельзя выполнять арифметические действия (вычитать, складывать и др.). Все действия выполняются поэлементно.
Пример: Написать программу, которая выполняет поэлементное суммирование массивов A и B.
Program Summ;
Var A,B Array [1..10] of Integer;
Kolvo:Integer;
C: Array [1..10] of Integer;
i: Integer;
Begin
WriteLn (‘введите количество элементов массивов’);
ReadLn (Kolvo);
WriteLn (‘введите элементы маcсива A’);
For i:=1 to Kolvo do
begin
Write(i, ‘) ’);
ReadLn (A[i]);
end;
WriteLn (‘введите элементы маcсива B’);
For i:=1 to Kolvo do
begin
Write(i, ‘) ’);
ReadLn (B[i]);
end;
For i:=1 to Kolvo do
C[i]:= A[i]+B[i];
For i:=1 to Kolvo do
Writeln (C[i]:5);
End.
2. Техническое задание
В массиве хранится информация о среднедневной температуре за каждый день января. Определить даты двух самых холодных дней. Примечание: задачу решить, не используя два прохода по массиву.
-
Анализ технического задания
Для того чтобы выполнить данное задание, необходимо задать одномерный массив и использовать цикл for.
4. Блок-схема
Н
Ввод А
Вывод А
dmin1=1
dmin2=1
min1=A[1]
min2=A[1]
i=2
i:31
>
<=
<=
min1:A[i]
dmin1, dmin2
>
min1=A[i]
dmin1=i
К
min2:A[i]
<=
>
<
A[i]:min1
>=
min2=A[i]
dmin2=i
i=i+1
Рисунок1: Блок-схема1. Для программы pr1.
5. Модульная структура программы
Программа состоит из одного модуля - самой программы.
-
Спецификация на программные модули
1) Имя модуля pr1.
2) Имя вызывающего модуля – нет.
3) Выполняемые функции- вычисление значения.
4) Входные данные: нет;
5)Выходные данные: min1,min2 типа Integer.
6)Особенности, ограничения – нет.
7.Текст программы
program pr1;
uses crt;
var A:array [1..31] of Integer;
i,min1,dmin1,min2,dmin2:Integer;
Begin
clrscr;
Randomize;
for i:=1 to 31 do
Begin
A[i]:=-50+Random(100);
writeln(A[i]:4);
End;
writeln;
dmin1:=1;
dmin2:=1;
min1:=A[1];
min2:=A[i];
for i:=2 to 31 do
If (A[i]<min1) then
Begin
min1:=A[i];
dmin1:=i;
End;
If (A[i]<min2) and (A[i]>=min1) then
Begin
min2:=A[i];
dmin2:=i;
End;
writeln('min1=',dmin1,' ','min2=',dmin2);
Readln;
End.
8.Результаты тестирования:
Входных данных в программе нет, поэтому приведу пример программы:
9. Заключение
В результате выполнения лабораторной работы освоены способы выполнения элементарных программ, ввод одномерных массивов, повторила написание блок-схем. Также повторила виды циклов и написание программ для них.