Информатика (паскаль) / лаб.8 / gotovo
.docФилиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования
«Национальный исследовательский университет «МЭИ» в г. Смоленске
Кафедра информатики
Отчет
по лабораторной работе
Тема: «Массивы»
по курсу: «Информатика и программирование»
Студент: Лобанева Е.И.
Группа: ПИЭ-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. Техническое задание
Ввести массив A(n). Если массив содержит не больше двух нулевых элементов, то уменьшить положительные элементы массива в 2 раза, иначе найти минимальный по модулю элемент.
-
Анализ технического задания
Для того чтобы выполнить данное задание, необходимо задать одномерный массив и использовать цикл for.
4. Блок-схема
>
min=A[1]
<=
i=1
i=1
> >
<
k=0
>
i=1
A[i]=A[i]/2
min=A[i]
i=i+1
i=i+1
нет
да
k=k+1
i=i+1
Рисунок1: Блок-схема1. Для программы pr1.
5. Модульная структура программы
Программа состоит из одного модуля - самой программы.
-
Спецификация на программные модули
1) Имя модуля pr1.
2) Имя вызывающего модуля – нет.
3) Выполняемые функции- вычисление значения.
4) Входные данные: k,i типа Integer.
5)Выходные данные: min типа Real.
6)Особенности, ограничения – нет.
7.Текст программы
Program pr1;
Uses crt;
var A:array[1..10] of Real;
k,i:Integer;
min:Real;
Begin
clrscr;
Randomize;
for i:=1 to 10 do
Begin
A[i]:=-50+Random(100);
writeln(A[i]:4);
End;
k:=0;
for i:=1 to 10 do
If A[i]=0 then
k:=K+1;
min:=A[i];
If (k<=2) then
Begin
for i:=1 to 10 do
Begin
If A[i]>0 then
A[i]:=A[i]/2
End;
Writeln (‘!!!’);
for i:=1 to 10 do
writeln(A[i]:4);
End
else
Begin
for i:=1 to 10 do
If min>A[i] then
min:=A[i];
writeln('min=',min);
end;
readln;
End.
8.Результаты тестирования:
Входных данных в программе нет, поэтому приведу пример программы:
9. Заключение
В результате выполнения лабораторной работы освоены способы выполнения элементарных программ, ввод одномерных массивов, повторила написание блок-схем. Также повторила виды циклов и написание программ для них.