РАЗРАБОТКА ПРОГРАММЫ НА ЯЗЫКЕ PASCAL



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

Так как в программе подразумевается ввод данных с экрана и вывод полученных результатов на экран, перед началом программы его необходимо очистить от ненужной информации. Это проделывает процедура clrscr: очищает активное окно и устанавливает курсор в левый верхний угол окна и описана в модуле Crt.

В программе организован цикл для ввода одномерного массива с использованием функции-генератора случайных чисел. Перед первым обращением к функции random необходимо с помощью вызова процедуры randomize инициализировать программный генератор случайных чисел, иначе при каждом запуске программы датчик будет выдавать одни и те же числа. Если убрать из программы процедуру Randomize то каждый раз при запуске программы у нас будут генерироваться одни и те же числа.                                                                                                      В качестве заголовка программы возьмем название
MASSIV, который будет записан после ключевого слова Program.

Далее следует раздел объявления констант const и переменных v ar.

В данной программе в разделе const объявим константу N = 30,

где N – количество элементов массива.

В разделе переменных Var опишем:

- массив вещественных элементов A, который создается с помощью генератора случайных чисел;

- массив вещественных элементов B, в который помещаются элементы массива A , абсолютные значения которых меньше 1;

- целочисленные переменные: i и j – счетчики циклов, k – количество найденных элементов массива B, kol – количество положительных элементов массива A, nom – номер последнего элемента массива A, равного нулю.

- вещественные переменные: sum – сумма элементов массива A, расположенных после последнего нулевого элемента, prom – буферная переменная для перестановки элементов местами в процессе сортировки.

Описание блоков укрупненной схемы алгоритмов на языке Pascal

1. Ввод и вывод элементов одномерного массива А

  

   writeln (‘Ishodnij massiv:’);

   for i:=1 to N do begin

                                A[i]:=round((random*10-5)*10)/10;

     write (A[i]:4:1,’ ‘);

                                 if i mod 10=0 then writeln;

                         end;

  writeln;

Используем процедуру вывода writeln (‘ Ishodnij massiv :’) для того, чтобы прокомментировать какие данные сейчас будут выведены на экран. Процедуры записи Write и Writeln предназначены для вывода констант различных типов, значений переменных или выражений. Число параметров – произвольное. Данные выводятся на экран. Из констант наиболее часто выводятся строки текста (строковые константы заключаются в апострофы). Если в конструкции вывода записано выражение, оно сначала будет вычислено, а затем выполнен вывод полученного результата.                                                                                                   Процедура Writeln аналогична Write, отличие заключается в том, что после вывода последней переменной из списка, курсор автоматически переходит в начало новой строки. Инструкция Writeln без параметров переводит курсор в начало следующей строки, что позволяет, например, отделять результаты работы программы друг от друга пустыми строками.                                                                                          Далее с помощью генератора случайных чисел введем значения 30 элементов одномерного массива вещественных чисел A в интервале  от -5 до 5. Для этого используем выражение random *10-5. Random – возвращает случайное вещественное число в диапазоне 0<=х<1.

Для более точных дальнейших вычислений округлим, с помощью функции round ( x ), полученные вещественные значения до одного знака после запятой.  Так как функция round ( x ) преобразует вещественный аргумент x в целое число путем округления до ближайшего целого значения, то для округления полученного с помощью генератора случайных чисел значения х до одного знака после запятой умножим данное значение на 10, а затем результат от выполнения функции round ( x *10) поделим на 10. То есть мы в целом получаем следующий оператор A [ i ]:= round (( random *10-5)*10)/10.

Для более красивого вывода элементов полученного массива введем следующие дополнительные условия:

- writeln – оператор writeln без параметров позволяетотделять результаты работы программы друг от друга одной пустой строкой;

- write ( A [ i ]:4:1) обозначает, что для вывода элементов массива отводится  4 позиции, включая одну позицию для одного знака после запятой;

- в каждой строке экрана выводится по 10 элементов массива. Это реализуется с помощью оператора if i mod 10=0 then writeln. Операции сравнения в программе описывается с помощью условного оператора if. Если условие после оператора if выполняется, то исполняется оператор после then.                                                                                                Оператор повтора for часто называется оператором циклам с параметром, так как число повторений задается переменной, называемой параметром цикла, или управляющей переменной, которая на каждом шаге цикла автоматически изменяет свое значение ровно на единицу – поэтому ее  и называют счетчиком. Оператор повтора for применяется в случаях, когда число повторений заранее известно. Она состоит из заголовка (строка, содержащая for .. to ( downto ).. do ) и тела цикла. Оператор обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все значения параметра цикла от начального до конечного с шагом +1(to) или -1(downto).

Если требуется выполнить после do несколько операторов, они обрамляются операторными скобками begin и end, образуя тем самым составной оператор. Составной оператор воспринимается как один оператор. Цикл с параметром в программе реализована оператором цикла с параметром for i:=1 to N do begin. В теле цикла оператор присваивания с помощью функции random вводит элементы одномерного массива A[i]:=round((random*10-5)*10)/10

2. Вычисление количества положительных элементов массива и суммы элементов массива, расположенных после последнего нулевого элемента

kol:=0;

sum:=0;

  i:=N;

  while ( А [i]<>0) and (i>0) do

Begin

            if A[i]>0 then kol:=kol+1; 

            sum:=sum+A[i]; i:=i-1;

      end;

  nom:=i;

  if nom=0 then

          begin writeln (‘Nomer elementa = 0: nulevih elementov net’);

      sum:=0;

      kol:=0

End

      else writeln (‘Nomer elementa = 0: ’,nom:2);

Writeln;

  writeln (‘Kol-vo polojitelnih elementov: ’,kol:2);

Writeln;

   writeln (‘Summa elementov: ’,sum:4:1);

Writeln ;

 

Перед проверкой элементов массива A в переменную kol , хранящую количество найденных положительных элементов массива A, и в переменную  sum , хранящую сумму элементов, расположенных после последнего нулевого элемента массива A , помещаем значения 0. В счетчик цикла i помещаем значение переменной N.

Чтобы найти последний нулевой элемент используем цикл с предусловием while . Условие – логическое условие, истинность которого проверяется перед каждым заходом на цикл. Если проверяемое условие верно, то цикл WHILE выполняется вновь. Как только условие становится ложным, мы выходим из цикла. Если условие никогда не становится ложным, то программа зацикливается. Если в цикле WHILE необходимо выполнить несколько операторов, то их заключают в «операторные скобки» BEGIN…END.                                                 Поиск начинаем с конца массива. Если проверяемый элемент массива не равен 0 и не достигнуто начало массива, то данный элемент массива суммируется в переменную sum и значение счетчика i уменьшается на 1. В противном случае происходит выход из цикла и в переменную nom помещается индекс нулевого элемента массива, то есть значение счетчика i. Внутри цикла с предусловием также проверяются значения элементов A [ i ] – если онобольше нуля, то значение переменной kol увеличиваем на 1.

Если значение счетчика i, соответственно значение переменной nom, равно нулю, то есть в массиве нет нулевого элемента, то на экран выводится соответствующее сообщение и в переменные sum и kol помещается значение 0.

Найденные значения переменных nom (номер последнего нулевого элемента массива A), kol (количество положительных элементов массива, расположенных после последнего нулевого элемента) и sum (сумма элементов массива, расположенных после последнего нулевого элемента) выводятся на экран.

 

3. Формирование массива В, состоящего из элементов массива А,


Дата добавления: 2022-07-02; просмотров: 21; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!