Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Общие пояснения. 1.Алгоритмы с ветвлениями подразумевают, что в них существует больше одного пути






 
 

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

 
 

Ветвящиеся алгоритмы могут быть построены как из стандартных структур ветвления (А), так и из неполных (В).

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

2. Реализация структур ветвления на Паскале осуществляется с помощью условных операторов " if ".

 

Таблица 6. Запись " if" операторов на Паскале

Форма (А) запишется: Форма (В) с операторами по " да":
if < услов.истинно> then begin < операторы ветви 1> end else begin < операторы ветви 2> end; if < условие истинно> then begin < операторы ветви 1> end;
Форма (Б) с операторами по " нет":
if < условие истинно> then goto Met; < операторы ветви 1>; Met:...

 


Примеры написания таких операторов:

if A> 0 then Y: =sin(X) else Y: =cos(X);

if (A+B > C) and (B < 0) then { если требуется проверка}

Writeln('Ветвь 1') { нескольких условий, }

else { каждое отношение следует}

Writeln('Ветвь 2'); { заключать в скобки }

if Pr then {здесь Pr – логическая переменная, }

begin {если Pr равно TRUE выполнится этот блок}

Writeln(' При таких данных решения нет');

Pr: =FALSE;

end;

Если в качестве оператора одной из ветвей используется условный оператор, то можно выбирать один из трех возможных путей. Вообще, количество " if " -операторов должно быть на единицу меньше, чем возможных ветвей алгоритма. Например, если нужно задать Y =-1, при X < 0, Y =0 при X =0 и Y =1 при X > 0, такой алгоритм и соответствующий ему текст на Паскале будет выглядеть:

 

If X< 0 then Y=-1

else

if Y> 0 then Y=1

else Y=0;

 

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

Таблица 7. Операции отношений

Операция Знак операции
  Равно =  
  Не равно < >  
  Больше >  
  Больше или равно (не меньше) > =  
  Меньше <  
  Меньше или рано (не больше) < =  
         

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

3. В программе на Паскале можно пользоваться константами, которые имеют не только значение, но и имя. Такие константы должны быть описаны в блоке описаний, в специальном разделе описаний констант. Использование таких именованных констант позволяет " вытащить" задание значений констант в начало программы, где их можно, при необходимости, изменить в одном месте. Пример раздела описаний констант:

CONST

MAXBALL = 5;

MINBALL = 2;

ERR = ' Ошибка в программе';

ABSNUL = -273.16;

В дальнейшем можно всюду вместо числового значения -273.16 использовать имя ABSNUL и т.д.

Существует ряд констант, которыми можно пользоваться без их описания. Некоторые из них приведены в таблице 8.

 

Таблица 8. Стандартные константы Турбо-Паскаля

Имя Тип Значение Назначение
TRUE boolean True " истина"
FALSE boolean False " ложь"
MAXINT integer +32767 Максимальное целое
MAXLONGINT longint +2147483647 Максимальное длинное целое
PI double 3.14159265358... Число p

 

4. В процессе работы программа пользуется данными, которые берет из ячеек памяти. Каким же образом эти значения попадают в эти ячейки? Существует всего три возможности. Во-первых, значения могут быть занесены в некоторые переменные в самый начальный момент при загрузке программы в память. Такие переменные называются типизированными константами (хотя по сути их правильнее называть инициализированными переменными). Во-вторых, переменная (ячейка памяти) может получить значение при выполнении оператора присваивания. Наконец, в переменную можно ввести значение с помощью процедуры ввода данных с внешнего устройства.

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

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

Read(< список переменных>); или

Readln(< список переменных>);

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

Примеры:

Read(N); {программа ждет, пока не будет набрано число на клавиатуре и не нажата клавиша < Enter>, после чего переменная с именем N получит набранное значение}

Read(A, B, C); {необходимо набрать через пробел три числа и нажать < Enter>, первое попадет в ячейку с именем A и т.д.}

Нельзя в списке имен писать константы или выражения.

Если в программе требуется выполнить ввод данных с клавиатуры, предварительно следует предусмотреть команды вывода на экран запроса, какие параметры и в каком порядке пользователь должен вводить, например:

Writeln('задай коэффициенты уравнения: A, B, C');

Readln(A, B, C);

или

Writeln('Сколько вариантов будем считать? ');

Readln(N);

Разбор контрольного варианта






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.