Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика (паскаль) / лаб.9 / Филиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования

.docx
Скачиваний:
26
Добавлен:
31.03.2015
Размер:
32.48 Кб
Скачать

Филиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования

«Национальный исследовательский университет «МЭИ» в г. Смоленске

Кафедра информатики

Отчет

по лабораторной работе

Тема: «Массивы»

по курсу: «Информатика и программирование»

Студент: Лобанева Е.И.

Группа: ПИЭ-12

Преподаватель: Нестеров А.П.

Смоленск, 2012

  1. Теоретическое введение

Массив – структура однотипных данных с индексированным доступом. Каждый элемент массива получает один или несколько номеров, называемых индексами. Индексы записываются в квадратных скобках через запятую.

Массивы бывают следующих видов:

Одномерные – каждый элемент массива получает два индекса (пр. [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. Техническое задание

В массиве хранится информация о среднедневной температуре за каждый день января. Определить даты двух самых холодных дней. Примечание: задачу решить, не используя два прохода по массиву.

  1. Анализ технического задания

Для того чтобы выполнить данное задание, необходимо задать одномерный массив и использовать цикл 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. Спецификация на программные модули

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. Заключение

В результате выполнения лабораторной работы освоены способы выполнения элементарных программ, ввод одномерных массивов, повторила написание блок-схем. Также повторила виды циклов и написание программ для них.