Головна сторінка Випадкова сторінка КАТЕГОРІЇ: АвтомобіліБіологіяБудівництвоВідпочинок і туризмГеографіяДім і садЕкологіяЕкономікаЕлектронікаІноземні мовиІнформатикаІншеІсторіяКультураЛітератураМатематикаМедицинаМеталлургіяМеханікаОсвітаОхорона праціПедагогікаПолітикаПравоПсихологіяРелігіяСоціологіяСпортФізикаФілософіяФінансиХімія |
САМОСТІЙНИМ ДИТЯЧИМ ЧИТАННЯМДата добавления: 2015-10-19; просмотров: 1660
{Вызов процедуры для формирования массива чисел в четвертой степени:} Vect_kv(k, mas_rez2, mas_rez4); {Печать результатов:} writeln(‘Массив квадратов исходных чисел:’); for j:=1 to k do write(‘Элемент ’, j,’-й: ’,mas_rez2[j],’ ‘); writeln; writeln(‘Массив исходных чисел в четвертой степени:’); for j:=1 to k do write(‘Элемент ’, j,’-й: ’,mas_rez4[j],’ ‘) writeln; writeln (‘Для выхода из программы нажать клавишу Enter’); readln end. Ниже в примерах 12 и 13 приводятся описания процедур выдачи на экран ПК одномерного массива (вектора) и двумерного массива (матрицы), которые можно рассматривать как типовые при обработке произвольных векторов и матриц, размеры которых позволяют располагать их в пределах размеров экрана ПК.
Пример 12. Процедура RowPrint выдает на экран ПК в строку M элементов одномерного массива вещественных чисел (при печати числа представляются в форме с фиксированной точкой, для которой в данной процедуре предусмотрен форматный вывод: для каждого числа – всего 8 позиций, при этом 3 позиции – для дробной части) {Тип массива А должен быть объявлен в вызывающей программе Type TA=array[1..30] of real;}: procedure RowPrint(M:integer; A:TA); var i:integer; {i – локальная переменная} Begin for i:=1 to N do write(A[i]:8:3) End; Пример 13.Процедура RwColPrnt выдает на экран ПК элементы матрицы вещественных чисел в виде таблицы – N строк, M столбцов(формат выдачи на печать тот же, что и в предыдущем примере, тип массива ТТА объявлен заранее, в вызывающей программе в виде Type TTA=array[1..20,1..10] of real): procedure RwColPrnt(N,M:integer; A:TTA); var i,j:integer;{i,j – локальные переменные} Begin for i:=1 to N do{цикл по строкам} Begin for j:=1 to M do write(A[i,j]:8:3);{цикл по элементам строки} writeln{перевод курсора на следующую строку} End End; Замечание. В частности, процедура может не иметь параметров. Например, стандартные процедуры Readln, Writeln, Clrscr или следующая подпрограмма, оформленная в виде процедуры, выдающая на монитор все символы, представляемые в ПК кодами от 0 до 255: Procedure cod_char; Var i:byte; Begin for i:=1 to 255 do write(i:4,’ :‘,chr(i):2); writeln; readln End; В основной программе эта процедура вызывается на выполнение следующим образом Cod_Char; и результатом ее выполнения будет строка из 255 пар “КОД : СИМВОЛ”. Пример 14. В этом примере рассматривается применение двух процедур при решении следующей задачи: вычислить частичные суммы гармонического ряда R (n) = 1 + 1/2 + 1/3 + ... + 1/n и результат представить в форме рационального числа А/B, то есть в виде отношения числитель/знаменатель, где числитель и знаменатель – целые числа. В программе предусмотрены две процедуры: Proc1 – сокращает дробь на наибльший общий делитель; Proc2 – находит сумму двух дробей с приведением к общему знаменателю.
program Harm_row; var an,bn,bk,i:integer;
{Объявление и описание проседуры proc1:} procedure proc1(var a,b:integer);{процедура реализут известный алгоритм поиска наибольшего общего делителя: } var a1,b1,r:integer; begin{начало операторной части процедуры} a1:=a;b1:=b; while b1<>0 do begin r:=a1 mod b1;{находится остаток от деления на цело числителя a1 на знаменатель b1} a1:=b1;b1:=r{производится замена: знаменатель становится числителем, остаток - знаменателем} End; if a1>1 then begin a:=a div a1;b:=b div a1{числитель и знаменатель дроби сокращаются на наибольший общий делитель} End end;{ конец proc1}
{Объявление и описание проседуры proc2:} procedure proc2(var a,b:integer; a1,a2,b1,b2:integer); {В данном варианте процедуры proc2 формальные переменные a1,a2,b1,b2 – входные, a,b – выходные: } begin a:=a1*b2+a2*b1;b:=b1*b2 end;{конец процедуры proc2 - вариант 1 }
{Второй вариант процедуры proc2 отличается меньшим числом формальных параметров: параметры a1, b1 становятся и выходными, а параметры a2,b2 – только входные:} procedure proc2(var a1,b1:integer; a2,b2:integer); begin a1:=a1*b2+a2*b1;b1:=b1*b2; {Для проверки корректности хода вычислений часто бывает полезно выдавать на экран ПК значения промежуточных расчетов. Здесь, например, это можно сделать применением процедуры контрольной печати дроби, получающейся прикаждом обращении к процедуре proc2: writeln('контр. печать проц2: ',a1:2,'/',b2:2);} end; {proc2 – вариант второй}
begin {главная программа Harm_row} an:=1;bn:=1;{Числитель и знаменатель первого элемента равны 1} writeln('Задай номер последнего элемента ряда: '); readln(bk);writeln('Результаты вычисления суммы по шагам:'); for i:=2 to bk do begin proc2(an,bn,1,i); {выбран второй вариант процедуры proc2} proc1(an,bn); writeln('Шаг ',i,'-й: ',an:2,'/',bn:2) end; writeln('Вычисление закончено. Нажми Enter');readln end.
|