Задачник-практикум по основам программирования
Покупка
Основная коллекция
Тематика:
Программирование и алгоритмизация
Издательство:
Южный федеральный университет
Авторы:
Амелина Наталья Ивановна, Невская Елена Сергеевна, Русанова Яна Михайловна, Чекулаева Александра Афанасьевна, Чердынцева Марина Игорьевна
Год издания: 2009
Кол-во страниц: 192
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-9275-0704-7
Артикул: 633892.01.99
Задачник-практикум охватывает разделы, рассматриваемые в курсе
«Информатика». Каждый раздел состоит из краткого введения, разобранных примеров, реализованных на языке Паскаль, задач и индивидуальных
заданий.
Формулировки большинства задач универсальны в том смысле, что для
написания программ могут использоваться различные языки программирования.
Предлагаемые задачи дают материал для самостоятельных заданий и
практики работы на компьютерах. Диапазон сложности задач довольно
широк.
Индивидуальные задания предназначены для лабораторных работ на
компьютерах.
Для начинающих программистов, студентов младших курсов, специализирующихся в области прикладной математики и информационных технологий, и
для преподавателей, ведущих практические занятия по программированию.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 01.03.02: Прикладная математика и информатика
- 09.03.02: Информационные системы и технологии
- ВО - Магистратура
- 01.04.02: Прикладная математика и информатика
- 09.04.02: Информационные системы и технологии
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
ÔÅÄÅÐÀËÜÍÎÅ ÀÃÅÍÒÑÒÂÎ ÏÎ ÎÁÐÀÇÎÂÀÍÈÞ ÐÎÑÑÈÉÑÊÎÉ ÔÅÄÅÐÀÖÈÈ Ôåäåðàëüíîå ãîñóäàðñòâåííîå îáðàçîâàòåëüíîå ó÷ðåæäåíèå âûñøåãî ïðîôåññèîíàëüíîãî îáðàçîâàíèÿ «ÞÆÍÛÉ ÔÅÄÅÐÀËÜÍÛÉ ÓÍÈÂÅÐÑÈÒÅÒ» Í. È. ÀÌÅËÈÍÀ, Å. Ñ. ÍÅÂÑÊÀß, ß. Ì. ÐÓÑÀÍÎÂÀ, À. À. ×ÅÊÓËÀÅÂÀ, Ì. È. ×ÅÐÄÛÍÖÅÂÀ ЗАДАЧНИК-ПРАКТИКУМ ПО ОСНОВАМ ПРОГРАММИРОВАНИЯ Ó÷åáíîå ïîñîáèå ïî êóðñó «Èíôîðìàòèêà» Ðîñòîâ-íà-Äîíó Èçäàòåëüñòâî Þæíîãî ôåäåðàëüíîãî óíèâåðñèòåòà 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 без остатка;