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


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





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

повторений.

Параметром цикла называется переменная, служащая для проверки

условия выполнения из цикла.

Оператор For имеет формат, который представляет рисунок 7.7.

< Оператор_For>:: =

For < Идентификатор>: = < Выражение_1>

To < Выражение_2>

Downto

Do < Оператор>

Рисунок 7.7 – Синтаксическая диаграмма оператора For

Служебные слова в переводе с английского означают следующее: For

для, To – до в сторону увеличения, Downto – до в сторону уменьшения, Do

делать.

На синтаксической диаграмме (см. рисунок 7.7) < Идентификатор> – это имя параметра цикла. В качестве параметра может быть использована переменная любого скалярного типа, кроме вещественного (т. е переменная перенумерованного типа). < Выражения_1 и 2> – это выражения того же типа,

что и параметр цикла. < Выражения> вычисляются один раз перед первым

выполнением тела цикла.

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

< Выражение_1> указывает начальное значение параметра цикла, < Выражение________2> – конечное значение параметра цикла.

Если в операторе For используется служебное слово To, то значение параметра автоматически возрастает при каждом прогоне цикла ( после выполнения тела цикла). Возрастающее значение параметра вычисляется автоматически с помощью встроенной функции Succ, т.е. параметр принимает

следующее значение типа параметра. В этом случае для выполнения тела цикла необходимо, чтобы значение < Выражения_1> было меньше или равно значению < Выражения_2>. В противном случае тело цикла не выполнится ни разу.

Если в операторе For используется служебное слово Downto, то значение параметра автоматически убывает при каждом прогоне цикла ( после выполнения тела цикла). Убывающее значение параметра вычисляется автоматически с помощью встроенной функции Pred, т.е. параметр цикла

принимает предыдущее значение типа параметра. В этом случае для выполнения тела цикла необходимо, чтобы значение < Выражения_1> было больше или равно значению < Выражения_2>. В противном случае тело цикла не выполнится ни разу.

Перед каждым выполнением тела цикла происходит сравнение текущего значения параметра с его предельным значением, определяемым < Выражением_2>. Если текущее значение меньше либо равно (в случае To) предельного значения или больше либо равно (в случае Downto) предельного

значения, тело цикла выполняется.

Операторы тела цикла не должны изменять значение параметра цикла.

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

Вопрос 35. РЕПИТ



Оператор цикла с постусловием REPEAT…UNTIL

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

Операторы (Оператор1, Оператор2, … ОператорN), образующие тело цикла, будут выполнятся циклически, до тех пор пока значение “Условия” не станет равно TRUE (истина). Иными словами, в цикле REPEAT…UNTIL условием продолжения итераций является невыполнение “Условия” (его значение FASLE – ложь).

Условие цикла может быть логической константой, переменной или логическим выражением.

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

Вопрос 36. ПРЕДУСЛОВИЕ ВАЙЛ


цикл с предварительным условием - условие цикла проверяется перед выполнением тела цикла;

цикл с последующим условием - условие цикла проверяется после выполнения тела цикла.

Остановимся на цикле с предварительным условием (кратко, с предусловием). Цикл с предусловием – это цикл, который повторяется до тех пор, пока условие выполняется (истинно). Блок-схема цикла с предусловием представлена на рисунке

Для реализации цикла с предусловием используется оператор While.

Если тело цикла состоит из нескольких операторов, их нужно заключить в операторные скобки begin…end.Значение выражения < условие>, записанное после слова While, проверяется перед каждым выполнением оператора (операторов) тела цикла.

Если < условие> верно (истинно), выполняется тело цикла, и снова вычисляется и проверяется выражение < условия>. Если результат проверки < условия> неверен (ложный), происходит выход из цикла.

Важно помнить:

 Если условие сразу оказывается ложным, цикл с предусловием не выполнится ни разу!

 В теле цикла должны быть операторы, которые в какой-то момент изменят значение условия, сделав его ложным. Если этого не случится, цикл будет бесконечным, то есть программа «зациклится».

Цикл с предусловием while (пока условие истинно) Цикл с постусловием repeat (до истинности условия)
1. До начала цикла должны быть сделаны начальные установки переменнных, управляющих условием цикла, для корректного входа в цикл.
2. В теле цикла должны присутствовать операторы, изменяющие переменые условия так, чтобы цикл через некоторое число итераций завершился.
3. Цикл работает пока условие истинно (пока True). 3. Цикл работает пока условие ложно (пока False).
4. Цикл завершается, когда условие становится ложным (до False). 4. Цикл завершается, когда условие становится истинным (до True).
5. Цикл может не выполниться ни разу, если исходное значение условия при входе в цикл равно False. 5. Цикл обязательно выполняется как минимум один раз.
6. Если в теле цикла требуется выполнить более одного оператора, то необходимо использовать составной оператор. 6. Независимо от количества операторов в теле цикла использование составного оператора не требуется.
Цикл со счетчиком for
1. Начальная установка переменной счетчика циклов до заголовка не требуется.
2. Изменение в теле цикла значений переменных, стоящих в заголовке цикла, не допускается.
3. Количество итераций цикла неизменно и точно определяется значениями нижней и верхней границ и шага цикла.
4. Нормальный ход работы цикла может быть нарушен оператором goto или процедурами Break и Continue.
5. Цикл может не выполниться ни разу, если шаг цикла будет изменять значение счетчика от нижней границы в направлении, противоположном верхней границе.

 Зациклившуюся программу следует остановить с помощью команды Программа -> Завершить, иначе она будет выполняться бесконечно (точнее, до выключения компьютера).

 В операторах for и while точка с запятой не ставится ни перед словом do, ни после него!

ВОПРОС 37

Вопрос 38. Контин и брейк



Для управления циклами используют процедуры-операторы Continue и Break, которые можно вызвать только в теле цикла.

Процедура-оператор Continue передаёт управление оператору проверки условия, игнорируя оставшуюся часть цикла.

Пример:

i: = 1;

While i< =2 do

Begin

Writeln(‘Privet’);

Inc(i);

Continue;

Writeln(‘Prosto text);

End;

…..

Результат работы цикла:

Privet

Privet

Процедура-оператор Break прерывает выполнение цикла и передаёт управление первому оператору расположенному за блоком цикла.

Пример:

I: = 1;

While i< =2 do

Begin

Writeln(‘Privet’);

Inc(i);

Break;

Writeln(‘etogo net’);

End;

…..

Результат работы цикла:

Privet

Вопрос 39.



Перечислимый скалярный тип не является стандартным для языка Паскаль.

Он должен быть описан программистом, поэтому относится к описанным скалярным типам.

Объявление (ЗАДАНИЕ ПЕРЕЧИСЛИМОГО ТИПА):

 

 

 

 

 

 

 

 

Вопрос 40.



Тип данных диапазон/ ограниченный/ интервальный

Создаётся путём накладывания ограничений на другой тип (базовый тип). Базовым может быть любой скалярный перенумерованный тип.

Способ задания: < тип_диапазон> :: = < константа1> .. < константа2>

константа1 < константа2

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

Пример: Type TDecimalDigit = ‘0’..’9’;

TDayOff = Sat..Sun;

Достоинства типа диапазон:

· Экономное использование памяти транзистором при представлении переменных

· Обеспечивает возможность контроля на этапах трансляции, во время выполнения

Широко применяется в комплексе с производными типами (в обработке массивов).

Вопрос 41. массивы



Массивы — это наборы однотипных элементов, расположенных в памяти последовательно друг за другом, доступ к которым осуществляется по индексу (индексам). Массивы Delphi могут быть: статическими (они определены установленными, неизменяемыми размерами) и динамическими (не имеющие фиксированного размера и длинны). Кроме того, существуют также массивы параметров. Они не являются типом данных, а служат для эмуляции процедур и функций с переменным числом параметров.

Массивы (как статические, так и динамические) могут быть одномерными (доступ к элементам осуществляется по одному индексу) и многомерными (доступ к элементу массива производится по набору индексов; количество индексов при этом должно соответствовать количеству измерений массива).
Объявление массива

Массив, как и любая переменная программы, перед использованием должен быть объявлен в разделе объявления переменных.

В общем виде инструкция объявления одномерного массива выглядит следующим образом:

Имя: array [нижний_индекс..верхний_индекс] of тип

Имя – имя массива;

array – зарезервированное слово языка Delphi, обозначающее, что объявляемое имя является именем массива;

нижний_индекс и верхний_индекс – целые константы, определяющие диапазон изменения индекса элементов массива и, неявно, количество элементов (размер) массива;

тип – тип элементов массива.

 

Пример:

temper: array[1..31] of real;

коef: array[0..2] of integer;

name: array[1..30] of string[25];

В общем виде инструкция объявления двумерного массива выглядит так:

Имя: array[НижняяГраница1..ВерхняяГраница1, НижняяГраница2..ВерхняяГраница2] of Тип

Имя – имя массива;

array – слово языка Delphi, указывающее, что объявляемый элемент данных является массивом;

НижняяГраница1, ВерхняяГраница1, НижпяяГраница2, ВерхняяГраница2 – целые константы, определяющие диапазон изменения индексов и, следовательно, число элементов массива;

Тип – тип элементов массива.

 

Пример:

itog: array [1..12, 1..6] of integer
Индекс массива

Номер элемента массива называется индексом. Индекс – это значение порядкового типа, определенного, как тип индекса данного массива. Очень часто это целочисленный тип ( integer, word или byte ), но может быть и логический и символьный.

Пример использования массива
Пример 12.4. Найти количество соседних пар элементов массива, в которых хранится заданный символ.

program Project3;

const m=10;

type m1=array[1..m] of char;

var a: m1; i, s: integer; k: char;

begin

s: =0;

write('k=');

readln(k); // ввод искомого символа

for i: =1 to m-1 do

begin

write('a[', i, ']=');

readln(a[i]); // ввод значений массива a

//сравнение символов

if (a[i]=k) and (a[i+1]=k) then s: =s+1;

end;

write('s=', s); // вывод результата

readln;

end.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2017-03-08; Просмотров: 2015; Нарушение авторского права страницы


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