Циклы Паскаль

Автор работы: Пользователь скрыл имя, 14 Апреля 2014 в 23:03, контрольная работа

Краткое описание

Широкой популярностью Паскаля среди программистов способствовали следующие причины:
- Благодаря своей компактности, удачному первоначальному описанию Паскаль оказался достаточно лёгким для обучения.
- Язык программирования Паскаль. Отображает фундаментальные и наиболее важные концепции алгоритмов в очевидной и легко воспринимаемой форме, что предоставляет программисту средства, помогающие проектировать программы.
- Язык Паскаль позволяет чётко реализовать идеи структурного программирования и структурной организации данных.

Содержание

Введение ________________________________________________________ 3
1 Ветвление в алгоритмах __________________________________________ 5
1.1 Основные этапы решения задач на компьютере _____________________ 5
1.2 Ветвления в Паскаль ___________________________________________ 8
2 Циклы Паскаль _________________________________________________ 11
Список литературы ________________

Вложенные файлы: 1 файл

Содержание.doc

— 83.50 Кб (Скачать файл)

Этот пример циклического вычислительного процесса является весьма типичным; его характерные особенности состоят в том, что

  • число повторений цикла известно к началу его выполнения (в данном случае оно равно значению n, которое предполагается заданным к этому времени);
  • управление циклом осуществляется с помощью переменной порядкового типа, которая в этом циклическом процессе принимает последовательные значения от заданного начального до заданного конечного значений (в нашем случае – это целочисленная переменная i, принимающая последовательные значения от 1 до n).

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

For V:= E1 to E2 do S,

где  for (для),  to (увеличиваясь к) и  do (выполнять, делать) – служебные слова,  V – переменная порядкового типа, называемая параметром цикла, Е1 и Е2 – выражения того же типа, что и параметр цикла,  S – оператор, который и выполняется многократно в цикле, называемый телом цикла.

Этот оператор цикла Паскаля предусматривает присваивание параметру цикла V последовательных значений от начального значения, равного значению выражения Е1, до конечного значения, равного значению выражения Е2, т.е. при каждом повторении выполняется оператор присваивания V:= succ( V), и выполнение оператора S при каждом значении параметра цикла V. При этом значения выражений Е1 и Е2 вычисляются один раз, при входе в оператор цикла, а значение параметра цикла V не должно изменяться в результате выполнения оператора S. Если заданное конечное значение меньше начального значения (что допустимо), то оператор S не выполняется ни разу.

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

С использованием оператора цикла с параметром алгоритм вычисления суммы первых n членов гармонического ряда может быть задан следующим образом:

Readln(n);

Y:= 0;

For i:= 1 to n do y:= y+1/i;

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

For V:= E1 downto E2 do S,

где  downto (уменьшаясь к) – служебное слово, а все остальные слова и выражения имеют прежний смысл. Изменение параметра цикла от большего значения к меньшему происходит при выполнении присваивания V:=pred( V). Начальное значение может быть меньше конечного значения. В этом случае оператор S не выполнится ни разу. Значение параметра цикла по завершении выполнения такого цикла так же считается неопределенным.

 Параметр цикла может и не использоваться в теле цикла, так что основное его назначение – это управление числом повторений цикла. Например, значение y= x n, где n>=0 – целое, можно вычислить по следующему алгоритму: предварительно положить y=1, а затем n раз домножить это значение на x:

Readln(n);

Readln(x);

Y:= 1;

For i:= 1 to n do y:= y*x;

 Здесь параметр цикла i служит лишь для того, чтобы тело цикла (оператор y:= y* x) выполнилось нужное число раз.

Арифметический оператор цикла Паскаля с произвольным шагом.

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

Оператор цикла Паскаля с постусловием.

 Пусть нам необходимо вычислить  сумму первых членов гармонического  ряда, удовлетворяющих условию 1/i>= e, где 0< e<1, а i=1,2,3…...Эту задачу  можно решить по следующему алгоритму: положить предварительно y=0 и i=0, а затем в цикле увеличивать i на 1, к значению y добавлять очередное слагаемое 1/ i до тех пор, пока текущее значение 1/ i впервые окажется больше заданного значения 0< e<1.

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

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

Repeat S1; S2;…; Si until B,

где  repeat (повторять) и  until (до) – служебные слова, через  Si обозначен любой оператор Паскаля, а через В – логическое выражение.

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

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

readln(e);

i:=0;

y:=0;

Repeat

 i:=i+1;

 y:=y+1/i;

Until 1/i<e;

Оператор цикла Паскаля с предусловием.

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

Дано вещественное число М. Требуется найти наименьшее целое неотрицательное число k, при котором 3 k> M. Эту задачу можно решить по следующему алгоритму: предварительно положить y=1 и k=0; затем в цикле домножать значение y на 3 и увеличивать значение k на 1 до тех пор, пока текущее значение y впервые окажется больше значения М. На первый взгляд, здесь можно воспользоваться оператором цикла с постусловием:

y:=1; k:=0;

Repeat

 y:=y*3;

 k:=k+1;

Until y> M;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                               

 

 

 

Список литературы.

  1. Основа програмирования/ худож. – оформитель С.А. Пяткова. – Харьков: Фолио; Ростов Н/Д: Феникс,  1997. –368с.
  2. Кузницов А.А. Патапова Н.В. Основы информатики. 8-9 кл.: Учеб. Для общеобразовательных учеб. Заведений 2001 176с.:ил.
  3. Turbo Pascal: практикум. - СПб.: Питер, 2002. - 256 с.: ил.
  4. Turbo Pascal / 2-е изд., перераб., - Вологда: МП "МИК", 1991. - 342с

 

 

 

 


 



Информация о работе Циклы Паскаль