русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Readln; end.


Дата добавления: 2015-01-16; просмотров: 500; Нарушение авторских прав


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

fori: = n1to n2do оператор;

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

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

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

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



р: = р * а;

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

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

Выполнение программы
а = 2 п = 5
I P
   

program P8;

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

Begin

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

readln(a);

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

readln(n);

p:= 1;

for i: =1tondo

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: =1tondo

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;

vara, s:real;i, n: integer;

Begin

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

readln(n);

s: = 0;

fori: = 1ton 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: = n2downto nldo оператор;

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

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

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

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

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

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



<== предыдущая лекция | следующая лекция ==>
Краткие теоретические сведения | Методические указания по работе и задания


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.938 сек.