kopilkaurokov.ru - сайт для учителей

Создайте Ваш сайт учителя Курсы ПК и ППК Видеоуроки Олимпиады Вебинары для учителей

ОРГАНИЗАЦИЯ ЦИКЛОВ Лабораторная работа № 4 по языку программирования Турбо Паскаль

Нажмите, чтобы узнать подробности

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

 

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

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

Вы уже знаете о суперспособностях современного учителя?
Тратить минимум сил на подготовку и проведение уроков.
Быстро и объективно проверять знания учащихся.
Сделать изучение нового материала максимально понятным.
Избавить себя от подбора заданий и их проверки после уроков.
Наладить дисциплину на своих уроках.
Получить возможность работать творчески.

Просмотр содержимого документа
«ОРГАНИЗАЦИЯ ЦИКЛОВ Лабораторная работа № 4 по языку программирования Турбо Паскаль»

Лабораторная работа №4

ОРГАНИЗАЦИЯ ЦИКЛОВ


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

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

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

Например. Пусть требуется опреде­лить остаток от деления числа М на число N (М и N — про­извольные натуральные числа). Самый простой способ реше­ния этой задачи заключается в следующем: проверяем, не меньше ли М, чем N (если М N, то М и есть остаток от де­ления М на N); если М  N, то уменьшаем значение М на значение N (т.е. вычитаем из М число N и дальнейшие дей­ствия осуществляем с результатом этой операции, который для удобства мы снова обозначим М); снова проверяем, не стало ли М меньше N, если не стало, то еще раз уменьшаем значение М на величину значения N и т. д.

Эти две операции (сравнения и вычитания) повторяются до тех пор, пока очередное значение М не станет меньше значе­ния N. Значение М в этот момент и будет остатком от деле­ния заданных вначале чисел.

Как видно, в этом примере несколько раз повторяется одна и та же последовательность действий.

Компьютер может заданное число раз выполнить одни и те же действия с разными данными. Повторяющиеся действия в программировании называются циклом. Если изобразить цикл в виде блок-схемы, то получатся две разные структуры (рис. 5). Цикл не может выполняться вечно, в этом случае нарушается свойство алгоритма решить задачу за конечное чис­ло шагов. Цикл заканчивается по какому-либо условию. Про­верка этого условия может производиться в начале каждого повторяющегося шага, в этом случае цикл называется пока. При проверке условия в конце каждого шага цикл называется до. Разновидностью цикла до является цикл пересчет.


Рис. 5. Циклические структуры

В цикле пока сначала проверяется условие, и если оно вы­полняется, т. е. логическое выражение истинно, то выполня­ется оператор и снова проверяется условие. Записанное в цикле пока условие является условием продолжения цикла. Как только оно перестанет выполняться, цикл завершится. На рисунке 5 выход из ромба «+» (или да) означает выполнение условия цикла, «—» (или нет) — невыполнение. Цикл пока не выполнится ни разу, если условие при входе в структуру ока­залось ложным. Как правило, цикл пока содержит условие повторения, а цикл до — условие окончания работы цикла. Обе структуры имеют один вход и один выход. Однако цикл до всегда выполняется хотя бы один раз, потому что условие проверяется после выполнения действия. Это затрудняет про­верку правильности программы, поэтому лучше использовать цикл пока. Оператор в цикле может быть простым или со­ставным, заключенным в операторные скобки. В этом случае в цикле могут повторяться несколько операторов, а не один. Повторяющиеся в цикле операторы называются телом цикла. Циклы можно организовывать, используя различные сред­ства Паскаля.

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

Общий вид оператора: goto n;

где п — целое число, не более чем из четырех цифр, называе­мое меткой. Метка появляется в программе три раза: 1) в опи­сательной части в разделе Label; 2) в операторе goto; 3) перед оператором, на который осуществляется безусловный пере­ход, в этом случае метка от оператора отделяется двоеточием.

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

Исходные данные


Первый шаг

Второй шаг

Третий шаг

НОД (А, В) = 5

А =25

А= 10

А =10

А=5



В= 15

В- 15

В=5

В=5



program P5;

label 1,2;

var a, b: integer;

begin

write (‘введите два натуральных числа’);

readln(a, b);

1: if a = b then goto 2;

if a b then a: = a - b

else b: = b - a;

goto 1;

2: write (‘НОД = ‘, a);

readln;

end.

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

и выполняется следующим образом: оператор (тело цикла) повторяется до тех пор, пока выполняется условие (истинно логическое выражение). Оператор может быть простым или составным, заключенным в операторные скобки begin ... end. Для алгоритма Евклида программа примет вид:

program P6;

var a, b: integer;

begin

write (‘введите два натуральных числа’);

readln (а, b):

while ab do

if ab then a: = a - b

else b: = b - a;

write (‘НОД = ‘, a);

readln;

end.

Оператор цикла до. Проверка условия в цикле до осу­ществляется после выполнения оператора. Если условие в цик­ле пока является условием продолжения повторений, то усло­вие в цикле до — условием выхода из цикла, его завершением. Поэтому для одной и той же задачи эти условия противопо­ложны. Общий вид оператора: repeat оператор until условие;

Между словами repeat (повторить) и until (до тех пор пока) можно записать любое количество операторов без использова­ния операторных скобок. Перед словом until не ставится точ­ка с запятой.

Программа нахождения наибольшего общего делителя при­мет вид:

program P7;

var a, b: integer;

begin

write (‘введите два натуральных числа’);

readln(a, b);

repeat

if a b then a: = a - b;

if b a then b: = b - a

until a = b;

write (‘НОД = ‘,a);

readln; end.

Операторы циклов пересчет. При выполнении программ нахождения наибольшего общего делителя число повторений различно для разных данных. Когда известно число повторе­ний, удобно использовать цикл пересчет. В Паскале имеется два оператора для организации циклов пересчет: прямой и обратный. Прямой пересчет идет от известного меньшего чис­ла до известного большего, на каждом шаге прибавляется еди­ница (например, от 120 до 140: 121, 122, 123, .... 139, 140). Оператор прямого пересчета:

for i: = n1 to n2 do оператор;

читается как «для i начиная с n1 до n2 выполнить оператор».

Переменная i называется переменной цикла, она при пря­мом пересчете всегда меняется от меньшего значения до боль­шего. При i = n1 цикл выполняется первый раз. Затем к зна­чению переменной i добавляется единица и осуществляется проверка, не превысило ли полученное значение величину n2. Если i+1  n2, то оператор выполняется, если нет, то проис­ходит выход из цикла и выполнение следующего по порядку оператора программы. Поскольку оператор цикла for сам из­меняет значение переменной цикла, ее нельзя менять другими способами, например присваиванием ей какого-либо значения в теле цикла (она не должна появиться слева от знака «:= »).

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

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

р: = р * а;

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

Программа имеет вид:

Выполнение программы

а = 2 п = 5

I

P



1

1

2

2

4

3

8

4

16

5

32


program P8;

var a, p: real; i, n: integer;

begin

write (‘введите a - основание степени, а = ‘);

readln (a);

write (‘введите целое n - показатель степени, n = ‘);

readln(n);

p:= 1;

for i: = 1 to n do

p: = p * a;

write (‘p = ‘, p);

readln

end.

Перед текстом программы представлен протокол ее выпол­нения при возведении числа 2 в пятую степень. Таблица за­полнена вручную, процесс ее заполнения называется отладкой программы. Отладка — это проверка всех этапов работы про­граммы. Для сложных задач сначала составляется контроль­ный пример (тест) и программа выполняется человеком, кото­рый выполняет каждый оператор так, как его выполняет компьютер. Затем программу выполняет компьютер и сверя­ются все промежуточные, полученные при счете данные и ко­нечные результаты. Только после полного совпадения про­грамма выполняется с реальными данными. Для понимания работы программы, выполнения отдельных операторов полез­но заполнять подобные протоколы для всех учебных задач.

2. Вычисление р = n! (n факториал).

По определению п!= 1 * 2 * 3 * ... * n. Используя предыду­щую программу, вычислим р как произведение чисел от 1 до n, т. е. р каждый раз умножается не на одно и то же число, а на значение переменной цикла.

program P9;

var p, i, n: integer;

begin

write (‘введите целое n = ‘);

readln(n);

p= 1;

for i: = 1 to n do

p: = p* i;

write (n,’! = ‘,p);

readln

end.

3. Составление таблицы значений функции у = sin x. Пусть требуется составить таблицу значений функции на отрезке [0;3.14] с шагом 0,1. Чтобы не определять количество повторе­ний вычислений, можно воспользоваться циклом пока. Используя вывод вещественных чисел с фиксированной точ­кой, определим, что количество цифр после запятой в значе­нии функции будет равно 5. Тогда все число, учитывая об­ласть значений синуса, займет семь позиций (числа положи­тельные, значит, добавится позиция для десятичной точки и целой части числа).

Программа имеет вид:

program P10;

var x, у: real;

begin

x: = 0;

writeln (‘x’ : 10,’sin x’ : 10);

while x =3.14 do

begin

y: = sin(x);

writeln (x : 10,’ ‘,y : 7 : 5);

x: = x+ 0.1

end;

readln

end.

При каждом выполнении цикла будет сначала проверяться условие (x  3.14), затем вычисляться значение функции, пе­чататься аргумент х (для него отведено десять позиций, из них одна — для цифры дробной части) и, через три пробела, — значение функции. Для следующего шага цикла вы­числяется новое значение аргумента увеличится на 0,1). Цикл пока позволяет изменять переменную цикла как угодно, увеличивая ее или уменьшая на любое число.

4. Суммирование чисел. При суммировании, как и при ум­ножении нескольких чисел, необходимо накапливать резуль­тат в некоторой ячейке памяти, каждый раз считывая из этой ячейки предыдущее значение суммы и увеличивая его на оче­редное слагаемое. Пусть известно, что будет складываться n чисел. В этом случае надо n раз выполнить действие s: = s + а; здесь a очередное число, вводимое с клавиатуры. Для пер­вого выполнения этого оператора присваивания надо из ячейки с именем s взять такое число, которое не повлияло бы на ре­зультат сложения. Следовательно, прежде чем начать выпол­нять цикл, надо поместить в эту ячейку (или, что то же самое, присвоить переменной s) число нуль. Программа имеет вид:

program Р11;

var a, s: real; i, n: integer;

begin

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

readln(n);

s: = 0;

for i: = 1 to n do

begin

write (i,’- oe число - ‘);

readln(a);

s: = s + a

end;

write (‘сумма s = ‘,s);

readln

end.

Если количество чисел неизвестно, то можно задать чис­ло-ограничитель, например нуль. В таком случае используется цикл while или repeat.

s:=0; s:=0;

readln(а); repeat

while а 0 do readln(a);

begin s: = s + a; s: = s + a

readln(a) until a = 0;

end;

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

for i: = n2 downto nl do оператор;

Для этого оператора должно также выполняться п2 nl.

При использовании в программе операторов цикла необходи­мо соблюдать следующие правила:

— внутри цикла может находиться другой цикл, но необхо­димо, чтобы циклы имели разные переменные и внутренний цикл полностью находился в теле внешнего цикла;

— нельзя передавать управление в тело цикла, минуя заго­ловок (это значит, что метка и оператор goto с этой меткой должны находиться в теле цикла);

— если требуется обойти группу операторов в теле цикла и продолжить цикл, т. е. выполнить его следующий шаг, то на­до передать управление на замыкающий цикл end;

— можно досрочно выйти из цикла, или используя опера­тор goto, или изменив параметр условия в операторах while и repeat так, чтобы цикл больше не выполнялся.


Методические указания по работе и задания

Условие задачи

1

Для различных вводимых с клавиатуры целых чисел найдите сум­му положительных нечетных.

2

Подсчитать число цифр целого положительного числа.

3

Одноклеточная амеба делится каждые 3 часа на 2 клетки. Определить сколько амеб будет через 3, 6,9,12,…,24 часа.

4

В интервале [2;n] найти натуральное число с максимальной суммой делителей.

5

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

6

Начав тренировку спортсмен в первый день пробежал 10км. Каждый день он увеличивал дневную норму на 10% нормы предыдущего дня. Какой суммарный путь пробежит спортсмен за 7 дней.

7

Написать программу, которая выводит таблицу значений функции y=2,4х2+5х –3 в диапазоне от –2 до 2 с шагом 0,5.

8

Написать программу, которая выводит таблицу степеней двойки ( до 10).

9

Написать программу, выводящую на экран «электронные часы», которые работают в течение, например, трех минут или до тех пор, пока пользователь не нажмет любую клавишу.

10

Написать программу приближенного вычисления интеграла функции f(x)=5x2- x + 2 методом прямоугольника (методом трапеций).

11

Дано положительное число А. Найдите среди чисел 1, 1 + 1/2, 1 + 1/2 + 1/3, ... первое, большее А.

12

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

13

Составить алгоритм решения задачи: сколько можно купить ваз, салфеток и цветов, платя за вазу 10р., за салфетку-5р., а за цветок – 0,5р., если на 100р. надо купить 100 предметов.

14

Напишите программы вычисления сумм:

а) сорока слагаемых вида п — i, где i = 1, 2, 3, .... 40, a n — данное число;

б) п слагаемых вида х + i, где х —- данное число, а i меняется от 1 до п;

в) ста слагаемых, имеющих вид дроби (i + 1) / (i + 2);

г) п слагаемых вида (i + 1)2, где i = 1, 2, .... n;

д) кубов n первых натуральных чисел;

е) n слагаемых sin х + sin2 х + sin3 х + ... + sinn х;

ж) п слагаемых sin х + sin х2 + sin х3 + ... +- sin хn;

15

Напишите программы вычисления произведений:

а) a * (a + 1) * (a + 2) * ... * (a + n - 1);

б) a * (a - n) * (a2n) * ...* (a - n2);

в) (x - 1) (x - 2) (х - 3) ... (x - п);

г) 2 * 4 * 6 * ... * (2n);

д) (1 + sin 0.1) (1 + sin 0.2) ... (1 + sin 10);

е) n сомножителей вида (x+i)2;

ж) всех чисел от 1 до 100 кратных 3, но не кратных 6.


ВОПРОСЫ К ЗАЩИТЕ ЛАБОРАТОРНОЙ РАБОТЫ

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

2. Сколько раз выполнится оператор цикла repeat, если условие после слова until истинно при входе в цикл?

3. Объясните, какая разница между условиями, записанными после слов while и repeat для одной и той же задачи.

4.Что такое итерационный процесс? Его отличие от цикла с заданным числом повторений.

5. В чем преимущества использования операторов цикла в программах?

6. Рассказать правила организации цикла.

7. Каково условие выхода из цикла при вычислении суммы бесконечного ряда?



Получите в подарок сайт учителя

Предмет: Информатика

Категория: Уроки

Целевая аудитория: Прочее.
Урок соответствует ФГОС

Скачать
ОРГАНИЗАЦИЯ ЦИКЛОВ Лабораторная работа № 4 по языку программирования Турбо Паскаль

Автор: Убаев Каримжан Камилжанович

Дата: 11.05.2017

Номер свидетельства: 414359


Получите в подарок сайт учителя

Видеоуроки для учителей

Курсы для учителей

ПОЛУЧИТЕ СВИДЕТЕЛЬСТВО МГНОВЕННО

Добавить свою работу

* Свидетельство о публикации выдается БЕСПЛАТНО, СРАЗУ же после добавления Вами Вашей работы на сайт

Удобный поиск материалов для учителей

Ваш личный кабинет
Проверка свидетельства