Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика

..pdf
Скачиваний:
9
Добавлен:
15.11.2022
Размер:
1.24 Mб
Скачать

C помощью процедур writeln и write выводятся подсказки пользователю о том, что необходимо последовательно ввести значения A, B, C, T.

C помощью процедуры readln пользователю предлагается ввести значения данных величин.

Далее выполняется вычисление оплаты за месяц с помощью условного оператора if. Если было потрачено времени в пределах нормы, то расчет производится по формуле S = B . Если же времени на разговоры по телефону было потрачено больше нормы, то расчет ведется по формуле S = B + (T A) C .

Для вывода значения оплаты за месяц используется стандартная процедура writeln.

С помощью стандартной процедуры readln пользователю предлагается завершить выполнение программы, нажав кла-

вишу Enter.

Рассмотрим особенности выполнения программы для различных значений A, B, C, T, вводимых пользователем.

Пусть пользователь ввел значения A = 100, B = 50, C = 5, T = 120. Поскольку логическое выражение 120<=100 принимает значение false, выполняется оператор присваивания, расположенный после ключевого слова else, т.е. оплата вычисляется по формуле S = B + (T A)C :

101

Пусть пользователь ввел значения A = 60, B = 100, C = 2,5, T = 50. Поскольку логическое выражение 50<=60 принимает значение true, выполняется оператор присваивания, расположенный после ключевого слова then, т.е. оплата вычисляется по формуле S = B :

Задание № 3. Написать на языке Турбо-Паскаль программу, используя оператор выбора case.

1.Для каждой введенной цифры (0–9) вывести соответствующее ей название на английском языке (0 – zero, 1 – one, 2 – two и т.д.).

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

3.Составить программу, позволяющую получить словесное описание школьных отметок (1 – плохо, 2 – неудовлетворительно, 3 – удовлетворительно, 4 – хорошо, 5 – отлично).

4.Составить программу, которая по введенному номеру времени года (1 – зима, 2 – весна, 3 – лето, 4 – осень) выдавала бы соответствующие этому времени года месяцы.

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

6.Составить программу, которая по данному числу (1–7) выводит название соответствующего ему дня недели.

102

7.Имеется пронумерованный список деталей: 1 – шуруп; 2 – гайка; 3 – винт; 4 – гвоздь; 5 – болт. Составить программу, которая по номеру детали выводит на экран ее название.

8.Даны два действительных положительных числа x и y. Арифметические действия над числами пронумерованы (1 – сложение, 2 – вычитание, 3 – умножение, 4 – деление). Составить программу, которая по введенному номеру выполняет то или иное действие над числами.

9.Написать программу, которая по введенному номеру единицы измерения (1 – килограмм, 2 – миллиграмм, 3 – грамм, 4 – тонна, 5 – центнер) и массы M выдавала бы соответствующее значение массы в килограммах.

Пример выполнения задания № 3:

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

Известно, что в январе, марте, мае, июле, августе, октябре, декабре31 день. Вапреле, июне, сентябре, ноябре30 дней. Вфеврале либо 28 дней, либо, если год високосный, 29 дней. Год считается високосным, если он делится на четыре без остатка, но, если он делится на 100 без остатка, это не високосный год. Однако, если он делитсябезостаткана400, это високосный год.

Ниже приведен пример выполнения данного задания в системе Турбо-Паскаль:

103

Рассмотрим особенности данной программы.

Все переменные объявлены в разделе описания переменных var. Переменная y соответствует году, переменная m – номеру месяца, переменная d – количеству дней в месяце.

Исполняемые операторы программы располагаются между служебными словами begin и end.

C помощью процедуры write выводятся подсказки пользователю о том, что необходимо последовательно ввести значения переменных y и m. C помощью процедуры readln пользователю предлагается ввести значения данных переменных.

Далее выполняется вычисление количества дней в месяце с помощью оператора выбора case:

1.Если значение выражения m совпало со значением одной из констант 1, 3, 5 и так далее (соответствующих январю, марту, маю и т.д.), то переменной d, соответствующей количеству дней, присваивается значение 31.

2.Если значение выражения m совпало со значением одной из констант 4, 6, 9 и так далее (соответствующих апрелю, июню, сентябрюит.д.), топеременнойd присваиваетсязначение30.

3.Если значение выражения m совпало со значением константы 2 (соответствующей февралю), то переменной d присваивается значение в соответствии с рассуждениями о високосном годе, описанными выше. С помощью операции mod проверяется значение

остатка от деления года на 4, 100, 400. Если год делится без остатка на 4 (но при этом остаток от деления на 100 отличен от нуля) либо без остатка на 400, то он считается високосным и переменной d присваивается значение 29. В противном случае год не високосныйи переменной d присваивается значение28.

4. Если совпадения значения выражения m ни с одним из значений констант не произошло, выполняется оператор, расположенный после ключевого слова else, т.е. если пользователь ввел номер несуществующего месяца, то переменной d присваивается значение 0.

104

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

С помощью стандартной процедуры readln пользователю предлагается завершить выполнение программы, нажав кла-

вишу Enter.

Рассмотрим особенности выполнения программы для различных значений года и месяца, вводимых пользователем.

Пусть пользователь ввел значения переменных y = 1998, m = 5. В мае любого года 31 день, поэтому такое количество дней и было выведено на экране:

Пусть пользователь ввел значения переменных y = 2000, m = 9. В сентябре любого года 30 дней, поэтому такое количество дней и было выведено на экране:

Пусть пользователь ввел значения переменных y = 2007, m = 2. В феврале 2007 года 28 дней, так как год не високосный (не делится без остатка на 4). Такое количество дней и было выведено на экране:

Пусть пользователь ввел значения переменных y = 2012, m = 2. В феврале 2012 года 29 дней, так как год високосный

105

(делится без остатка на 4 и не делится без остатка на 100). Такое количество дней и было выведено на экране:

Вопросы для самоконтроля

1.Что называется базовыми конструкциями структурного программирования? Каково предназначение каждой из этих конструкций?

2.Что является целью использования базовых конструкций структурного программирования?

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

if и case?

4. Дана последовательность операторов программы, записанной на языке Турбо-Паскаль:

x:=5;

y:=3;

if (a>=15) and (a<27) then

x:=x+y else

y:=y-x;

Переменные x, y, a имеют тип integer.

Какое значение примут переменные x и y после выполнения данной последовательности операторов для случаев, если переменная a примет следующие значения: a=20; a=27; a=30?

5. Дана последовательность операторов программы, записанной на языке Турбо-Паскаль:

x:=0;

y:=4;

if (y<3) or (x>=1) then

x:=y

106

else y:=x;

x:=x+2;

Переменные x и y имеют тип integer.

Какое значение примут переменные x и y после выполнения данной последовательности операторов?

6. Дана последовательность операторов программы, записанной на языке Турбо-Паскаль:

x:=1;

y:=2;

if sqr(x+y)>10 then

begin y:=x-1; x:=x*5;

end else

begin y:=y+3; x:=x-y+4;

end;

Переменные x и y имеют тип integer.

Какое значение примут переменные x и y после выполнения данной последовательности операторов?

7. Дана последовательность операторов программы, записанной на языке Турбо-Паскаль:

x:=0;

y:=0;

if not(a=9) then

if odd(d) then

x:=sqr(y-3)

else y:=5*x-8;

107

Переменные x, y, a, d имеют тип integer.

Какое значение примут переменные x и y после выполнения данной последовательности операторов для случаев, когда переменные a и d примут следующие значения:

а) a=9 и d=7; б) a=0 и d=5; в) a=8 и d=4?

8. Дана последовательность операторов программы, записанной на языке Турбо-Паскаль:

x:=1;

y:=3; case j of

1: x:=y-5;

2: y:=x+1;

3: x:=2*y;

4: y:=x*3;

end;

Переменные j, x, y имеют тип integer.

Какое значение примут переменные x и y после выполнения данной последовательности операторов для случаев, когда переменная j примет следующие значения:

а) j=3; б) j=1; в) j=4; г) j=2?

9. Дана последовательность операторов программы, записанной на языке Турбо-Паскаль:

x:=0;

y:=1;

case i+j of

1 : x:=x-11;

2..4 : y:=(x+y)*2; 5,6: begin

y:=round(x/2);

108

x:=trunc(y/5);

end;

else x:=y+1;

end;

Переменные j, x, y имеют тип integer.

Какие значения примут переменные x и y после выполнения данной последовательности операторов для случаев, когда переменные i и j принимают следующие значения:

а) i=1 и j=2; б) i=1 и j=0; в) i=5 и j=1; г) i=2 и j=6?

Лабораторная работа № 6 ОПЕРАТОРЫ ЦИКЛА

1. Цель работы

Научиться использовать операторы цикла в программах на языке Турбо-Паскаль.

2.Краткие теоретические сведения18

2.1.Операторы цикла в Турбо-Паскаль

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

18 Программирование на языке высокого уровня Паскаль. Лекция 2. Управляющие операторы языка [Электронный ресурс]. – URL: http://www.intuit.ru/ studies/courses/628/484/lecture/6260 (датаобращения: 22.08.2013).

Семакин И.Г., Шестаков А.П. Лекции по программированию: учебное пособие. – 2-е изд., доп. – Пермь: Изд-во Перм. ун-та, 1998. – 279 с.

Культин Н.Б. Основы программирования в Delphi 7. – СПб.: БХВ-

Петербург, 2003. – 608 с.

109

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

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

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

В Паскале имеется три вида циклов:

1)цикл с предусловием while;

2)цикл с постусловием repeat;

3)цикл с параметром for.

Каждый из них состоит из определенной последовательности операторов.

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

Один проход цикла называется итерацией.

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

Проверка условия продолжения цикла выполняется на каж-

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

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

110