МУНИЦИПАЛЬНОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
  ГОРОДА КОСТРОМЫ
"ГИМНАЗИЯ №1"

 

Задачи и решения часть I

 

Задачи (часть 1)

· Объявление переменных;

· Инструкция присваивания;

· Вывод;

· Ввод;

· Программы с линейной структурой;

· Выбор:

o If ;

o Case.

Объявление переменных

Приступая к решению задач этого раздела, следует помнить, что:

· каждая переменная программы должна быть объявлена;

· объявления переменных помещают в раздел, который начинается словом var;

· инструкция объявления переменной выглядит так:

ИмяПеременной : Тип;

· в имени переменной можно использовать буквы латинского алфавита и цифры (первым символом должна быть буква);

· основными числовыми типами языка Turbo Pascal являются:

integer (целый), real (дробный);

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

 

 

1. Объявите переменные, необходимые для вычисления значения функции у = х2.

2. Объявите переменные, необходимые для пересчета веса из фунтов в килограм-мы.

3. Объявите переменные, необходимые для вычисления объема параллелепипеда.

4. Объявите переменные, необходимые для вычисления площади круга.

5. Объявите переменные, необходимые для вычисления площади кольца.

6. Объявите переменные, необходимые для вычисления объема и площади поверхности цилиндра.

7. Объявите переменные, необходимые для вычисления стоимости покупки, состоящей из нескольких тетрадей, карандашей и линейки.

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

Инструкция присваивания

Приступая к решению задач этого раздела, следует вспомнить, что:

· инструкция присваивания используется для изменения значений переменных, в том числе и для вычислений по формулам;

· тип выражения, находящегося в правой части инструкции присваивания, должен соответствовать типу переменной, имя которой стоит слева от символа инструкции присваивания (при нарушении соответствия типа переменной и выражения компилятор выводит сообщение об ошибке Type miss match — несоответствие типов).

9. Запишите инструкцию, которая присваивает переменной х значение —1,5.
10. Запишите инструкцию, которая присваивает переменной summa нулевое значение.
11. Запишите инструкцию, которая увеличивает на единицу значение переменной
n.
12. Запишите инструкцию, которая уменьшает на два значение переменной counter.
13. Запишите инструкцию вычисления среднего арифметического переменных x1 и х2.

14. Запишите в виде инструкции присваивания формулу вычисления значения функции:

y = 3,4x3 + 0,23x2 – 1,3.


15. Запишите в виде инструкции присваивания формулу вычисления значения функции:

y = 1/x2.

Вывод

Приступая к решению задач этого раздела, следует вспомнить, что:

· инструкции write и writein предназначены для вывода на экран монитора сообщений и значений переменных;

· одна инструкция write (writein) может вывести на экран значения нескольких переменных и (или) несколько сообщений;

· инструкция writein без параметров переводит курсор в начало следующей строки экрана.

37. Написать программу, которая выводит на экран сообщение:

Turbo Pascal 7.0.

38. Написать программу, которая выводит на экран четверостишие:

Унылая пора! Очей очарованье!
Приятна мне твоя прощальная краса —
Люблю я пышное природы увяданье,
В багрец и золото одетые леса.
А. С. Пушкин

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

write(a);
write('а');

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

writeln(a:6:2,' \b:6:2,' ',с:6:2);

42. Написать инструкции вывода значений переменных а, b и с. Значение каждой переменной должно быть выведено на отдельной строке.
43. Написать инструкции вывода значений дробных переменных x
1 и х2. На экране перед значением переменной должен быть выведен поясняющий текст, представляющий собой имя переменной, за которым следует знак "равно".

Ввод

Приступая к решению задач этого раздела, следует вспомнить, что:

· для ввода с клавиатуры во время работы программы исходных данных (значений переменных) предназначена инструкция
readln;

· используя одну инструкцию readln, можно ввести значения нескольких переменных;

· в случае несоответствия типа введенных данных типу переменной, значение которой вводится с клавиатуры, программа завершает работу и на экран выводится сообщение Error: invalid numeric format (если программа запущена из среды разработки, т. е. из Turbo Pascal) или Run time error (если программа запущена из операционной системы).

46. Написать инструкцию, обеспечивающую во время работы программы ввод значения переменной radius.
47. Написать инструкции, которые обеспечивают ввод значений переменных
b и u. Предполагается, что во время работы программы пользователь будет после набора каждого числа нажимать клавишу <Enter>.
48. Написать инструкцию, которая обеспечивает ввод значений переменных
b и u. Предполагается, что во время работы программы пользователь будет набирать числа в одной строке.
49. Объявите необходимые переменные и напишите фрагмент программы вычисления объема цилиндра, обеспечивающий ввод исходных данных.
50. Объявите необходимые переменные и напишите инструкции ввода исходных данных для программы вычисления стоимости покупки нескольких тетрадей и карандашей. Предполагается, что во время работы программы пользователь будет вводить данные о каждой составляющей покупки в отдельной строке: сначала цену, затем количество.

Программы с линейной структурой

 

Приступая к решению задач этого раздела, следует вспомнить, что:

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

· в программах с линейной структурой инструкции выполняются последовательно, одна за другой;

· алгоритм программы с линейной структурой может быть представлен следующим образом:

Ввод исходных данных

Обработка (Вычисление)

 

Начало

 

Конец

 

Вывод результата

 

51. Написать программу вычисления площади параллелограмма. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом).
Вычисление площади параллелограмма. Введите исходные данные: Длина (см) —> 9 Ширина (см) —> 7.5
Площадь параллелограмма: 67.50 кв.см.

52. Написать программу вычисления объема параллелепипеда. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом).

Вычисление объема параллелепипеда.
Введите исходные данные:
Длина (см) —> 9
Ширина (см) -> 7.5
Высота (см) —> 5

Объем: 337.50 куб.см.

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

Вычисление площади поверхности параллелепипеда.
Введите исходные данные:
Длина (см) -> 9
Ширина (см) —> 7.5
Высота (см) -> 5
Площадь поверхности: 90.00 кв.см.

54. Написать программу вычисления объема куба. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом).

Вычисление объема куба.
Введите длину ребра (см) и нажмите <Enter>
-> 9.5
Объем куба: 857.38 куб.см.

55. Написать программу вычисления объема цилиндра. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом).

Вычисление объема цилиндра
Введите исходные данные:
Радиус основания (см) —> 5
Высота цилиндра (см) —> 10
Объем цилиндра 1570.80 куб. см.

Для завершения работы программы нажмите <Enter>

 

Выбор If

Приступая к решению задач этого раздела, следует вспомнить, что:

· инструкция if используется для выбора одного из двух направлений дальнейшего хода программы (последовательности инструкций, которые должны быть выполнены);

· выбор последовательности инструкций осуществляется во время выполнения программы в зависимости от выполнения условия',

· условие — это выражение логического типа, которое может принимать одно из двух значений: true (истина — условие выполняется) или false (ложь — условие не выполняется);

· при помощи логических операций And (логическое "И") и or (логическое "Или") из простых условий можно строить сложные.

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

Вычисление частного.
Введите в одной строке делимое и делитель,
затем нажмите <Enter>
-> 12
Вы ошиблись. Делитель не должен быть равен нулю.

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

Вычисление площади кольца. Введите исходные данные:

Радиус кольца (см) —> 3.5

Радиус отверстия (см) —> 7
Ошибка! Радиус отверстия не может быть больше радиуса кольца.

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

Вычисление сопротивления электрической цепи.
Введите исходные данные:
Величина первого сопротивления (Ом) —> 15
Величина второго сопротивления (Ом)—> 27.3
Тип соединения (1 - последовательное, 2 - параллельное) —> 2
Сопротивление цепи: 9.68 Ом.

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

* Решение квадратного уравнения *
Введите в одной строке значения коэффициентов и нажмите <Enter>
-> 12 27 -10
Корни уравнения:
xl= -25.551
х2= -28.449

80. Написать программу вычисления стоимости покупки с учетом скидки. Скидка в 10% предоставляется, если сумма покупки больше 1000 руб. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом).

Вычисление стоимости покупки с учетом скидки.
Введите сумму покупки и нажмите <Enter>
-> 1200
Вам предоставляется скидка 10%
Сумма покупки с учетом скидки: 1080.00 руб.

81. Написать программу вычисления стоимости покупки с учетом скидки. Скидка в 3% предоставляется в том случае, если сумма покупки больше 500 руб., в 5% — если сумма больше 1000 руб. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом).

Вычисление стоимости покупки с учетом скидки.
Введите сумму покупки и нажмите <Enter>
-> 640

Вам предоставляется скидка 3%
Сумма покупки с учетом скидки: 620.80 руб.

Case

Приступая к решению задач этого раздела, следует вспомнить, что:

· инструкция case используется для выбора одного из нескольких направлений дальнейшего хода программы (последовательности инструкций, которые должны быть выполнены);

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

· в качестве переменной-селектора можно использовать переменную целого (integer) или символьного (char) типа.

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

Введите номер месяца (число от 1 до 12) и нажмите <Enter>
-> 11
Зима.

94. Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: "Рабочий день", "Суббота" или "Воскресенье".
95. Написать программу, вычисляющую стоимость междугороднего телефонного разговора (цена одной минуты определяется расстоянием до города, в котором находится абонент). Исходными данными для программы являются код города и продолжительность разговора. Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, и коды некоторых городов выделены полужирным шрифтом).

Вычисление стоимости разговора по телефону. Введите исходные данные:

Код города -> 812
Город Код Цена минуты, руб.
Владивосток 423 2,2
Москва 095 1,0
Мурманск 815 1,2
Самара 846 1,4
Длительность (целое количество минут)—> 3

Город: Владивосток

Цена минуты: 2.20 руб.

Стоимость разговора: 6.60 руб.

96. Написать программу, которая после введенного с клавиатуры числа (в диапазоне от 1 до 999), обозначающего денежную единицу, дописывает слово "рубль" в правильной форме. Например, 12 рублей, 21 рубль и т. д.
97. Написать программу, которая после введенного с клавиатуры числа (в диапазоне от 1 до 99), обозначающего денежную единицу, дописывает слово "копейка" в правильной форме. Например, 5 копеек, 41 копейка и т. д.
98. Написать программу, которая вычисляет дату следующего дня. Ниже представлен рекомендуемый вид экрана во время работы программы, (данные, введенные пользователем, выделены полужирным шрифтом).

Введите цифрами сегодняшнюю дату (число месяц год) —> 31 12 1999.
Последний день месяца!
С наступающим новым годом!
Завтра 1.1.2000.

Решения (Часть 1)

Задача 1

х: real; { аргумент функции } у: real; { значение функции }

Задача 2

funt: real; { вес в фунтах }
kg: real; { вес в килограммах }

Задача 5

rl: real; { диаметр кольца } r2: real; { диаметр отверстия } s: real; { площадь кольца }

Задача 7

CenaTetr: real; {цена тетради }
KolTetr: integer; { количество тетрадей }
CenaKar: real; { цена карандаша }
KolKar: integer; { количество карандашей }
CenaLin: real; { цена линейки }
Suirana: real; { стоимость покупки }

Задача 11

n:=n+1;

Задача 14

у:= 3.4*х*х*х + 0.23*х*х - 1.3;

Задача 15

у:= 1/(x*x) ;

Задача 38

begin
writeln('Унылая пора! Очей очарованье!');

writeln('Приятна мне твоя прощальная пора.');

writeln('Люблю я пышное природы увяданье,');

writeln('В багрец и золото одетые леса.'); writeln;
writeln(' А.С.Пушкин');
readln; { чтобы стихотворение не исчезло с экрана } end.

Задача 42

writeln(а:6:2); writeln(b:6:2); writeln(с:6:2);

Задача 43

writeln('xl=',xl:6:2, ¦ х2=',х2:6:2)

Задача 47

readln(b); readln(u);

Задача 48

readln(b,u);

Задача 49

{ объявление переменных }
г, h : real; {радиус и высота цилиндра}
v: real; { объем цилиндра}
{ фрагмент программы }
writeln('Введите исходные данные:');
write('Радиус цилиндра —>');
readln ( г ) ;
writeln('Высота цилиндра —>');
readln(h);

Задача 51

{Вычисление площади параллелограмма }

var
l,w: real; ( длина и ширина параллелограмма}
s: real; { площадь параллелограмма}

begin
writeln('Вычисление площади параллелограмма');
writeln('Введите исходные даные:');
write('Длина (см.) -> ');
readln(1) ;
write('Ширина (см.) ->');
readln(w);
s:=l*w;
writeln('Площадь параллелограмма:',s:6:2, ' кв.см. ') ;
readln;

end.

Задача 53

{ Вычисление площади поверхности параллелепипеда }

var
l,w,h : real; { длина, ширина и высота параллелепипеда}
s: real; { площадь поверхности параллелепипеда} begin
writeln('Вычисление площади поверхности параллелепипеда');
writeln('Введите исходные даные:');
write('Длина (см) —> ');
readln(1) ;
write('Ширина (см) ->');
readln(w);
write('Высота (см) — >') ;
readln(w);
s:=(l*w + l*h + w*h)*2;
writeln('Площадь поверхности параллелепипеда:',s:б:2,‘кв.см. ');

readln; end.

Задача 55

{ Вычисление объема цилиндра }

var
r,h,v: real; { радиус основания, высота и объем цилиндра }

begin
writeln('Вычисление объема цилиндра');
writeln('Введите исходные данные:');
write('радиус основания (см) —> ');
readln(г) ;
write("высота цилиндра (см) —> ');
readln(h);
v := 2*3.1415926*r*r*h;
writeln('Объем цилиндра ',v:6:2,' см.куб.');
writeln('Для завершения работы программы нажмите <Enter>');
readln;
end.

Задача 76

{ Вычисление частного }

var
a,b,c: real; { делимое, делитель и частное }

begin
writeln('Вычисление частного');
writeln('Введите в одной строке делимое и делитель,');
writeln('затем нажмите <Enter>');
write('->');
readln(a,b);
if b<> 0 then begin c:=a/b;
writeln('частное от деления ',а:6:3,' на ',Ь:6:3, 'равно ',с:6:3);
end else
writeln('Ошибка! Делитель не должен быть ',’равен нулю!');

readln; end.

Задача 77

{ Вычисление площади кольца }

var
rl,r2 : real; { радиус кольца и отверстия }

s : real; { площадь кольца }

begin
writeln('Введите исходные данные:');

write('радиус кольца (см) —> '); readln(rl);
write('радиус отверстия (см) —> '); readln(r2);

if rl > r2 then

begin
s:=2*3.14*(rl-r2);
writeln('
Площадь кольца ',s:6:2,' кв.см');

end
else writeln('Ошибка! Радиус отверстия не может быть ','больше радиуса кольца. ') ;
writeln('Для завершения работы программы нажмите <Enter>');

readln; end.

Задача 78

{ Вычисление сопротивления электрической цепи }

var
rl,r2: real; { величины сопротивлений цепи }
г: real; { суммарное сопротивление }
t: integer; { тип соединения элементов:
1 — последовательное;
2 — параллельное }

begin
writeln('Вычисление сопротивления электрической цепи1);
writeln('Введите исходные данные: ') ;
write('Величина первого сопротивления (Ом) —>');
readln(rl);
write('Величина второго сопротивления (Ом) ->');
readln(r2);
write('Тип соединения элементов (1-последовательное, ',
'2-параллельное) —>'); readln(t);

Задача 79

{ Решение квадратного уравнения }
program sqroot;
var
a,b,с:real;{ коэффициенты уравнения }

xl,x2:real;{ корни уравнения }

d:real; { дискриминант }

begin
writeln('* Решение квадратного уравнения *');

write('Введите в одной строке значения коэффициентов');

writeln(' и нажмите <Enter>'); write('->');
readln(a,b,с); { ввод коэффициентов }

d:=b*b-4*a*c; { вычисление дискриминанта }

if d >= О then begin
xl:=-b+sqrt(d)/(2*a); x2:=-b-sqrt(d)/(2*a);

writeln{'Корни уравнения:');

writeln('xl=',xl:9:3);

writeln('x2=',x2:9:3);

end

else
writeln('
Корней нет');

end.

Задача 81

{ Вычисление стоимости покупки с учетом скидки }

var
summ: real; { сумма покупки }

begin
writeln('Вычисление стоимости покупки с учетом скидки.');

writeln('Введите стоимость покупки и нажмите <Enter>.');

write('->'); readln (summ) ;

if summ > 500 then { предоставляется скидка }

begin
if suiran > 1000 then
begin
writeln('
Вам предоставляется скидка 5%'); summ:=0.95*summ; end

else
begin
writeln('
Вам предоставляется скидка 3%'); summ:=0.97*summ; end;
writeln('
Сумма покупки с учетом скидки: ', summ: б:2,' руб.');
end else
writeln('
Скидка не предоставляется.');

readln; end.

Задача 93

Определение времени года по номеру месяца }

var
month: integer; {
номер месяца }

begin
writeln('
Введите номер месяца (число от 1 до 12)
и нажмите <Enter>'); write('->'); readln(month);

case month of
1,2,12: writeln(•
Зима');
3..5: writeln('
Весна');
6..8: writeln('
Лето');
9.. 11: writeln('
Осень');
i 90
else
end;
readln
end.

Задача 95

writeln('Число должно быть от 1 до 12');

( Определение стоимости междугороднего
телефонного разговора }

var
kod: integer; {
код города }

cena: real; { цена минуты )

dlit: integer; { длительность разговора}

summ: real; { стоимость разговора }

begin
writeln('
Вычисление стоимости разговора по телефону.');

writeln('Введите исходные данные:');

write('Код города —>'); readln(kod);
write('
Длительность разговора (целое кол-во минут) —>');

readln(dlit); write('Город: ');

case kod of 432:

begin
writeln('
Владивосток'); cena:=2.2; end; 095: begin
writeln('
Москва'); cena:=1; end; 815: begin
writeln('
Мурманск'); cena:=1.2; end; 846: begin
writeln('
Самара'); cena:=1.4; end; end;
suran := cena * dlit; writeln('
Цена минуты:',cena:6:2,' руб.');
writeln('
Стоимость разговора:',summ:6:2, ' руб.');

readln; end.

Задача 96

{ Дописывает после числа слово "рубль" в правильной форме }

var
n: integer; {
число }
m: integer; (
остаток от деления п на 100 (последние две цифры) }
г: integer; { остаток от деления п на 10 (последняя цифра) } begin
writeln('
Введите целое число (от 1 до 999)', ' и нажмите <Enter>');
write('-> ');
readln(n);
write(n,' ');
{
окончание определяется двумя последними цифрами }

if n>100 then m := n mod 100;
if (m >= 11) and (m <= 14) then
writeln('
рублей') else begin
r:=n mod 10;

case r of
0, 5 .. 9: writeln('
рублей');

1: writeln ('рубль');

2..4: writeln ('рубля');

end; end;

readln; end.

Задача 98

{ Вычисление даты следующего дня }

var
day:integer;
month:integer;;
year:integer;:
last .-boolean; { TRUE,
если текущий день последний день
месяца } .r:integer; { если год високосный, то остаток от }
{
деления year на 4 равен нулю }

begin
write('
Введите цифрами сегодняшнюю дату');
write('(
число месяц год) —> ');
readln(day,month,year);
last:=FALSE;
case month of
L,3,5,7,8,10,12:if day=31
then last:=TRUE;
4,6,9,11: if day=30
then last:=TRUE;
2: if day = 28 then
begin
r:=year mod 4; if r <> 0
then last:=TRUE; end; end; { case }
if last
then begin
writeln('
Последний день месяца!');
day:=l;
if month=12
then begin
month:=1; year:=year + 1;
writeln('C
наступающим Новым годом!'); end
else month:=month + 1; end
else day:=day + 1; writelnf'
Завтра ',day,'.',month,'.' ,year );
readln;
end.

НАЦИОНАЛЬНЫЙ ФОНД ПОДГОТОВКИ КАДРОВ. ИНФОРМАТИЗАЦИЯ СИСТЕМЫ ОБРАЗОВАНИЯ.
Сайт сделан по технологии "Конструктор школьных сайтов".