Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Задачник-практикум по основам программирования

Покупка
Основная коллекция
Артикул: 633892.01.99
Доступ онлайн
205 ₽
В корзину
Задачник-практикум охватывает разделы, рассматриваемые в курсе «Информатика». Каждый раздел состоит из краткого введения, разобранных примеров, реализованных на языке Паскаль, задач и индивидуальных заданий. Формулировки большинства задач универсальны в том смысле, что для написания программ могут использоваться различные языки программирования. Предлагаемые задачи дают материал для самостоятельных заданий и практики работы на компьютерах. Диапазон сложности задач довольно широк. Индивидуальные задания предназначены для лабораторных работ на компьютерах. Для начинающих программистов, студентов младших курсов, специализирующихся в области прикладной математики и информационных технологий, и для преподавателей, ведущих практические занятия по программированию.
Задачник-практикум по основам программирования: учебное пособие / Амелина Н.И., Невская Е.С., Русанова Я.М. - Ростов-на-Дону:Издательство ЮФУ, 2009. - 192 с.ISBN 978-5-9275-0704-7. - Текст : электронный. - URL: https://znanium.com/catalog/product/553143 (дата обращения: 25.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
ÔÅÄÅÐÀËÜÍÎÅ ÀÃÅÍÒÑÒÂÎ ÏÎ ÎÁÐÀÇÎÂÀÍÈÞ 
ÐÎÑÑÈÉÑÊÎÉ ÔÅÄÅÐÀÖÈÈ

Ôåäåðàëüíîå ãîñóäàðñòâåííîå îáðàçîâàòåëüíîå ó÷ðåæäåíèå 
âûñøåãî ïðîôåññèîíàëüíîãî îáðàçîâàíèÿ

«ÞÆÍÛÉ ÔÅÄÅÐÀËÜÍÛÉ ÓÍÈÂÅÐÑÈÒÅÒ»

Í. È. ÀÌÅËÈÍÀ, Å. Ñ. ÍÅÂÑÊÀß, 
ß. Ì. ÐÓÑÀÍÎÂÀ, À. À. ×ÅÊÓËÀÅÂÀ, 
Ì. È. ×ÅÐÄÛÍÖÅÂÀ

ЗАДАЧНИК-ПРАКТИКУМ
ПО ОСНОВАМ
ПРОГРАММИРОВАНИЯ

Ó÷åáíîå ïîñîáèå ïî êóðñó
«Èíôîðìàòèêà»

Ðîñòîâ-íà-Äîíó
Èçäàòåëüñòâî Þæíîãî ôåäåðàëüíîãî óíèâåðñèòåòà
2009

УДК 004.424
ББК 32.973
М 62
Печатается по решению редакционно-издательского совета
Южного федерального университета 

Рецензент:
доктор технических наук, профессор кафедры «Автоматика и телемеханика»
Ростовского государственного университета путей сообщения Ковалев С. М.

Учебное пособие подготовлено и издано в рамках национального проекта 
«Образование» по «Программе развития федерального 
государственного образовательного учреждения 
высшего профессионального образования 
“Южный федеральный университет” на 2007–2010 гг.»

Амелина Н. И., Невская Е. С., Русанова Я. М., Чекулаева А. А.,
         Чердынцева М. И.
М 62   Задачник-практикум по основам программирования:
учеб ное пособие по курсу  «Информатика» / Н. И. Амелина, 
Е. С. Невская, Я. М. Русанова, А. А. Чекулаева,  М. И. Чердынцева. – Ростов н/Д: Изд- во ЮФУ, 2009. – 192 с.
               ISBN 978-5-9275-0704-7
 
   Задачник-практикум охватывает разделы, рассматриваемые в курсе 
«Информатика». Каждый раздел состоит из краткого введения, разобранных примеров, реализованных на языке Паскаль, задач и индивидуальных 
заданий.
 
      Формулировки большинства задач универсальны в том смысле, что для 
написания программ могут использоваться различные языки программирования.
 
   Предлагаемые задачи дают материал для самостоятельных заданий и 
практики работы на компьютерах. Диапазон сложности задач довольно 
широк.
 
   Индивидуальные задания предназначены для лабораторных работ на 
компьютерах.
 
   Для начинающих программистов, студентов младших курсов, специализирующихся в области прикладной математики и информационных технологий, и 
для преподавателей, ведущих практические занятия по программированию.

ISBN  978-5-9275-0704-7                                        
 
            УДК 004.424
  
 
 
 
                 
 
            ББК 32.973
       © Коллектив авторов, 2009
      © Южный федеральный университет, 2009 
      © Оформление. Макет. Издательство

 
 
 
 
                  Южного федерального университета, 2009

\\\

1.  ËÈÍÅÉÍÛÅ ÏÐÎÃÐÀÌÌÛ

В линейных программах используются ввод-вывод данных и операторы 
присваивания, которые выполняются в порядке их следования.
Выражения состоят из операндов, знаков операций и круглых скобок. 
Операнды – это константы, переменные и обращения к функциям (указатели функций). Аргументы функций заключаются в круглые скобки. 
Операции выполняются слева направо в соответствии с правилами языка 
программирования.
При записи выражения следует учитывать приоритет операций [1]. 
Приоритеты операций языка Паскаль приведены в таблице 1. Для изменения в выражении порядка следования операций используются круглые 
скобки.

1. Приоритеты операций языка Паскаль

Òèï îïåðàöèé
Îïåðàöèÿ
Äåéñòâèå
Унарные
+
–
not

Унарный плюс 
Унарный минус 
Отрицание ( НЕ )
Мультипликативные
* 
/
div 
mod 
and

Умножение 
Деление 
Целочисленное деление 
Остаток от деления 
Логическое умножение ( И )
Аддитивные
+ 
– 
or 
xor

Сложение 
Вычитание 
Логическое сложение ( ИЛИ ) 
Исключающее ИЛИ
Отношения
= 
<> 
< 
<= 
> 
>=

Равно 
Не равно 
Меньше 
Меньше или равно 
Больше 
Больше или равно

К арифметическим операциям относятся следующие операции:
+ ,  – ,  * ,  / ,  div ,  mod

Пример 1.1. Записать оператор присваивания для вычисления y по 

формуле 
2
sin

x
x
x
y
x
e

⋅
=
+

y:=sqrt(abs(x))*sin(x)/(x*x+exp(x))

Упражнения

Восстановить формулу по записи арифметического выражения на 
языке Паскаль:
1) a / b * (c + d)
2) a * (c – d) / b
3) a / b / (c + d)
4) a / b * c + d
Логические выражения бывают простыми и составными.
Простое логическое выражение – это логическая переменная или 
отношение.
Отношение – это два арифметических выражения, между которыми 
стоит знак операции отношения.
Например, x>0 или 2*2=4.
Составные логические выражения состоят из простых логических 
выражений, объединенных логическими операциями (not, and, or, xor).
Например, (x>=3) and (x<=5) или
(x<3) or (x>5) = not ((x>=3) and (x<=5))
В таблице 2 представлены результаты выполнения всех возможных 
вариантов логических операций над логическими данными

2. Таблица истинности

A
B
not A
A and B
A or B
A xor B
False
False
True
False
False
False
False
True
True
False
True
True
True
False
False
False
True
True
True
True
False
True
True
False

Пример 1.2. Записать логическое выражение для проверки принадлежности значения переменной x одному из интервалов [–10, –5], [–1, 1]. 
Результат проверки присвоить логической переменной b:
b:=(x>=–10)and(x<-5) or (abs(x)<=1)
Примечание. В примерах и задачах этого раздела входные данные задаются 
корректно и поэтому в программах не требуется их проверка.

Пример 1.3. Вычислить площадь треугольника по формуле Герона.
Входные данные: a, b, c – длины сторон треугольника.
Выходные данные: S – площадь треугольника.
Алгоритм решения задачи:
Ввод a, b, c 
Вычисление полупериметра треугольника по формуле p=(a + b  + c)/2
Вычисление площади треугольника по формуле

–
–
–
S
p(p
a)(p
b)(p
c)
=

Вывод S.
Поскольку длины сторон треугольника могут быть и целыми, и дробными числами, то опишем все переменные как вещественные.
Программа вычисления площади треугольника будет иметь вид
program Lin_3_1;
var  
a,b,c: real; {стороны треугольника}
p: real; {полупериметр треугольника}
S: real; {площадь треугольника}
begin
  readln(a,b,c);
  p:=(a+b+c)/2;
  S:=sqrt(p*(p-a)*(p-b)*(p-c));
  write(S)
end.
Основной недостаток программы Lin_3_1 заключается в ее «недружественном» интерфейсе. При запросе входных данных невозможно понять, 
сколько чисел нужно вводить, а при выводе непонятно, какой смысл имеет 
результат. К тому же при повторном выполнении ввод будет осуществляться в той же строке, что и вывод предыдущего выполнения.
Следует учесть эти недостатки, и сделаем ее интерфейс более «дружественным». Обратите внимание на операторы writeln и write перед 
операторами ввода. Они называются приглашением к вводу, всегда ставятся 
непосредственно перед вводом и описывают смысл вводимых данных. 
В результате вывод будет более информативным. 
Улучшенный вариант программы:
program Lin_3_2;
var  
a, b, c:real; {стороны треугольника}
          p: real; {полупериметр треугольника}
          s: real; {площадь треугольника}
begin

writeln(’Введите длины сторон треугольника’);
  write(’a=’); readln(a);
  write(’b=’); readln(b);
  write(’c=’); readln(c);
  p:=(a+b+c)/2;
  s:=sqrt(p*(p-a)*(p-b)*(p-c));
  writeln(’Площадь треугольника равна’, s:10:3)
end.
Рассмотрим подробнее последний оператор writeln. Во-первых, 
при повторном выполнении данные будут выводиться на новой строке, 
поскольку последним оператором в программе является оператор writeln. 
Во-вторых, мы использовали формат вывода для вещественных чисел. 
Число после первого двоеточия задает ширину поля вывода, т.е. количество 
позиций, отводимых под выводимое значение. Если длина выводимого 
значения меньше ширины поля вывода, то выводимый текст дополняется 
слева пробелами до нужной ширины; в результате выводимое значение 
выравнивается по правому краю. Число после второго двоеточия задает 
количество знаков после десятичной точки и влияет на округление значения выводимого результата. В общем случае формат вывода задается 
выражением.

Контрольный пример
 
 Входные данные: a=3, b=4, c=5
 
 Промежуточные данные: p=6
 
 Выходные данные: s=6
 
 Результат работы программы
 
 Площадь треугольника равна 6.000  (-символ пробела)

Пример 1.4. Дано двузначное число. Вывести число, полученное при 
перестановке цифр исходного числа.
Если число x двузначное, то первая цифра находится по формуле 
x div 10, а вторая по формуле x mod 10. Для того чтобы сформировать 
число с переставленными цифрами, надо умножить вторую цифру на 10, 
и к результату прибавить первую цифру.
program Lin_4;
var a, b: integer;{исходное число и число-результат}
d1, d2: integer; {цифры}
begin

write(’Введите число ’);
readln(a);
d1:=a div 10;
d2:=a mod 10;
b:=d2*10+d1;
writeln(’Новое число = ’, b:2)
end.
Можно упростить вычисление нового числа и не использовать переменные d1 и d2:
b:=(a mod 10)*10 + a div 10;
Скобки в этом выражении не являются обязательными, так как операции mod и * имеют одинаковый приоритет и выполняются в порядке 
следования:
b:=a mod 10*10 + a div 10;
Однако наличие скобок в первом варианте записи выражения улучшает 
зрительное восприятие.

Пример 1.5. Выдать значение «ИСТИНА», если заданное целое число 
является положительным, иначе выдать значение «ЛОЖЬ».
program Lin_5;
var a: integer;
    b: boolean;
begin 
  write(’Введите целое число ’);
  readln(a);
  b:= a>0;
  writeln(’b=’,b)
end.
Заметим, что в программе можно обойтись без логической переменной b, указав требуемое логическое выражение непосредственно в операторе 
вывода writeln(’b=’,a>0).

Упражнения

1) Как записать на языке Паскаль синус от x градусов? (Не забудьте 
градусы перевести в радианы).
2) Как записать на языке Паскаль величину основания натуральных 
логарифмов (число е), если Вы забыли цифры этого числа? 
3) Как записать число π в подобной ситуации?

4) Как записать оператор присваивания, который меняет знак значения 
переменной z на противоположный?
5) Чему равно значение переменной z после выполнения оператора 
z:=7/3? Какой тип должен быть у переменной z, чтобы такая запись была 
корректной? Чему равно значение для z:=7 div 3, и какой тип должен быть 
у переменной z?
6) Дано число A. Как вычислить: A8, используя три операции умножения?

ÇÀÄÀ×È

 1.1.  Записать оператор присваивания для вычисления y по формулам:

 
1) y = cos2 x3

 
2) y = a ⋅ tgx2

 
3) 
(
)
cos
ln 2
a x
у
x
e
−
+
=
⋅
−

 
4) y = a ⋅ e–ax ⋅ sin x 

 
5) 

2
cos

1

x
y
x
=
+

 
6) y = etgx + cos(x – a)
 
7) y = x – 10sinx + |x2 – x ⋅ e5|
 
8) y = x – 10esinx + cos(x – a)
 1.2.  Вычислить координаты центра тяжести трех материальных точек с 
массами М1, М2, М3 и координатами (х1, у1 ), (х2, у2  ), (х3, у3  ). 

 
 

1
1
2
2
3
3
1
1
2
2
3
3

1
2
3
1
2
3
,
M
x
M
x
M
x
M
y
M
y
M
y
x
y
M
M
M
M
M
M
⋅
+
⋅
+
⋅
⋅
+
⋅
+
⋅
=
=
+
+
+
+

 1.3.  Даны значения двух переменных A и B. Поменять местами содержимое 
переменных A и B. Вывести новые значения переменных.
1.4.  Даны значения трех переменных A, B и C. Поменять местами значения 
переменных A, B и C так, чтобы в A оказалось значение переменной B, 
в B – значение переменной C, а в C – прежнее значение переменной A. 
Вывести новые значения переменных.
 1.5.  Найти площадь кольца, внутренний радиус которого равен R1, а 
внешний радиус равен R2.

1.6.  Дана гипотенуза прямоугольного равнобедренного треугольника c. 
Найти катет и площадь этого треугольника.
 1.7. Дан радиус окружности. Найти длины сторон и периметр равностороннего 
треугольника, вписанного в данную окружность.
 1.8. Дана длина ребра куба. Найти объем куба и площадь его 
поверхности.
1.9.  По длинам двух сторон треугольника и углу (в градусах) между ними 
вычислить длину третьей стороны и площадь этого треугольника.
 1.10. Смешано v1 литров воды температуры t1 с v2 литрами воды 
температуры t2. Найти объем и температуру образовавшейся смеси. 
1.11. Отрезок на плоскости задается координатами своих концов. Найти 
координаты точки, которая делит заданный отрезок в отношении 
n1: n2.
1.12. Вычислить периметр и площадь треугольника по заданным 
координатам его вершин.
1.13. Даны длины ребер a, b, c прямоугольного параллелепипеда. Вычислить 
площадь поверхности и объем параллелепипеда.
1.14. Даны длины сторон треугольника a, b, c. Найти длины его медиан 

по формуле  

2
2
2
1
2
2
2
b
m
a
c
b
=
+
−
, где mb – медиана, проведенная 

из вершины B. 
1.15. Даны длины сторон треугольника a, b, c. Найти длины его высот по 

формуле  
2
(
)(
)(
)

b
p p
a
p
b
p
c
h
b
−
−
−
=
, где hb – высота, проведенная 

из вершины B; p –  полупериметр.
1.16. Даны длины сторон треугольника a, b, c. Найти длины его биссектрис 

по формуле 
2
(
)

a
b c p
p
a
l
b
c
⋅ ⋅
⋅
−
=
+
, где la – биссектриса, проведенная из 

вершины A; p – полупериметр.

1.17. Даны координаты точки 
1
1
1
(
,
,
)
A x
y z
 на поверхности шара и координаты 

точки 
2
2
2
(
,
,
)
B x
y
z
, которая является центром шара. Найдите объем 
шара.

1.18. Даны координаты вершин трапеции 
1
2
2
3
(
,0),   (
,0),   (
,
),  
A x
B x
C x
y

1
4
 (
,
)
D x
y
. Найти периметр трапеции.
1.19. Найти длину окружности, если задана площадь соответствующего 
круга.

1.20. Найти длину окружности, которая проходит через точку 
1
1
(
,
)
A x
y
 и 

центр которой находится в точке 
2
2
(
,
)
B x
y
.
1.21. Найти площадь боковой поверхности цилиндра и объем цилиндра, 
если заданы его радиус и высота.
1.22. Найти площадь поверхности шара и объем шара, если задан его 
радиус.
1.23. Даны целые числа A, B и C. Найти количество квадратов со стороной 
C, которое можно разместить на прямоугольнике с длинами сторон 
A и B.
1.24. Для двух заданных вещественных чисел вычислить коэффициенты 
приведенного квадратного уравнения, корнями которого являются эти 
числа.
1.25. Дано целое число N (время в секундах). Найти число полных минут, 
часов, суток в нем.
1.26. С начала суток прошло N секунд (N – целое). Найти количество секунд, 
прошедших с начала последней минуты.
1.27. Дано целое число k (k >=1 000). Присвоить целой переменной h 
третью от конца цифру в записи положительного целого числа k. 
 
  Например, если k = 252768, то h = 7.
1.28. Дано целое двухзначное число. Заменить в нем младшую цифру на 
заданную цифру.
1.29. Дано целое число. Добавить в конец записи целого числа заданную 
цифру.
1.30. Присвоить целой переменной h первую цифру дробной части 
положительного вещественного числа z 
 
  Например, если z = 78.125, то h = 1.
1.31. Для заданного целого четырехзначного числа вычислить сумму и 
произведение цифр числа.
1.32. Для заданного целого четырехзначного числа получить число, 
содержащее цифры данного числа в обратном порядке.
1.33. Даны три целых числа А, В, С. Проверить истинность высказывания: 
«Справедливо двойное неравенство A|<|B|<|C».
1.34. Даны три целых числа А, В, С. Проверить истинность высказывания: 
«Число B находится между числами A и C».
1.35. Проверить истинность высказывания:
 
1) переменная x имеет значение в промежутке [0, 1];
 
2) целая переменная n делится нацело на 2 или на 3 без остатка;

Доступ онлайн
205 ₽
В корзину