Задачи по программированию
Покупка
Издательство:
Лаборатория знаний
Авторы:
Окулов Станислав Михайлович, Ашихмина Татьяна Викторовна, Бушмелева Наталья Александровна, Корчемкин М. А., Разова Елена Владимировна, Шарыгин Р. В.
Год издания: 2021
Кол-во страниц: 826
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-93208-514-1
Артикул: 630072.02.99
Книга содержит большой набор задач по программированию различного уровня сложности, что позволит преподавателю проводить занятия с абитуриентами и студентами с разным уровнем начальной подготовки, практически формируя для них индивидуальные образовательные траектории. Задачи подобраны с учетом постепенного возрастания сложности и сопровождаются полными текстами решений на языке программирования Pascal, в том числе предназначенными для детального анализа учащимися, поиска неточностей, создания улучшенных собственных вариантов программ, анализа допустимых диапазонов исходных данных и т. д. Для учителей информатики, абитуриентов и студентов.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 01.03.02: Прикладная математика и информатика
- 01.03.04: Прикладная математика
- 02.03.01: Математика и компьютерные науки
- 02.03.02: Фундаментальная информатика и информационные технологии
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
ПОД РЕДАКЦИЕЙ С. ОКУЛОВА З А Д А Ч И ПРОГРАММИРОВАНИЮ ПО 4е издание, электронное Москва Лаборатория знаний 2021
УДК 519.85(023) ББК 22.18 З-15 Авторы: С. М. Окулов — общее редактирование, предисловие, гл. 11, 15; Т. В. Ашихмина — гл. 1, 2, 13, 14; Н. А. Бушмелева — гл. 4, 5, 6, 16; М. А. Корчёмкин — гл. 7, 10; Е. В. Разова — гл. 3, 9, 16; Р. В. Шарыгин — гл. 8, 12 З-15 Задачи по программированию / С. М. Окулов, Т. В. Ашихмина, Н. А. Бушмелева [и др.] ; под ред. С. М. Окулова. — 4-е изд., испр., электрон. — М. : Лаборатория знаний, 2021. — 826 с. — Систем. требования: Adobe Reader XI ; экран 10". — Загл. с титул. экрана. — Текст : электронный. ISBN 978-5-93208-514-1 Книга содержит большой набор задач по программированию различного уровня сложности, что позволит преподавателю проводить занятия с абитуриентами и студентами с разным уровнем начальной подготовки, практически формируя для них индивидуальные образовательные траектории. Задачи подобраны с учетом постепенного возрастания сложности и сопровождаются полными текстами решений на языке программирования Pascal, в том числе предназначенными для детального анализа учащимися, поиска неточностей, создания улучшенных собственных вариантов программ, анализа допустимых диапазонов исходных данных и т. д. Для учителей информатики, абитуриентов и студентов. УДК 519.85(023) ББК 22.18 Деривативное издание на основе печатного аналога: Задачи по программированию / С. М. Окулов, Т. В. Ашихмина, Н. А. Бушмелева [и др.] ; под ред. С. М. Окулова. — 2-е изд., испр. — М. : БИНОМ. Лаборатория знаний, 2014. — 823 с. : ил. — ISBN 978-5-9963-0630-5. В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации ISBN 978-5-93208-514-1 © Лаборатория знаний, 2015
Предисловие Предисловие Обучение программированию обладает удивительными особенностями. Доля самостоятельной деятельности школьника, студента огромна. Практически дается установка на то, что он сам должен освоить предмет, других вариантов нет. Преподаватель, при всем его профессионализме, может только направлять, способствовать, управлять процессом освоения, он как бы играет роль «кормчего», а «веслами работать» обязан сам обучаемый. Эта ситуация может привести в шок обычного школьника или студента, который привык потреблять готовые истины. Такой обучаемый не может перестроиться, и в этом одна из возможных причин его неуспехов в предмете. Бороться с шоковой ситуацией можно только задачами, идти от простого к сложному, поэтому набор простых задач должен быть в инструментарии преподавателя. В задачнике есть очень простые задачи, ибо он рассчитан на широкий круг пользователей, в том числе и начинающих. Другим полюсом процесса обучения является ситуация, когда школьник или студент настолько быстро осваивает материал, что традиционные занятия для него становятся малоинтересными. Есть официальная информатика, которой учат, есть информатика, которой обучаемые занимаются самостоятельно и достигают при этом значительных успехов. Имеется в виду даже не олимпиадная информатика, а различные интернет-технологии, компьютерная графика, технологии программирования и т. д. Однако это самостоятельное освоение все же поверхностно, ибо нет знаний по фундаментальным составляющим информатики. Преподавателю и в этой ситуации необходимо иметь инструмент для работы с таким контингентом обучаемых. Одним из инструментов могут быть задачи повышенного уровня сложности. Достаточное количество задач по каждой теме позволяет преподавателю, на наш взгляд, строить занятия на различных уровнях сложности, практически выходить на индивидуальный уровень обучения, вести школьника, студента по индивидуальной траектории развития. Умение быстро читать чужие программы — необходимое качество освоения предмета. Через поиск неточностей, через создание своих вариантов решения на основе существующего лежит путь к профессионализму. Из этого следует, что включение в задачник полных текстов решений, особенно задач повышенной сложности, является оправданным. Хотелось бы обратить внимание еще на один аспект процесса обучения программированию. Если ученик быстро находит ошибку в программе или предлагает исключительное по красоте решение задачи, он заслуживает поощрение со стороны преподавателя.
Предисловие Задачник можно рассматривать как дополнение к книге одного из авторов*, одна из особенностей которой состоит в том, что разбор темы осуществляется посредством решения задач и каждая задача разбирается от готового наброска решения. Путем экспериментальной работы через ошибки постигается суть и осуществляется усвоение материала. Следуя этому принципу, авторы приводят решения, точнее, варианты решения. Их не следует рассматривать как окончательные истины, к ним следует относиться как к «схемам ориентировочной основы действия»** при решении задач. Поэтому рекомендуются задания типа: «улучшить приведенный вариант решения»; «найти неточности в решении»; «определить диапазон исходных данных, при котором данный вариант решения неработоспособен» и т. д. Тем самым мы обеспечиваем формирование «желаемых свойств действия субъекта»*** и поэтапно формируем его умственные действия и понятия. Авторы благодарят всех своих коллег по работе за конструктивное обсуждение задач, и особенно Елену Александровну Васенину, а также студентов Максима Валерьевича Перевозчикова, Андрея Владимировича Скурихина, Сергея Юрьевича Иванова и Романа Александровича Веснина за помощь в решении ряда задач главы 15. * Окулов С. М. Основы программирования. – М.: БИНОМ. Лаборатория знаний, 2010. – 440 с. ** Гальперин П. Я. Лекции по психологии: Учебное пособие для студентов вузов. – М.: Книжный дом «Университет»: Высш. шк., 2002. – С. 188. *** Там же. – С. 168.
1. Структура программы. Операторы ввода, вывода, присваивания 1. Структура программы. Операторы ввода, вывода, присваивания 1.1. Указать значение величины s после выполнения следующих команд. а) s := 7; s := 23; б) s := 1; s := s+6; в) a := 2; b := 5; b := b–a; s := b+a; г) s := 0; k := 30; d := k–5; k := 2*d; s := k–100; 1.2. Чему равны значения переменных x и y после выполнения операторов? x := 2; y := 9; x := y; y := x; Поменяются ли значения переменных x и y? 1.3. Какие значения приобретут переменные a, b и c после выполнения следующих операторов при начальных значениях a = 1, b = 2, c = 3? a := b; b := c; c := a; Как изменится результат, если в приведенном фрагменте последний оператор переставить на первое место? 1.4. Что появится на экране после выполнения следующих команд? a := 4; Write(a); Write(’a’); 1.5. Что будет выведено на экран после выполнения программы? Program Task_1_5; Var a, b, c : Integer; Begin Write(1); Write(2, 3); WriteLn(4); Write(5); WriteLn(6, 7); УСЛОВИЯ ЗАДАЧ
Условия задач WriteLn; Write(8); ReadLn; End. 1.6. Что будет выведено на экран после выполнения фрагмента программы? x := 2; y := 3; Write(x); Write(x*x : 3); WriteLn(x*x*x : 3); Write(y); Write(y*y : 3); WriteLn(y*y*y : 3); 1.7. Что будет выведено на экран после выполнения оператора? Переменная a имеет значение 5, а переменная b — значение 2. WriteLn(’Сумма а и b = ’ , а+b); 1.8. Что будет выведено на экран после выполнения фрагмента программы? a := 12; b := 7; WriteLn(’Разность ’, а, ’ и ’ , b, ’ равна ’, а-b); 1.9. Что будет выведено на экран после выполнения следующих операторов? WriteLn(’Найдем сумму: ’); a := 3; b := 2; Write(’даны числа ’ , a , ’ и ’ , b); a := a+1; b := b-1; a := a+1; b := b-1; WriteLn(’, их сумма равна ’ , a+b); 1.10. Дан фрагмент программы, где x, a, b, y — переменные целого типа. Что будет выведено на экран, после того как пользователь наберет строку 1 23 4 56 и нажмет клавишу Enter? Все переменные в программе — целого типа. ReadLn(x, a, b, y); WriteLn(a, b, x : 2, y); 1.11. Найти и исправить все ошибки, допущенные в программе.
1. Структура программы. Операторы ввода, вывода, присваивания Programm Task_1_11; Var a,b,c : Integer; Begin WriteLn(’ Введите число ’ , а); ReadLn(a) b=5; c := ab; WriteLn(’ произведение ’ а и b ’ равно ’ , s); ReadLn(a); End 1.12. Составить программу вывода на экран суммы двух чисел x и y, введенных с клавиатуры. Например, для чисел x = 2, y = 3 на экран следует вывести текст 2 + 3 = 5. 1.13. Что будет выведено на экран в результате выполнения следующей программы, если с клавиатуры ввести числа 1, 2, 3? Program Task_1_13; Var a, b, c : Integer; Begin Write(’Введите три целых числа’); ReadLn(a, b, a); c := a+b; Write(’a+b=’, c); ReadLn; End. 1.14. Что будет выведено на экран после выполнения программы, если с клавиатуры ввести числа 1, 2, 3, 4, 5? Program Task_1_14; Var a, b, c : Integer; Begin ReadLn(a, b, a, c, b); Write(a, b, c); ReadLn; End. 1.15. В каком порядке и какие числа нужно ввести, чтобы после выполнения следующих операторов было выведено 123? Read(a, b, c, a, b); Write(c, b, a); 1.16. Найти запрограммированную формулу. ProgramTask_1_16; Var a, b, c : Integer; {Коэффициенты} d, e : Integer; {Рабочие переменные}
Условия задач x : Integer; {Аргумент} r : Integer; {Результат} Begin Write(’Введите коэффициенты’); ReadLn(a, b, с); Write(’Введите значение аргумента’); ReadLn(x); d := a*x*x; e := b*x; r := d+e+c; Write(’Результат =’, r : 5); ReadLn; End. 1.17. Верно ли, что после выполнения следующего фрагмента программы значения переменных будут попарно равны: a = a1, b = b1, c = c1, d = d1? a1 := a; b1 := b; c1 := c; d1 := d; r := a; a := b; b := c; c := d; d := r; a1 := a1+b1; b1 := a1-b1; a1 := a1-b1; b1 := b1+c1; c1 := b1-c1; b1 := b1-c1; c1 := c1+d1; d1 := c1-d1; c1 := c1-d1; 1.18. Составить программы нахождения: а) разности двух чисел; б) суммы трех чисел; в) произведения трех чисел. 1.19. Найти значение переменной x, если x = (a + 3(d – 12))(c – 5k), а значения переменных a, d, c, k задаются с клавиатуры. 1.20. Составить программу вычисления значения функции y = 2x3 + 7x2 – 3x + 6 при целом значении x. 1.21. Составить программу вычисления значения функции y = 2(a + b)3 + 7a2b2 – 3ab + 6 при целых значениях a и b. 1.22. Ввести с клавиатуры два числа (в интервале от 0 до 999). Вывести их на экран столбиком, в виде, удобном для сложения или умножения, т. е. первый разряд (справа налево) первого числа под первым разрядом второго числа, второй разряд — под вторым и т. д. 1.23. Составить программу вывода на экран «лесенкой» трех последовательно идущих трехзначных чисел. Первое число вводит пользователь, остальные вычисляются в программе.
1. Структура программы. Операторы ввода, вывода, присваивания 213 101 214 или 102 215 103 1.24. Составить программу, которая для заданной пользователем цифры а выводит на экран следующую таблицу: Например, для а= 2 а 2 а3 а6 8 64 а6 а3 а 64 8 2 1.25. Составить программу, которая запрашивает у пользователя целое число и выводит квадрат, куб и пятую степень этого числа. Пример работы программы: Введите число 2 Квадрат 2 равен 4 Куб 2 равен 8 Пятая степень 2 равна 32 1.26. Составить программу, которая запрашивает у пользователя количество дней в текущем месяце и сегодняшнее число. Программа выводит сообщение о том, сколько дней осталось до конца текущего месяца. Пример работы программы: Сколько дней в текущем месяце? 30 Какое сегодня число? 26 До конца текущего месяца осталось 4 дн(я/ей) 1.27. Составить программу, которая запрашивает у пользователя год его рождения и текущий год и выводит возраст пользователя. Пример работы программы: В каком году ты родился? 1980 Какой сейчас год? 2003 Тебе в этом году 23 года 1.28. Составить программу, которая запрашивает у пользователя два целых числа и выводит квадрат суммы (a + b)2 и сумму квадратов a2 + b2 этих чисел. Пример работы п рограммы: Введите два числа a = 3 b = 2
Условия задач квадрат суммы 3 и 2 равен 25 сумма квадратов 3 и 2 равна 13 1.29. Составить программу, которая запрашивает у пользователя текущий год и класс, в котором он учится. Программа выводит сообщение о том, в каком году пользователь окончит школу. Пример работы программы: Какой сейчас год? 2002 В каком классе ты учишься? 10 Ты окончишь школу в 2003 году. 1.30. Составить программу, отгадывающую натуральное четное число, загаданное пользователем. Ниже представлен рекомендуемый вариант диалога во время работы программы. Загадайте натуральное четное число Прибавьте к нему 4 Уменьшите на 6 Разделите на 2 Что у Вас получилось? 3 Вы загадали число 8!!! 1.31. Дана сторона квадрата. Найти его периметр. 1.32. Дана длина ребра куба. Найти объем куба и площадь его боковой поверхности. 1.33. Составить программу вычисления стоимости покупки, состоящей из нескольких тетрадей и карандашей. 1.34. Составить программу обмена значениями трех переменных величин a, b, c по следующей схеме: a) b присвоить значение c, а присвоить значение b, с присвоить значение а; б) b присвоить значение а, с присвоить значение b, а присвоить значение с. 1.35. Продаются товары двух видов. Запросить с клавиатуры для каждого вида товаров цену, количество в начале рабочего дня и количество проданного товара. Вывести стоимость всех товаров в начале рабочего дня и стоимость всех непроданных товаров. 1.36. Продаются товары двух видов. Запросить с клавиатуры для каждого вида товаров цену и количество в начале и в конце рабочего дня. Вывести величину максимальной выручки,