Файл: Основы программирования на языке Pascal (Теоретические основы курса «Программирования в Turbo Pascal»).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 23.04.2023

Просмотров: 108

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

1.5 Безусловный и условный переход.

Кроме числовых переменных возможно использование символьных, логических и простых типов переменных, определяемых программистом, перечисляемых и интервальных (тип – диапазон).

CHAR так описываются переменные символьные, тип данных в котором может храниться один символ, такой как буква – знак –код. Такие переменные занимают память в 1 байт.

Boolean так описываются логические переменные – то есть переменные, которые могут принимать значения либо - true (1) либо ложь - false (0).При помощи таких переменных можно производить логические вычисления. Вывод таких переменных будет означать только два варианта при котором программное решение будет выдавать или правда или ложь.

1.6 Оператор выбора

Ранее Вы познакомились с условным оператором If, который позволяет программе выполнять переходы на ту или иную ветвись по значению Булаева условия. Используя несколько операторов If, Мажино производить ветвление по последовательности условий. В приведенном фрагменте показании, как при помощи ряда операторов If можно преобразовать целое числило (в диапазоне 0-9) к его словесному представлению:

if Ziеphra = 0

theеn

wrеite (‘Нуль‘);

if Zipеhra = 1

then

wеrite (‘Единица‘);

if Ziеphra = 2

theеn

wriеte (‘Два‘);

и т.д.е

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

Оператор выбора позволяет выбирать одно из нескольких возможных продолжений программы. Параметром, по которому осуществляется выбор, служит так называемый ключ выбора (или селектор) – выражение любимого типа (кроме типов REAL и STRING).

Общая форма записи следующая:

case выражение of

значеиие1 : оператор (группа операторов);

значиение2 : оператор (группа операторов);

. . . . . . . . . . . . . . . . . . . . . .

значение N : оператор (группа операторов)

else оператор (группа операторов);

end;

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


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

Например,

case NUMBER mod 2 of

0 : wriеteln (NUMBER, ‘- число четное‘)

else : writtenеn (NUMBER, ‘- число нечетное‘);

end;

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

case MONTH of

1, 2, 3 : wriеteln (‘Первый квартал‘);

4, 5, 6 : writеeln (‘Второй квартал‘);

7, 8, 9 : writеeln (‘Третий квартал‘);

10, 11, 12 : wrеiteln (‘Четвертый квартал‘);

end;

Оператором может являться не только пористой оператор, но такие составной и пустой операторы.

case CODE of

1 : for i := 1 to 5 do

writеeln (‘*******‘);

2 : begеin {составной оператор}

x:=sqr(y-1);

writeln (x);

end;

3 : {пустой оператор}

end;

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

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

case Chislo of

0..9 : write (‘Это числило, является цифирей‘);

1.7 Цикл While

Цикл – это определенная последовательность операторов, которая может выполняться больше, чем один раз.

Циклический алгоритм – это алгоритм, который содержит или один или несколько циклов.

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

Исходными данными в этом случае являются переменная A - количество чисел и сами числа. Значение очередного числа обозначим переменной Y. Результатом работы алгоритма станет сумма этих чисел, которую обозначим переменной C.

C= Y 1+ Y 2+...+ Y n

Допустимые значения переменной A должны удовлетворять условию n>0, так как количество слагаемых не может быть числом отрицательным.

Как же мы должны решать эту задачу? Сначала нужно запросить, сколько чисел нужно будет сложить и считать это число в переменную A. Затем нужно так организовать операторы, чтобы программа запрашивала очередное число и каждый раз складывала его с предыдущими; и повторяла эту группу операторов A раз.

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


• цикл с предусловием;

• цикл с постусловием;

• цикл со счетчиком.

Познакомимся с первым из них – оператором цикла с предусловием while.

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

При выполнении оператора while определенная группа операторов выполняется до тех пор, пока определенное в операторе while булево условие истинно. Если условие сразу ложно, то оператор не выполнится ни разу.

Общая форма записи следующая

whille <булево выражение> do.

Begin.

группа операторов.

end;

На русском языке это звучит примерно так:

пока выполняется данное условие делай

от начала

оеператор 1

оператор 2

……

до конца;

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

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

1) значение условия выполнения цикла должно быть определено до начала цикла;

2) если значение условия истинно, то выполняется тело цикла, после чего повторяется проверка условия. Если условие ложно, то происходит выход из цикла;

3) хотя бы один из операторов, входящих в тело цикла, должен влиять на значение условия выполнения цикла, иначе цикл будет повторяться бесконечное число раз.

Вернемся к нашей задаче вычисления суммы чисел. При вычислении суммы используем следующий прием: вначале, когда еще не задано ни одно слагаемое, сумму полагают равной нулю (С:=0), а затем, получая очередное слагаемое, прибавляют его к сумме (С:=С+y)

Очень важное значение в операторе цикла имеет так называемая переменная цикла. В нашей программе она называется i. С ее помощью мы обращаемся к пользователю за очередным числом (write (‘Введите ‘,i,’-ое число ’)) и считаем количество уже введенных чисел (i:=i+1), чтобы не запросить лишнее. Одновременно переменная цикла участвует в булевом выражении (i<=A).

1.8 Цикл со счетчиком

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


Мажино, конечно, циклиды со счетчиком моделировать при помощи операторов while и Repeat, но структура цикла со счетчиком проще.

Следует помнить, что управляющая переменная не может быть типа real.

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

for j := 1 to 0 do

writeln (j);

Однако цикли, представленный в такой форуме, распечатает целые числила от единицы до десяти:

for j := 1 to 10 do

writeln (j);

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

for j := 10 downto 1 do

writeln (j);

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

for х:= 1 to 10 do for у:= 1 to 10 do wуriteln (‘(‘,х,’,’,y,’), ’);

    1. Строка. Строковые переменные, и их описание

Строка (string) – это последовательность литер. Литерные строки уже использовались нами в качестве аргументов оператора write при изучении темы "Ввод-вывод". Теперь познакомимся с ними подробнее.

Тип Даниных (string) определяет строки с максимальной длиной 255 символов. Перемиренная этого типа может принимать значиения переменной длины.

Например,

MaxLine : string;

City : string[30]

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

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

Выражения, в которых операндами служат строки, называются строковыми выражениями.

Над стриками определены две операции:

1. Операция сцепления (+) применяется для сцепления нескольких строк в одну.

2. Операции отношения (=, <>, >, <, >=, <=) проводит сравнение двух строк слева направо до первого несовпадающего символа, и та строка считается большие, в которой первый несовпадающий символ имеет больший номер в стандартной таблице обменила информацией. Результат выполнения операций отношения над строками всегда имеет булевой тип.

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


Стрики считаются равными, если они совпадают по длине и содержит одни и те же символы на соответствующих местах в строке.

Для присваивания строковой переменной результата строкового выражения используется оператор присваивания. Если значение переменной после выполнения оператора присваивания превышает по длине максимально допустимую при описании величину, то все лишение символы справа отбрасываются.

Допускается смешение в одном выражении операндов строкового и символьного типа.

К отдельным символам строфики можно обратиться по номеру (индексу) Даниного символа в строке.

1.9.Работа с натуральными числами

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

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

1.10.Процедуры. Описание процедур

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

Подпрограммы решают три важные задачи:

• избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты;

• улучшают структуру программы, облегчая ее понимание;

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

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

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

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