Составить циклический алгоритм и программу для вычисления результата

Цикл с заданным условием продолжения работы (цикл-ПОКА) программируется в языке Паскаль с помощью оператора while. Общий вид оператора:

while do

— логическое выражение; пока оно истинно, выполняется тело цикла;

— простой или составной оператор, с помощью которого записано тело цикла.

Запишем на языке Паскаль рассмотренный в п. 2.4.3 (пример 14) алгоритм получения частного q и остатка r от деления натурального числа х на натуральное число y без использования операции деления.

Программирование циклических алгоритмов

Каким будет результат выполнения программы при х = -10 и у = 3? Как вы можете объяснить этот результат?

3.5.2. Программирование циклов с заданным условием окончания работы

Цикл с заданным условием окончания работы (цикл-ДО) программируется в языке Паскаль с помощью оператора repeat. Общий вид оператора:

repeat until

Программирование циклических алгоритмов

— логическое выражение; если оно ложно, то выполняется тело цикла.

Запишем на языке Паскаль рассмотренный в п. 2.4.3 (пример 17) алгоритм решения задачи о графике тренировок спортсмена.

Программирование циклических алгоритмов

3.5.3. Программирование циклов с заданным числом повторений

Цикл с заданным числом повторений (цикл-ДЛЯ) программируется в языке Паскаль с помощью оператора for. Его общий вид:

— переменная целого типа;

и — выражения того же типа, что и параметр, вычисляемые перед началом цикла;

— простой или составной оператор — тело цикла.

При выполнении этого оператора после каждого выполнения тела цикла происходит увеличение на единицу параметра цикла; условием выхода из цикла является превышение параметром конечного значения.

Запишем на языке Паскаль рассмотренный в п. 2.4.3 (пример 19) алгоритм вычисления степени с натуральным показателем n для любого вещественного числа а.

Программирование циклических алгоритмов

3.5.4. Различные варианты программирования циклического алгоритма

Особенностью программирования является то, что для решения одной и той же задачи могут быть созданы разные программы. Вы могли убедиться в этом, программируя ветвления. Рассмотрим пример, показывающий, что и циклический алгоритм может быть запрограммирован разными способами.

Пример. Напишем программу, в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор, пока не будет введён ноль) и подсчёт количества введённых положительных и отрицательных чисел.

Так как здесь в явном виде задано условие окончания работы, то воспользуемся оператором repeat.

Программирование циклических алгоритмов

Циклические алгоритмы

Имеющееся условие окончания работы можно достаточно просто преобразовать в условие продолжения работы — работа продолжается, пока n?0. И мы можем воспользоваться оператором while:

Программирование циклических алгоритмов

В рассмотренном примере число повторений тела цикла заранее не известно, и поэтому оператор for здесь применить нельзя. Если число повторений тела цикла известно, то лучше воспользоваться оператором for. Вместе с тем любая задача, в которой число повторений тела цикла определено заранее, может быть запрограммирована с помощью любого из трёх рассмотренных выше циклов.

САМОЕ ГЛАВНОЕ

В языке Паскаль имеются три вида операторов цикла: while (цикл-ПОКА), repeat (цикл-ДО), for (цикл с параметром). Если число повторений тела цикла известно, то лучше воспользоваться оператором for; в остальных случаях используются операторы while и repeat.

Вопросы и задания

1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Используйте эти материалы при подготовке ответов на вопросы и выполнении заданий.

Источник: murnik.ru

Программирование циклических алгоритмов на языке Паскаль

Программирование циклических алгоритмов на языке Паскаль

Туева Лариса

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

Картинками

Практическая работа №3

Программирование циклических алгоритмов на языке Паскаль

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

Читайте также:
Программа для модели материнской платы

Краткие теоретические сведения

Циклический алгоритм  это алгоритм, в котором используется многократное выполнение набора команд, которые повторяются указанное число раз, или пока не выполнено заданное условие.

В Паскале существуют три оператора цикла:

• цикл while … do с предусловием

• цикл repeat … until с постусловием

• цикл for … to… do (с параметром)

Цикл с предусловием

Особенность данного вида цикла: операторы цикла будут повторяться до тех пор, пока условие истинно. Его проверка делается каждый раз перед выполнением операторов цикла. Цикл может ни разу не выполниться, если его условие ложно.

На рисунке показано два варианта записи данной структуры на языке программирования Паскаль: с использованием операторных скобок (begin end), выполнение двух и более команд; запись с одной командой.

Пример 1. Вывести на экран первые 10 натуральных чисел.

Program primer1; var i: integer ; begin i:= 1 ;

Пример 2. Напечатать слово «Привет» указанное количество раз.

Program primer2; var i,n: integer ; begin

write ( ‘количество слов=’ ); readln(n); i:= 1 ; while ido begin writeln( ‘Привет’ ); i:=i+ 1 end ; end.

Пример 3. Определить сумму введенных с клавиатуры чисел до тех пор, пока не будет введен ноль.

Решение данной задачи основывается на использовании цикла WHILE, т.к. мы не знаем, когда будет введен ноль, и мы перестанем вводить числа.

program primer3; var a,s: integer ; begin s:= 0 ;

writeln( ‘Введите число’ ); readln(a); while(a<> 0 ) do begin

s:=s+a; writeln( ‘Введите число’ ); readln(a); end; writeln( ‘Сумма чисел равна ‘ ,S); end.

Пример 4. Вычислить сумму ряда 1+1.5+2+2.5+3+3.5+ .. + 30.

program primer4; var sum: real ; n: real ; BEGIN sum:= 0 ; n:= 1 ; while n do begin sum:=sum+n; n:=n+ 0.5 ; end;

writeln( ‘Сумма равна ‘ ,sum); end.

Пример 5. Составить таблицу значений функции на отрезке [ -5; 5 ] с шагом 0.5.

program primer5; var x , y : real; begin

end ; end .

Пояснение: Под дробное число x выделяется четыре знакоместа. При этом значение числа x округляется до одного знака после запятой (x:4:1).

Для значения y выделяется пять знакомест, а округление идет до двух знаков после запятой (y:5:2)

Пример 6. Используя алгоритм Евклида, найти НОД двух чисел.

program NOD; var M, N: integer ; begin

writeln( ‘Введите М и N’ ); readln(M, N); while M<>N do begin

if M>N then M:=M-N else N:=N-M; end; write( ‘Н0Д = ‘ ,M); end.

Цикл с постусловием

Особенность данного вида цикла: операторы цикла будут повторяться до тех пор, пока условие ложно. Его проверка делается каждый раз после выполнения операторов цикла. Команды, входящие в тело цикла, всегда выполняются хотя бы один раз.

Пример 7. Выполнить деление числа 100 на 2 до тех пор пока не получим число меньше 10.

program primer7; var b: real ; begin b:= 100 ; repeat b:=b/ 2 ; until b< 10 ; writeln(b); end.

Пример 8. Вывести на экран числа, начиная с 1 до тех пор пока число не станет равным 50.

program primer8; var b: real ; begin b:= 0 ; repeat b:=b+ 1 ; writeln(b); until b= 50 ; end.

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

У данного цикла есть и другие названия: цикл-для, цикл со счетчиком (оператор for to do, оператор цикла с параметром). Особенность данного цикла заключается в том, что использовать его нужно, когда заранее известно количество повторений команд. На рисунке представлена блок схема for (блок-схема цикла с параметром) и его запись на языке программирования Паскаль.

Параметр  это целая величина, которая обозначается любой латинской буквой. Чаще всего используют символ  i. Начальные и конечные значения параметра тоже целые числа. Счетчик цикла может работать в двух направлениях: увеличение или уменьшение значения параметра.

Читайте также:
Программа которая считает дни до нового года

Как работает цикл с параметром?

Разберемся, как работает оператор for в Паскале. Выполнение начинается с получения переменной i начального значения а. Затем проверяется это значение с конечным значением n. Выполнение операторов цикла происходит в случае, когда i меньше или равно n (при положительном шаге счетчика) или i больше или равно n (при отрицательном шаге счетчика).

Пример 9. Напишите программу, которая выводит на экран 10 строк следующего содержания:

program for1; < название программы > var i: integer ; < описание переменных > begin

Пример 10. Напишите программу вывода на экран чисел от 1 до 10.

program for2; var i : integer ; begin

for i:= 1 to 10 do writeln (i); readln; end.

Пример 11. Напишите программу вывода на экран чисел от 10 до 1.

program for3; var i : integer ; begin

for i:= 10 downto 1 do writeln (i); readln; end.

Пример 12. Дано целое число N (> 0). Найти сумму чисел 1 · 2 · 3 · . . . (N слагаемых).

program for4; < название программы > var i,n,s: integer ; begin

write ( ‘введите число слагаемых n=’ ); read(n);

Пример 13. Дано целое число N (> 0). Найти произведение 1 · 2 · 3 · . . . (N сомножителей).

program for5; < название программы > var i,n: integer ; p: real ; begin

write ( ‘введите число сомножителей n=’ ); read(n);

Пример 14. Напишите программу, которая выводит значения функции y=kx+b на интервале [2, 8] с шагом 1.

rogram for6;

var x,a,n: integer ; < x- параметр цикла, a,n — интервал>k,b: real ; < коэффициенты функции> begin < начало программы >write( ‘Введите значение k = ‘ ); readln(k);

write( ‘Введите значение b = ‘ ); readln(b);

write( ‘Введите значение начала интервала = ‘ ); readln(a);

write( ‘Введите значение конца интервала = ‘ ); readln(n);

Самостоятельно:

1. Вычислить сумму первых 40 чисел натурального ряда.

2. Вывести на экран 20 раз свое имя и название группы.

3. Вывести на экран все двухзначные числа. Найти их сумму.

4. Вывести на экран все двухзначные числа в порядке их убывания.

5. Вычислить значение функции y = sin(x), для х меняющегося от —  до  с шагом  /4.

6. Вычислить значение функции y = x 2 — 1 для х меняющегося от n1 до n2 с шагом 1.

7. Вычислить значение функции y = x 2 для х меняющегося от -6 до 6 с шагом 1.

8. Даны 10 чисел, найти их произведение.

9. Даны n действительных чисел. Найти среднее арифметическое всех элементов.

10. Дано натуральное число n. Вывести квадраты чисел от 1 до n.

1. Цикл с предусловием While выполняется до тех пор, пока условие выполнения не станет

ложным, и продолжается, если условие истинно.

2. Цикл с постусловием Repeat выполняется до тех пор, пока условие не станет истинно, если условие ложно, цикл продолжается.

3. Цикл с параметром For  используется переменная, называемая параметром цикла или счётчиком. Перед выполнением цикла параметру (счётчику) устанавливается начальное значение. После выполнения шага цикла значение параметра увеличивается на единицу. Цикл продолжается до тех пор пока параметр не достигнет своего конечного значения, которое указывается после to (downto).

Источник: znanio.ru

Реализация циклического алгоритма

Существуют специальные приемы для нахождения некоторых величин, таких как наибольшее (наименьшее) значение функции, сумма значений функции, произведение значений функции, среднее арифметическое значений функции, количество значений функции.

  1. Нахождение наибольшего max(наименьшего min) значения функции.

max=-10E10; for(x=xn; xmax) < max=f; >>

Примечание. Если нужно найти наименьшее значение функции, то следует сделать следующие замены: «max=-10^<10>» поменять на «min=10^<10>«, «f>max» поменять на «f<min«, «max=f» поменять на «min=f«.
Нахождение суммы Sзначений функции

S=0; for(x=xn; x coutНахождение произведения Pзначений функции

Составить циклический алгоритм и программу для вычисления результата P=1; for(x=xn; x cout

Нахождение среднего арифметического значения Sи количества kзначений функции

Составить циклический алгоритм и программу для вычисления результата S=0; k=0; for(x=xn; x S=S/k; cout
Читайте также:
Программа которая ставит прицел в центре экрана

Пример 4. Вычислить таблицу «x, f» значений функции f(x)=2x+1при 0le хle 4с шагом 1. Найти сумму всех значений функции; произведение значений, меньших 6; минимальное значение функции.

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

Введем обозначения:

    S– сумма всех значений функции, P– произведение значений, меньших 6, min– минимальное значение функции.

Т.к. нужно найти произведение значений, меньших 6, то следует добавить условие «f<6» при вычислении произведения.

Будем реализовывать цикл с предусловием, используя оператор for.

Блок-схема с предусловием: Код программы с оператором for:
Составить циклический алгоритм и программу для вычисления результата // proga26.cpp: определяет точку входа для консольного приложения. // #include «stdafx.h» #include #include using namespace std; int main() < double x,f,S,P,min; coutif(f > cout

Результат выполнения программы:

Составить циклический алгоритм и программу для вычисления результата

Ручной счет:

<

div xmlns_edi=»http://www.intuit.ru/2010/edi» >

Диапазон значений х: 0, 1, 2, 3, 4. при x=0 f=2x+1=2*0+1=1; при x=1 f=2x+1=2*1+1=3; при x=2 f=2x+1=2*2+1=5; при x=3 f=2x+1=2*3+1=7; при x=4 f=2x+1=2*4+1=9; сумма всех значений:S=1+3+5+7+9=25; произведение значений, меньших 6: P=1*3*5=15; наименьшее значение функции: min=1.

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

Пример 5. Нарисовать на экране бесконечную «змейку» символами «*».
Решение. Определим сначала внешний вид «змейки»:

Т.к. «змейка» должна быть бесконечной, то необходимо организовать бесконечный цикл. В этом случае будем использовать оператор while с всегда выполняемым условием true: while(true) . Внутри этого бесконечного цикла будем рисовать один период «змейки», т.е. один холм. За счет бесконечного цикла на экране будет бесконечное число раз рисоваться наш холм.

Теперь стоит решить, какой ширины будет наша «змейка». Будем запрашивать ширину «змейки» у пользователя, т.е. с клавиатуры. Обозначим ширину переменной n. Холм состоит из двух частей – расширяющейся и сужающейся. Чтобы нарисовать расширяющуюся часть, будем использовать цикл for по переменной iот 1 до nи функцию setw(i) . Чтобы нарисовать сужающуюся часть, будем использовать цикл for по переменной iот nдо 1 и функцию setw(i) .

Таким образом, внутри бесконечного цикла while вложены последовательно два цикла for – первый с увеличением переменной цикла, второй с уменьшением.

Код программы:

// snake.cpp: определяет точку входа для консольного приложения. // #include «stdafx.h» #include #include using namespace std; int main() < int i, n; cout>n; while (true) < for(i=1; ifor(i=n; i>=1; i=i-1) < cout> return 0; >

n=5

Результат выполнения программы: при :

Краткие итоги

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

Упражнения

  1. Составьте блок-схему и программу для вычисления суммы всех целых чисел от 1 до 100 включительно.
  2. Постройте таблицу значений функции y(x)=5x^2-3x+4при -20le хle 20с шагом 0,5. Определите наименьшее значение функции и значение х, при котором оно достигается.
  3. Составьте блок-схему и программу для вычисления таблицы значений функций z1=arccos^3(0,05x), z2=0,45|x^3-x^2|+2lg^<2,5>x при 0,8le хle 19c шагом 1. Найдите сумму всех значений z1, количество значений z2, меньших 10, наимешьшее значение z1, наибольшее значение z2.
  4. Составьте блок-схему и программу для вычисления таблицы значений функции Z(x,y)=beginsin^(x^)+lgsqrt>,-2\2.3,-y,0end при 0,5le хle 1c шагом 0,05; y задать с клавиатуры.
  5. Составьте блок-схему и программу для вычисления таблицы значений функции Z(x,y)=min<max<sin x, sin y>,x,y> при -1,7le хle 9,4c шагом 9,3; 0le yle 3c шагом 0,75. Определите наибольшее отрицательное значение функции, наименьшее положительное значение функции, произведение ненулевых значений функции, количество значений функции, больших 1 или меньших -1.
  6. Составьте программу, которая нарисует на экране геометрическую фигуру. Попробуйте разные варианты:
    • квадрат,
    • треугольник,
    • прямоугольник.

    Источник: intuit.ru

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru