Помощничек
Главная | Обратная связь


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

Результаты работы оформить отчетом.

Лабораторная работа №3

Программирование алгоритмов разветвляющейся структуры.

Цель работы: выработатьнавыки разработки алгоритмов ветвления, научиться правильно использовать конструкции языка Turbo Pascal при разработке программ, содержащих условие.

 

Основные теоретические положения.

Для программирования алгоритмов с ветвлением в языке Pascal используются три оператора:

1. Оператор условного перехода.

Условный оператор в языке Pascal используется в двух формах:

полная форма:

if условие then D1 else D2,

если условие, определяемое логическим (булевским) выражением верно, выполняется один оператор (простой), или блок операторов (составной оператор) – D1, следующие за then, в противном случае выполняются операторы, стоящие после else - D2;

сокращенная форма:

if логическое выражение then D1,

если булевское выражение истинно, то выполняется один оператор (простой), или блок операторов (составной оператор) - D1, далее выполняется оператор, следующий за условным оператором. Если булевское выражение ложно, то будет выполняться оператор, следующий за этим условным оператором.

Условия могут быть вложенными и в таком случае, любая встретившаяся часть else соответствует ближайшей к ней «сверху» части then.

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

2. Оператор варианта

В программировании очень часто возникают ситуации, когда требуется провести выбор из достаточно большого количества вариантов. В языке Pascal в этом случае используется оператор case.

case селектор of

K1: D1;

...

Ki: Di

else D

end,

 

Оператор case состоит из выражения (селектора или переключателя варианта) и списка операторов – D1,...Di, каждому из которых предшествует одна или более констант K1,...Ki (они называются константами выбора) или ключевое слово else и следующих за ним одного или нескольких операторов.

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

Порядковые типы отличаются тем,что каждый из них имеет конечное число возможных значений. Эти значения можно определённым образом упорядочить (отсюда – название типов) и, следовательно, с каждым из них можно сопоставить некоторое целое число – порядковый номер значения.

Порядковые типы - это данные, для которых можно чётко ответить на вопросы: следующее значение? предыдущее значение? Например - целые числа: за числом 8 следует 9, а перед ним - 7. Символьные данные - упорядочены по своим кодовым значениям. Для порядковых типов в Паскале есть функции: ORD(X) - порядковый номер X, PRED(X) - предыдущее значение для X, SUCC(X) - значение, следующее за X. Где X - выражение.

Оператор case приводит к выполнению оператора, которому предшествует константа выбора, равная значению селектора или диапазону выбора, в котором находится значение селектора.

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

3. Оператор безусловного перехода:

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

goto M,

где M – метка, которая должна быть описана в разделе Label.

 

Пример разработки программы разветвленной структуры.

1. Определить, поместится ли открытка со сторонами a и b в конверте со сторонами x и y.

Program prim1;

var a,b,x,y:integer;

Begin

write('Введите через пробел стороны открытки ');

readln(a,b);

write('Введите через пробел стороны конверта ');

readln(x,y);

if ((a<x)and(b<y))or((b<x)and(a<y)) then

Writeln('Открытка помещается в конверт')

Else

writeln('Открытка в конверт не входит');

readln;

End.

 

2. По введенному часу определить время суток.

Program prim2;

Var hour:integer;

Begin

Readln(hour);

Case hour of

0,24:writeln('Полночь');

12: writeln('Полдень');

1..3: writeln(Ночь');

4..10: writeln('Утро');

11,13..16: writeln('День');

Writeln('Вечер')

else writeln('Ошибка при вводе числа');

end;

readln;

End.

 

3. Задания для самостоятельной работы.

Раздел 1.

1. Написать программу решения уравнения ax2 + bх + c = 0 для произвольных a, b,c.

2. Определить, какая из двух точек - M1(x1,y1) или M2(x2,y2) - расположена ближе к началу координат. Вывести на экран дисплея координаты этой точки.

3. Сгенерировать случайное вещественное число с двумя знаками в целой части и определить что больше – сумма цифр целой части или сумма первых трех цифр дробной части.

4. Определить, попадает ли точка M(x,y) в круг радиусом r с центром в точке (x0,y0).

5. Вычислить:

6. Определить, является ли целое число N четным числом.

7. Дано действительное число x вычислить значение y:

а)

x <0 0 £ x £ p/2 в остальных случаях

б)

x >π/2 0 £ x £ p/2 в остальных случаях  

8.

Дано действительное а. Для функций f(a), графики которых представлены на рисунке 2.1, вычислить f(a).

 
 

 

 


а) б)

 

 

 

в) г)

Рисунок 2.1 – Графики функций

9. Определить, является введенное 3-хзначное число палиндромом

10. В небоскрёбе n этажей и всего один подъезд. На каждом этаже по 3 квартиры. Лифт может останавливаться только на нечетных этажах. Человек садится в лифт и набирает номер нужной ему квартиры n. На какой этаж дол-жен доставить лифт пассажира?

11. Написать программу, которая печатает True или False в зависимости от того, выполняются или нет заданные условия:

· квадрат заданного трехзначного числа равен кубу суммы цифр этого числа;

· сумма двух первых цифр заданного четырехзначного числа равна сумме двух его последних цифр;

· среди цифр заданного трехзначного числа есть одинаковые;

· среди первых трех цифр из дробной части заданного положительного вещественного числа есть цифра 0.

· сумма цифр заданного трехзначного числа является чётным числом.

Раздел 2.

1. Арифметические действия над числами пронумерованы следующим образом: 1 — сложение, 2 — вычитание, 3 — умножение, 4 — деление. Дан номер действия и два числа A и B (В не равно нулю). Выполнить над числами указанное действие и вывести результат.

2. С клавиатуры вводится символ. Определить, является ли символ цифрой, если нет, то является ли он буквой и к какому алфавиту – русскому или латинскому принадлежит, иначе вывести на экран сообщение «Другой символ».

3. Написать программу, которая по введенному номеру времени года (1 — зима, 2 — весна, 3 — лето, 4 — осень) выдает соответствующие этому времени года название месяцев и количество дней в каждом из них.

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

5. Определить правильность даты, введенной с клавиатуры (число — от 1 до 31, месяц — от 1 до 12). Если введены некорректные данные, то сообщить об этом.

6. Числа a, b, c обозначают дату. Проверить корректность этой даты.

7. Дано целое число в диапазоне от 100 до 999. Вывести строку — словесное описание данного числа, например: 256 — "двести пятьдесят шесть", 814 — "восемьсот четырнадцать".

8. Составить программу, которая по заданным году и номеру месяца определяет количество дней в этом месяце. Напишите программу, которая запрашивает номер месяца и год и печатает название месяца и число дней в нем. Например: 2 1992 - февраль 29.

9. В двенадцатилетнем цикле года носят названия животных: мышь, корова, тигр, заяц, улитка, змея, лошадь, овца, обезьяна, курица, собака, свинья. Известно, что 1984 год был годом мыши. Написать программу, которая вводит номер года нашей эры с клавиатуры и выводит его название по 12-ти летнему циклу. (1001 – корова).

10. Числа x,y,z обозначают дату. Найти номер этого дня с начала года.

11. Числа a,b,c обозначают дату. Определить, сколько полных дней осталось до конца года

12. По введенной дате (a,b,c обозначают дату) определить следующее число

13. Представить вещественное число в денежном формате

14. Для целого числа k от 1 до 99 напечатать фразу “Мне k лет”, учитывая при этом, что при некоторых значениях k слово “лет” надо заменить на слово “год” или “года”. Например, 11 лет, 22 года, 51 год.

 

Результаты работы оформить отчетом.

Вопросы к защите работы.

1. Что такое условный алгоритм?

2. Какие условные конструкции существуют в языке программирования Pascal?




©2015 studopedya.ru Все права принадлежат авторам размещенных материалов.