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

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

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

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

Отчет

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

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

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

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

Группа: ПИЭ-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. Техническое задание

Ввести массив A(n). Если массив содержит не больше двух нулевых элементов, то уменьшить положительные элементы массива в 2 раза, иначе найти минимальный по модулю элемент.

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

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

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

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