Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Цикл с параметром в схемах алгоритма



По ГОСТ для обозначения цикла с параметром используется следующая структура изображенная на рис. 15.10.

Задача

Для заданного года G определить количество дней в каждом месяце.

Математическая модель

Современный календарь действует с 1600 года нашей эры.

" i=(janvar, fevral, mart, aprel, maj, iun, iul, avgust, sentjabr, oktjabr, nojabr, dekabr) необходимо вычислять d - количество дней в i-oм месяце заданного года G.

Метод решения

Вне зависимости от года G (год должен быть > =1600 )

" i: =janvar..dekabr:

выбор по i из вариантов

Год G считается високосным, если он кратен 4 и не кратен 100 или кратен 400 (каждый четвертый год - високосный, за исключением каждого сотого года; каждый четырехсотый год также високосный).

Условие високосности:

G mod 4 = 0 & G mod 100 < > 0 V G mod 400 = 0

Информационная модель

Таблица 15.2. Информационная модель

Статус Назначение Имя Тип
Входная год G WORD
Промежуточная текущий месяц i mes
Промежуточная признак правильности ввода номера года (true - успешно, false – ошибка) vvod boolean

Примечания:

1)выходные данные - текст с указанием названия месяца и количества дней;

2) type mes=(janvar, fevral, mart, aprel, maj, iun, iul, avgust, sentjabr, oktjabr, nojabr, dekabr)

Алгоритмическая модель

Схема алгоритма решения задачи приведена на рис. 15.11.

Программная модель (текст на языке Паскаль)

program kalend;

type mes=(janvar, fevral, mart, aprel, maj, iun, iul, avgust,

sentjabr, oktjabr, nojabr, dekabr);

var G: word; {заданный год}

i: mes; {текущее значение месяца}

vvod: Boolean; {признак правильности ввода номера года}

begin

 

{ввод исходных данных с контролем правильности ввода}

repeat

writeln('Введите год');

{$I-}

{$R-}

readln(G);

{$I+}

{$R+}

if (ioresult< > 0) or(G< 1600) then

begin

writeln('Ошибка в номере года');

vvod: =false

end

else vvod: =true

until vvod;

 

{решение математической модели с выводом результата}

writeln('В ', G, ' году: ');

 

for i: =janvar to dekabr do begin

 

{вывод названия месяца}

case i of

janvar: write('январь - ');

fevral: write('февраль - ');

mart: write('март - ');

aprel: write('апрель - ');

maj: write('май - ');

iun: write('июнь - ');

iul: write('июль - ');

avgust: write('август - ');

sentjabr: write('сентябрь - ');

oktjabr: write('октябрь - ');

nojabr: write('ноябрь - ');

dekabr: write('декабрь - ')

end;

 

{вывод количества дней}

case i of

 

janvar, mart, maj, iul, avgust, oktjabr, dekabr: write('31 день');

aprel, iun, sentjabr, nojabr: write('30 дней');

Рис. 15.11. – Схема алгоритма

fevral: if (G mod 4 =0) and (G mod 100 < > 0)

or (G mod 400 =0) then write('29 дней')

else write ('28 дней');

 

end;

 

 

{вывод окончания фразы}

case i of

 

janvar..nojabr: writeln('; ');

 

dekabr: writeln('.')

 

end

end {for i}

end.

Примечание: обратите внимание, что алгоритмическая и программная модели имеют незначительные различия в организации вывода результирующей фразы.

Алгоритм вычисления таблицы умножения

Математическая модель

 i=1(1)10:

 j=1(1)10: y=i*j

 

Метод решения

Задача сводится к вычислению таблицы значений функции от двух аргументов. Причем в данной задаче значения аргументов принадлежат диапазону значений от 1 по 10, то есть для перебора аргументов можно использовать циклы с параметром:

" i=1..10:

" j=1..10: y=i*j

Информационная модель

Входные данные - отсутствуют;

выходные данные - последовательно все значения y;

промежуточные переменные - значения аргументов вычисляемой функции i, j,
которые изменяются в диапазоне 1..10.

Алгоритмическая модель

Схема алгоритма вычисления таблицы умножения приведена на рис. 15.12.

Программная модель

program tabumn;

var i, j, y: integer;

begin

for i: =1 to 10 do

begin

{вычисление одного столбца - при фиксированном значении i}

for j: = 1 to 10 do

Рис. 15.12. – Схема алгоритма вычисления таблицы умножения

 

begin

y: =i*j;

writeln (i, '*', j, '=', y)

end; {for j}

{" остановка" при просмотре результатов - до тех пор,
пока не будет нажата клавиша ввод, программа будет
находится в приостановленном состоянии}

writeln(' Для продолжения нажмите Enter')

readln

end {for i}

end.

Два других варианта решения этой задачи (с циклами пока и повторять до):

Вариант с циклом пока

Метод решения

i: =1

пока i 10:

Алгоритмическая модель

Рис. 15.13. – Схема алгоритма с циклом с предусловием

Программная модель

program tabumn;

var i, j, y: integer;

begin

i: =1;

while i< = 10 do

begin

{вычисление одного столбца - при фиксированном значении i}

j: = 1;

while j< =10 do

begin

y: =i*j;

writeln (i, '*', j, '=', y);

j: =j+1

end; {while j}

{" остановка" при просмотре результатов - до тех пор,
пока не будет нажата клавиша ввод, программа будет
находится в приостановленном состоянии}

writeln(' Для продолжения нажмите Enter')

readln;

i: =i+1

end {while i}

end.

 

Вариант с циклом повторять

Метод решения

i: =1

повторять

до i> 10

Программная модель

program tabumn;

var i, j, y: integer;

begin

i: =1;

repeat

{вычисление одного столбца - при фиксированном значении i}

j: = 1;

repeat

y: =i*j;

writeln (i, '*', j, '=', y);

j: =j+1

until j> 10;

Алгоритмическая модель

Рис. 15.14. – Схема алгоритма с циклом с постусловием

{" остановка" при просмотре результатов - до тех пор,
пока не будет нажата клавиша ввод, программа будет
находится в приостановленном состоянии}

writeln(' Для продолжения нажмите Enter')

readln;

i: =i+1

until i> 10

end.

 

Алгоритм накопления суммы

Такой алгоритм часто встречается в нашей повседневной жизни, например, подсчет продавцом стоимости товаров. Технология подсчета сумму стоимости заключается в том, что в начале устройство, с помощью которого ведется подсчет стоимости должно находиться в исходном состоянии (если подсчет ведется с помощью счет, то они должны быть " сброшены"; если с помощью калькулятора, то он должен быть " обнулен" - на индикаторе должен быть 0). В вычислительной технике устройство, в котором накапливается сумма, называется сумматором. Поэтому в алгоритме должна быть переменная - сумматор, которая в начале алгоритма должна быть обнулена. Затем последовательно к сумматору добавляются значения суммируемых величин - происходит процесс суммирования или накопления суммы. После выполнения этих действий в сумматоре находится общая сумма.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-07-12; Просмотров: 630; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.029 с.)
Главная | Случайная страница | Обратная связь