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

Lab_5_Informatika

.pdf
Скачиваний:
6
Добавлен:
29.03.2015
Размер:
321.53 Кб
Скачать

11

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

Хороший стиль программирования предполагает:

1)использование комментариев (главным образом, если текст программы достаточно большой);

2)использование несущих смысловую нагрузку имен переменных,

процедур и функций (процедуры и функции будут подробнее изучены в

следующих лабораторных работах);

3)использование отступов;

4)использование пустых строк (главным образом, если текст программы достаточно большой).

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

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

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

Надежность подразумевает, что программа, не полагаясь на

«разумное» поведение пользователя, контролирует исходные данные,

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

Дружественность предполагает хорошо спроектированный диалог с пользователем (например, подсказки на русском языке о том, какие именно

12

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

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

Задания к работе

Задания №1, №2, №3 выполняются на компьютере.

Задание №1. Написать на языке Турбо-Паскаль программу для вычисления значения функции, используя условный оператор if.

 

 

 

x2 3x 9, если x 3;

1)

 

 

1

 

 

 

F x

 

 

 

в противном случае.

 

 

 

 

 

 

 

 

 

 

 

3

6

 

x

 

 

 

 

x2

3x 9, если x 3;

2)

 

 

x

 

F x

 

в противном случае.

 

 

 

 

 

 

 

 

 

 

 

3

6

 

x

 

 

 

 

 

 

 

 

9, если x 3;

3)

 

 

1

 

 

 

F x

 

 

 

 

в противном случае.

 

 

 

2

1

 

x

 

 

 

 

 

 

 

 

0, если x 1;

4)

 

1

 

 

 

F x

в противном случае.

 

 

 

 

 

 

x 6

 

 

 

 

3x 9, если x 7;

5)

 

1

 

 

 

F x

в противном случае.

 

 

 

 

 

 

x 7

 

 

 

 

 

3x 9, если x 7;

6)

 

 

1

 

 

 

F x

 

 

 

в противном случае.

 

 

 

2

4

 

x

 

 

x2 , если 0 x 3;

7)F x 4 в противном случае.

 

 

 

x 4x 5, если x 2;

8)

 

 

1

 

F x

 

в противном случае.

 

 

 

 

 

 

 

2

 

 

x

 

4x 5

x2 x, если 0 x 1;

9)F x x2 sin x2 в противном случае.

 

 

 

x2 x 9, если x 8;

10)

 

 

1

 

F x

 

в противном случае.

 

 

 

 

 

 

 

4

 

 

x

 

6

 

 

 

 

 

 

 

 

 

 

 

 

13

 

 

 

4x2

 

2x 19, если x 3,5;

11)

 

 

 

 

 

 

 

2x

F x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в противном случае.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4x 1

 

 

 

x2

 

 

3x 9, если x 3;

12)

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

F x

 

 

 

 

 

 

 

 

в противном случае.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

x

 

 

 

1

 

 

 

 

 

 

 

 

 

3x 9, если x 3;

13)

 

 

 

x

3

 

 

 

 

 

 

 

 

 

 

 

F x

 

 

 

 

 

 

 

 

 

в противном случае.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

x

 

 

 

8

 

 

 

 

 

 

 

x3 9, если x 13;

14)

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

F x

 

 

 

 

 

 

 

 

 

в противном случае.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x 1

 

 

 

 

 

 

 

45x2 5, если x 3,6;

15)

 

 

 

 

5x

 

 

 

 

 

 

 

 

 

F x

 

 

 

 

 

 

 

 

 

 

в противном случае.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

10x

 

 

 

1

 

 

 

 

 

 

 

 

x4 9, если x 3,2;

16)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F x 54x4

 

 

 

 

 

 

в противном случае.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

5x

 

 

 

7

 

 

 

1,2x2 3x 9, если x 3;

17)

 

 

12,1

 

 

 

 

 

 

 

 

F x

 

 

 

 

 

в противном случае.

 

 

2x

2

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

x2

 

3x 9, если x 3;

18)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F x sin x

в противном случае.

 

 

 

 

 

 

 

 

 

 

 

x 9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cos 2x 9, если x 4;

19)

 

 

 

cos x

F x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в противном случае.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x 9

 

 

 

 

 

 

 

 

 

 

ln x 9, если x 0;

20)

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

F x

 

 

 

 

 

 

 

 

 

 

 

 

в противном случае.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

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

Используя условный оператор if, необходимо написать на языке Турбо-Паскаль программу для вычисления значения функции:

9 x, если x 1,1;

F x sin 3x в противном случае.x4 1

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

14

Рис. 3. Текст программы для примера выполнения задания №1

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

Переменные, соответствующие аргументу и значению функции (x и f

соответственно), объявлены в разделе описания переменных var.

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

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

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

Далее выполняется вычисление значения функции с помощью условного оператора if. Если значение аргумента x больше, чем -1.1, то переменной f, соответствующей значению функции, присваивается значение выражения 9 x . Иначе переменной f присваивается значение

выражения sin 3x .

x4 1

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

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

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

Пусть пользователь ввел значение аргумента x=5. Поскольку логическое выражение 5>-1.1 принимает значение true, то выполняется

15

оператор присваивания, расположенный после ключевого слова then, т.е.

значением функции становится значение выражения 9 x (рис. 4).

Рис. 4. Пользователь ввел значение x=5

Пусть пользователь ввел значения аргумента x=-1.5. Поскольку

логическое выражение -1.5>-1.1 принимает значение false, то

выполняется

оператор присваивания, расположенный после ключевого

слова else,

т.е. значением функции становится значение выражения

sin 3x

x4 1

 

(рис. 5).

Рис. 5. Пользователь ввел значение x=-1.5

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

1) Даны три действительных числа. Возвести в квадрат те их них,

значения которых неотрицательны, и в четвертую степень – отрицательные.

2)Даны две точки A(x1,y1) и B(x2,y2). Определить, какая из них находится ближе к началу координат.

3)Даны два угла треугольника (в градусах). Определить, существует ли такой треугольник. Если да, то будет ли он прямоугольным.

4)Даны действительные числа x и y, не равные друг другу. Меньшее из этих двух чисел заменить их полусуммой, а большее – их удвоенным произведением.

5)Подсчитать количество отрицательных чисел среди чисел m, n, p.

6)Определить, делителем каких из чисел m, n, p является число a.

7)Написать программу нахождения суммы большего и меньшего из трех чисел.

8)Дан круг радиуса R. Определить, поместится ли правильный треугольник со стороной a в этом круге.

16

9)Даны три положительных числа a, b, c. Проверить, будут ли они сторонами треугольника. Если да, то вычислить площадь этого треугольника.

10)Подсчитать количество положительных чисел среди чисел m, n, p.

11)Определить правильность даты, введенной с клавиатуры (число –

от 1 до 31, месяц – от 1 до 12). Если введены некорректные данные, то сообщить об этом.

12) Составить программу, определяющую, пройдет ли график функции y ax2 bx c через заданную точку с координатами (m, n).

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

Услуги телефонной сети оплачиваются по следующему правилу: за разговоры до A минут в месяц оплачиваются B руб., а разговоры сверх установленной нормы оплачиваются из расчета C руб. в минуту. Написать программу, вычисляющую плату за пользование телефоном для введенного времени разговоров за месяц.

Обозначим плату за пользованием телефоном за месяц как S, а время

(в минутах), фактически потраченное на разговоры за месяц, как T.

В случае, если за месяц на разговоры по телефону было потрачено меньше A минут, то плата за пользование телефоном вычисляется по формуле:

S B .

В случае, если за месяц на разговоры по телефону было потрачено больше A минут, то плата за пользование телефоном вычисляется по формуле:

S B (T A) C .

Т.е. в данном случае помимо B руб., потраченных за A минут разговоров, необходимо оплатить сумму за разговоры сверх установленной нормы A, равную разности фактически потраченного времени T и времени

A, умноженную на стоимость минуты сверх нормы C.

S B (T A) C

17

На рис. 6 представлен пример выполнения данного задания в системе

Турбо-Паскаль.

Рис. 6. Текст программы для примера выполнения задания №2

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

Все переменные объявлены в разделе описания переменных var.

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

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

C, T.

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

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

.

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

18

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

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

Пусть пользователь ввел значения A=100, B=50, C=5, T=120.

Поскольку логическое выражение 120<=100 принимает значение false,

то выполняется оператор присваивания, расположенный после ключевого слова else, т.е. оплата вычисляет по формуле S B (T A) C (рис. 7).

Рис. 7. Пользователь ввел значения A=100, B=50, C=5, T=120

Пусть пользователь ввел значения A=60, B=100, C=2.5, T=50.

Поскольку логическое выражение 50<=60 принимает значение true, то выполняется оператор присваивания, расположенный после ключевого слова then, т.е. оплата вычисляет по формуле S B (рис. 8).

Рис. 8. Пользователь ввел значения A=60, B=100, C=2.5, T=50

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

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

19

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

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

удовлетворительно, 4 – хорошо, 5 - отлично).

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

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

ввели номер 4 – получаем май и т.д.

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

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 дней. Год считается високосным, если он

20

делится на четыре без остатка, но если он делится на 100 без остатка, это не високосный год. Однако, если он делится без остатка на 400, это високосный год.

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

Рис. 9. Текст программы для примера выполнения задания №3

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

Все переменные объявлены в разделе описания переменных var.

Переменная y соответствует году, переменная m – номеру месяца,

переменная d – количеству дней в месяце.

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]