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

Задачи по программированию

Покупка
Артикул: 630072.02.99
Книга содержит большой набор задач по программированию различного уровня сложности, что позволит преподавателю проводить занятия с абитуриентами и студентами с разным уровнем начальной подготовки, практически формируя для них индивидуальные образовательные траектории. Задачи подобраны с учетом постепенного возрастания сложности и сопровождаются полными текстами решений на языке программирования Pascal, в том числе предназначенными для детального анализа учащимися, поиска неточностей, создания улучшенных собственных вариантов программ, анализа допустимых диапазонов исходных данных и т. д. Для учителей информатики, абитуриентов и студентов.
Задачи по программированию : учебное пособие / С. М. Окулов, Т. В. Ашихмина, Н. А. Бушмелева [и др.] ; под ред. С. М. Окулова. - 4-е изд., испр. - Москва : Лаборатория знаний, 2021. - 826 с. - ISBN 978-5-93208-514-1. - Текст : электронный. - URL: https://znanium.com/catalog/product/1987451 (дата обращения: 01.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
ПОД РЕДАКЦИЕЙ С. ОКУЛОВА

З А Д А Ч И

ПРОГРАММИРОВАНИЮ

ПО

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. Продаются товары двух видов. Запросить с клавиату-
ры для каждого вида товаров цену и количество в начале и в 
конце рабочего дня. Вывести величину максимальной выручки,