Программирование на языках высокого уровня. Язык программирования Паскаль 

 

назад

 

Лабораторная работа № 3

 

Тема 1: Работа с одномерными массивами.

(в лекциях см. п. 4.1 )

Тема 1: Подпрограммы: процедуры и функции.

(в лекциях см. п. 5 )

 

Пример задания:

Массив T=(6, –3, 14, 7, –2, –4, 12, 0) преобразован к виду T=(–1, –10, 7, 0, –9, –11, 5, –7). Определите правило преобразования и напишите программу, которая:

1) по такому же алгоритму преобразовывает произвольный массив T из 38 элементов и выводит на экран элементы преобразованного массива.

2) вычисляет сумму тех элементов преобразованного массива, которые находятся в диапазоне [–14, 2], и выводит результат на экран.

Указания:

- сформировать массив T из 38 случайных целых чисел в диапазоне [–30,30] и вывести элементы массива на экран;

- преобразование массива оформить в виде процедуры;- вычисление суммы оформить в виде функции;

- все выводы на экран осуществлять в основной программе.

 

Варианты программы:

uses crt; {подключение модуля CRT, чтобы можно было использовать

    содержащиеся в нем стандартные процедуры clrscr и readln}

const kol_el=38; {задаем количество элементов массива; при отладке программы

    удобнее задать меньшее количество элементов }

type mas=array [1..kol_el] of integer; {создаем новый тип - массив}

var T:mas;

Procedure Preobr(var a:mas); {процедура, преобразующая переданный в качестве

    параметра массив по заданному правилу}

var i:integer; {Здесь i – локальная переменная, она доступна только в теле

    данной процедуры. Переменная i, описанная в основной программе

    –глобальная и доступна в любом месте программы, но только если

    нет локальной переменной с тем же именем. В этой процедуре

    можно было бы и не описывать локальную i, а использовать

    глобальную, но хороший стиль программирования предполагает,

    что все переменные, которые используются только для выполнения

    каких-либо действий внутри подпрограммы должны быть в ней и

    описаны, чтобы избежать различных ошибок}

begin

  for i:=1 to kol_el do

    a[i]:=a[i]-7;

end;

Function Sum(b:mas):integer;

var i,s:integer;

begin

    s:=0;

    for i:=1 to kol_el do

    s:=s+b[i];

    sum:=s; {обязательное присвоение имени функции полученного результата}

end;

var i:integer; {описание i:integer; и Т:mas можно было бы расположить в одном

      разделе Var }

Begin

    clrscr;

    Randomize;

    for i:=1 to kol_el do begin

      T[i]:=Random(61)-30;

      write(T[i]:4);

    end;

    Preobr(T);{при вызове процедуры происходит следующее:

      - в памяти создается копия массива T – массив a (формальный

      параметр процедуры),

      - выполняется тело процедуры, в котором преобразуется массив a;

      - возврат в основную программу на оператор, следующий за вызовом

      процедуры;

      При возврате в массив T переносятся значения преобразованного массива a }

    writeln;

    writeln;

    for i:=1 to kol_el do

    write(T[i]:4); {вывод преобразованного массива}

      {вызов функции Sum, выполнение тела функции, возврат в программу, вывод

      результата на экран : }

    write(#13,#10,#10,'Summa elementov = ',Sum(T));

    readln;

End.

 

Еще некоторые пояснения к программе:

Оператор write(#13,#10,#10,'Summa elementov = ',Sum(T)); можно было бы заменить последовательностью из трех следующих операторов:

writeln;

writeln;

write('Summa elementov = ',Sum(T));

Результат один и тот же: вывод текста Summa elementov = … будет осуществлен в начале новой строки через строчку от предыдущего вывода.

#10 - перевод строки

#13 - переход к началу строки (см. п.2.3 лекций)

Т.е. оператор write(#13,#10,#10,'Summa elementov = ',Sum(T)); выполняется следующим образом: сначала курсор перемещается в начало текущей строки, затем переводится на следующую строку в ту же позицию, снова переводится на следующую строку в ту же позицию, и только потом выводится текст.

 

Общий текст задания для всех вариантов:

Задана последовательность значений элементов некоторого массива до и после преобразования по некоторому правилу. Определите алгоритм преобразования и напишите программу, которая:

1) формирует массив из заданного количества случайных целых чисел в заданном диапазоне и выводит элементы массива на экран;

2) по определенному вами алгоритму преобразовывает этот массив и выводит на экран элементы преобразованного массива.

3) производит заданные вычисления и выводит результат на экран.

Указания:

- преобразование массива оформить в виде процедуры;

- заданные вычисления оформить в виде функции;

- все выводы на экран осуществлять в основной программе.

Варианты заданий:

  1. Массив A = (15, 9, –6, 12, –9, 18, 0) преобразован к виду A = (5, 3, 0, 4, 0, 6, 0). Размер массива A - 20 элементов из диапазона [–25,25]. Вычислить сумму четных элементов преобразованного массива.
  2. Массив B = (3, –4, 7, 2, 9, –7, 0) преобразован к виду B = (–6, 0, –14, –4, –18, 0, 0). Размер массива B - 15 элементов из диапазона [–14,14]. Вычислить произведение нечетных элементов преобразованного массива.
  3. Массив C = (–4, 9, 5, –8, –5, 4, 0) преобразован к виду C = (–8, 0, 0, –16, –10, 0, 0). Размер массива C - 40 элементов из диапазона [–23,23]. Вычислить сумму нечетных элементов преобразованного массива.
  4. Массив D=(4, –8, 9, 3, 4, –5, 0) преобразован к виду D=(–2, –14, 3, –3, –2, –11, –6). Размер массива D - 24 элемента из диапазона [–32,32]. Вычислить сумму тех элементов преобразованного массива, которые находятся в диапазоне [–14, 2].
  5. Массив F=(5, –8, 4, 8, 12, –4, 0) преобразован к виду F=(–7, –20, –8, –4, 0,–16,–12). Размер массива F - 63 элемента из диапазона [–50,50]. Вычислить сумму тех элементов преобразованного массива, которые находятся в диапазоне [–2, 21].
  6. Массив H = (6, –6, –3, 8, 4, –7, 0) преобразован к виду H = (14, 0, 0, 16, 12, 0, 8). Размер массива H - 10 элементов. из диапазона [–44,44] Вычислить произведение тех элементов преобразованного массива, которые находятся в диапазоне [0, 18].
  7. Массив K = (5, –5, 4, 9, –7, –11, 0) преобразован к виду K = (0, 1, 0, 0, –1, –5, 0). Размер массива K - 21 элемент из диапазона [–56,56]. Вычислить сумму тех элементов преобразованного массива, которые находятся в диапазоне [–1, 16].
  8. Массив L = (–2, 6, –8, 9, –5, 12, 0) преобразован к виду L = (1, 9, –5, 12, –2, 15, 3). Размер массива L - 36 элементов из диапазона [–31,31]. Вычислить сумму тех элементов преобразованного массива, которые находятся в диапазоне [–8, 25].
  9. Массив M = (5, –5, 9, –2, 14, –7, 0) преобразован к виду M = (5, 0, 9, 0, 14, 0, 0). Размер массива M - 22 элемента из диапазона [–47,47]. Вычислить сумму тех элементов преобразованного массива, которые находятся в диапазоне [–16, 6].
  10. Массив N = (8, –9, –3, 5, 4, –7, 0) преобразован к виду N = (0, –9, –3, 0, 0, –7, 0). Размер массива N - 18 элементов из диапазона [–68,68]. Вычислить сумму тех элементов преобразованного массива, которые находятся в диапазоне [–7, 27].

 


назад