Читайте также:
|
|
Составитель А.М. Сулейманова
УДК 681.3
ББК 32.973.26-018.2.75
РЕАЛИЗАЦИЯ АЛГОРИТМОВ РАЗВЕТВЛЯЮЩЕЙСЯ И ЦИКЛИЧЕСКОЙ СТРУКТУРЫ В ИНТЕГРИРОВАННОЙ СРЕДЕ ТУРБО ПАСКАЛЬ: Методические указания к лабораторному практикуму по курсу «Информатика и программирование»/ Уфимск. гос. авиац. техн. ун-т; Сост. А.М Сулейманова.- Уфа, 2003.- 22 с.
Содержатся сведения, необходимые для составления алгоритмов и программ, представлены способы реализации программ разветвляющейся и циклической структуры. Практическое применение иллюстрируется различными примерами. Обсуждается методика выполнения лабораторной работы. Приведены перечни заданий на выполнение лабораторных работ.
Библиогр.: 3 назв.
Рецензенты: Р.В.Насыров, Л.Ф.Розанова
© Уфимский государственный
авиационный технический
университет, 2003
СОДЕРЖАНИЕ
1. ЦЕЛЬ РАБОТЫ....................................... 4
2. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ............................. 4
2.1. Оператор присваивания............................ 4
2.2. Составной оператор................................ 5
2.3. Условные операторы............................... 5
2.3.1. Оператор IF................................. 5
2.3.2. Оператор CASE.............................. 8
2.4. Операторы цикла.................................. 10
2.4.1. Оператор WHILE............................. 10
2.4.2. Оператор REPEAT............................ 11
2.4.3. Оператор FOR............................... 13
2.5. Вложенные циклы................................. 14
2.6. Оператор перехода и пустой оператор.................14
3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.................... 17
4. ТРЕБОВАНИЯ К ОТЧЕТУ............................. 18
5. КОНТРОЛЬНЫЕ ВОПРОСЫ........................... 18
6. ВАРИАНТЫ ЗАДАНИЙ............................... 18
СПИСОК ЛИТЕРАТУРЫ................................. 22
ЛАБОРАТОРНАЯ РАБОТА
РЕАЛИЗАЦИЯ АЛГОРИТМОВ РАЗВЕТВЛЯЮЩЕЙСЯ И ЦИКЛИЧЕСКОЙ СТРУКТУРЫ В ИНТЕГРИРОВАННОЙ СРЕДЕ ТУРБО ПАСКАЛЬ
1. ЦЕЛЬ РАБОТЫ
Целью настоящей работы является изучение методов программирования алгоритмов с разветвляющейся и циклической структурой.
2. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Операторы языка программирования Turbo Pascal, представленные в нужной последовательности, позволяют реализовать алгоритм решения задачи. При этом каждый из операторов выполняет некоторое действие над данными.
Операторы Turbo Pascal подразделяются на две группы: простые и структурированные. Простые операторы не содержат в себе других операторов; структурированные включают в себя другие операторы - как простые, так и структурированные. (В последнем случае в состав операторов могут входить и другие операторы, иными словами, возможно множество уровней вложенности операторов.)
К простым операторам относятся оператор присваивания, оператор перехода и пустой оператор, а к структурированным - составной оператор, условные операторы (IF и CASE) и операторы цикла (WHILE, REPEAT и FOR).
2.1. Оператор присваивания
Нам уже известно, что знак присваивания (:=) делит этот оператор на две части. В правой части представлено выражение, состоящее из идентификаторов констант, переменных, функций и знаков операций, которое необходимо вычислить. После вычисления полученное значение присваивается переменной, указанной в левой части оператора. При этом тип переменной должен быть совместим с типом вычисленного выражения.
Вот примеры операторов присваивания:
а:= b+с;
а:='Ь';
new:=234;
x:= true;
2.2. Составной оператор
Составной оператор представляет собой последовательность некоторых операторов, выполняющихся в том порядке, в каком они представлены в тексте программы. Зарезервированные слова BEGIN и END являются так называемыми операторными скобками, в которые заключены операторы, входящие в составной оператор. Когда, в зависимости от определенного условия, требуется обеспечить последовательное выполнение некоторого набора операторов, без составного оператора не обойтись.
Составной оператор имеет вид
begin SI; S2; … Sn end;
Здесь S1-Sn - операторы, образующие составной оператор; зарезервированные слова BEGIN и END - операторные скобки. Частный случай составного оператора – раздел операторов (или тело) любой программы на Turbo Pascal. Составной оператор может включать другие составные операторы (т.е. составным может быть любой из операторов S1-Sn), причем допускается любой уровень вложенности.
2.3. Условные операторы
Если в программе, в зависимости от некоторого условия, требуется выбрать тот или иной вариант действий, можно воспользоваться одним из условных операторов. В Turbo Pascal предусмотрены два условных оператора - IF и CASE.
2.3.1. Оператор IF
Оператор IF имеет вид:
If р then a1 else а2
При выполнении этого оператора сначала вычисляется некоторое логическое выражение Р (условие), в случае истинности которого выполняется оператор А1, а в случае ложности - оператор А2. Использованные здесь ключевые слова IF, THEN и ELSE имеют смысл если, то и иначе соответственно.
Возможен сокращенный вариант оператора IF:
if р then a1
Здесь, если условие Р истинно, выполняется оператор al. Если же условие Р ложно, управление просто передается следующему (за оператором IF) оператору в программе. Можно сказать, что первый вариант оператора IF осуществляет выбор между двумя действиями, а второй - между действием и отсутствием действия.
Что представляет собой условие? В принципе, в этом качестве может быть просто использовано логическое значение TRUE или FALSE, либо константа логического типа, имеющая одно из этих значений. Ошибка здесь зафиксирована не будет. Однако в этом случае теряется смысл применения оператора IF, поскольку заранее известно, какое действие будет выполнено. Например, если D - константа типа Boolean, имеющая значение TRUE, то использовать оператор IF
if d then c:= a+b else c:= a-b;
бессмысленно, поскольку заведомо известно, какое действие будет выполнено, и вместо условного оператора следует просто записать
с:= а+b;
Поэтому, как правило, в качестве условия используется переменная логического типа (типа Boolean) либо один из операторов сравнения. Сравнивать между собой числа и другие значения в Turbo Pascal можно с помощью шести операторов. Речь идет об операторах > (больше), < (меньше), = (равно), <> (не равно), >= (больше или равно) и <= (меньше или равно). Результат сравнения всегда представляет собой значение логического типа. Так, результатом сравнения 77>63 будет TRUE, а результатом сравнения 82<47 - FALSE.
В условии также широко могут использоваться три логических оператора: NOT, AND и OR. Например, выражение
x1 and х2
будет иметь значение TRUE, если xI и x2 принадлежат логическому типу и оба равны TRUE.
Вот примеры операторов IF, которые могут встретиться в программах:
if x > y then z:= x /2 else z:= y +2;
if a and b > c then d:= a+b else d:= c;
Во многих программах, в зависимости от некоторого условия, часто требуется выполнить не одно, а последовательность действий. Однако оператор IF в Turbo Pascal обеспечивает выполнение единственного оператора, присутствующего после зарезервированного слова THEN или ELSE. Выйти из положения можно, применив составные операторы. Оператор IF с составными операторами выглядит так:
if р then begin s1 s2; ..sn end
else begin v1; v2;. .vn end;
Здесь s1-sn и v1-vn - некоторые операторы, образующие составные операторы.
Turbo Pascal допускает вложенность операторов IF. Рассмотрим пример. Если некоторая переменная X положительна, требуется извлечь из нее квадратный корень, если отрицательна - возвести в квадрат, а если равна нулю - прибавить к ней 2. Эту задачу можно реализовать следующим образом:
if x>0 then x:= sqrt(x)
else if x<0 then x:= sqr(x)
else x:= x+2;
При вкладывании операторов IF один в другой может возникнуть синтаксическая неоднозначность. В самом деле, к какому из двух ключевых слов IF относится ключевое слово ELSE в операторе:
if x then
if у then sl
else s2
Варианты можно представить, введя операторные скобки (пары зарезервированных слов BEGIN..END). Первый вариант:
if x then
begin
if у then s1
end
else s2
Второй вариант:
if x then
begin
if у then s1
else s2
end;
Какой из двух вариантов изберет компилятор Turbo Pascal? Все очень просто. Компилятор ассоциирует ключевое слово ELSE с ближайшим ключевым словом IF, расположенным в тексте программы выше и еще не связанным с иным ключевым словом ELSE, в нашем случае действенным окажется второй вариант. Если же потребуется реализовать первый вариант, можно воспользоваться операторными скобками.
2.3.2. Оператор CASE
Рассмотренный выше оператор IF позволяет осуществить выбор одной из двух альтернатив. Но что если число вариантов нужно иметь больше? Например, если требуется согласно номерам дней недели отображать на экране их названия? Многие начинающие программисты для решения подобной задачи предпочтут воспользоваться последовательностью операторов IF:
if х=1 then write (понедельник);
if х=2 then write (вторник);
if x=3 then write (среда);
if x=4 then write (четверг);
if x=5 then write (пятница);
if x=6 then write (суббота);
if x=7 then write (воскресенье);
Однако такой подход затрудняет понимание исходного текста программы, поскольку сразу неочевидно, что здесь будет выполнен один и только один из семи операторов IF. Кроме того, такая конструкция малоэффективна, поскольку при этом условие придется проверять во всех семи операторах IF и это неизбежно увеличит время выполнения программы.
Целесообразнее воспользоваться вложенным оператором IF. Один вложенный оператор часто будет выполняться быстрее последовательности из нескольких операторов IF, поскольку при совпадении первого условия управление сразу передается следующему (после вложенного) оператору, без проверки оставшихся условий, но такая конструкция чересчур громоздка. (Считается, что в операторе IF допустимы не более двух-трех уровней вложения.) Здесь всего семь альтернатив, а что если вариантов выбора потребуется иметь несколько десятков? Применение оператора IF в этом случае крайне неудобно. Выйти из положения позволяет оператор CASE.
Дата добавления: 2015-04-11; просмотров: 83 | Поможем написать вашу работу | Нарушение авторских прав |