Программирование
на языках высокого уровня. Язык программирования Паскаль |
|
Лабораторная работа № 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) производит заданные вычисления и выводит результат на экран. Указания: - преобразование массива оформить в виде процедуры; - заданные вычисления оформить в виде функции; - все выводы на экран осуществлять в основной программе. Варианты заданий:
|