Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структуры данных Лекция 1.doc
Скачиваний:
18
Добавлен:
03.11.2018
Размер:
143.87 Кб
Скачать

Множественный выбор

Конструкция if-else позволяет произвести выбор между двумя альтернативами. При необходимости осуществить множественный выбор можно использовать вложенные операторы if-else, однако часто это оказывается неудобно. Непосредственно для осуществления множественного выбора существует конструкция switch-case, осуществляющая выбор одной из нескольких альтернатив. Проиллюстрируем ее на примере. Задача заключается в том, чтобы вывести название дня недели по введенному номеру от 1 до 7. Псевдокод этой программы выглядит так:

Begin

Output «Введите номер дня недели»

Input day

Switch day

Case 1

Output «Понедельник»

Case 2

Output «Вторник»

Case 3

Output «Среда»

Case 4

Output «Четверг»

Case 5

Output «Пятница»

Case 6

Output «Суббота»

Case 7

Output «Воскресенье»

End

Принцип работы оператора множественного выбора заключается в том, что рассматривается выражение, указанное в качестве переключателя, и в зависимости от ее значений – случаев выполняются соответствующие действия. Операторы if-else и switch-case взаимозаменяемы, т.е. программу, написанную с помощью одного из них можно переписать, используя другой, поэтому выбор между ними следует осуществлять, основываясь на том, какой из них применять удобнее. Блок-схема для рассматриваемого примера выглядит следующим образом:

3

2

1

4

5

6

7

1

Цикл For

Begin

For i:=1..10

Output i

End

Цикл While

n=1

n=n+1

Форматирование кода

Форматирование кода облегчает чтение и понимание программы, что, в свою очередь, ведет к более легкой разработке, отладке и модификации.

В написанном нами псевдокоде мы использовали отступы для указания на вложенность конструкций. В языке Python отступы также используются с этой целью, и в нем отсутствуют явные слова, указывающие на начало или конец блока программы: блоки определяются исключительно отступами.

Во многих современных редакторах существует автоматическое форматирование кода: редактор форматирует код либо сразу во время его набора, либо после нажатия заданной комбинации клавиш.

Нисходящая разработка

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

Нисходящая разработка заключается в том, что процесс решения поставленной задачи разбивается на несколько больших частей. Затем каждая из этих частей рассматривается как отдельная задача и также разбивается на несколько подзадач. Данный процесс детализации продолжается до тех пор, пока крайние подзадачи не станут простыми и понятными для программиста. Таким образом, получается дерево, корнем которого является решаемая задача, вершинами – промежуточные задачи, а листьями – элементарные шаги. Начиная с темы, посвященной функциям, мы будем рассматривать примеры, которые демонстрируют такую разработку.

КОНТРОЛЬНЫЕ ВОПРОСЫ

  1. Что такое интегрированная среда разработки? Что такое компилятор?

  2. Чем отличаются алгоритмические ошибки от синтаксических? Какие из них труднее исправлять? Почему? Что такое отладка программы?

  3. Что такое автоматизация рабочих процессов? Приведите примеры.

  4. Что такое алгоритм, псевдокод и блок-схема?

  5. Какие обозначения используются в блок-схемах?

  6. Как выглядит блок-схема для проверки условия?

  7. Как выглядит блок-схема для циклической конструкции?

  8. Чем отличается высокоуровневое программирование от низкоуровневого программирования?

  9. Зачем нужно форматирование кода?

  10. Что такое нисходящее программирование?

ТРЕНИРОВОЧНЫЕ ЗАДАНИЯ

  1. Напишите алгоритм строительства дома (~10 шагов).

  2. Напишите алгоритм приготовления кофе (~10 шагов).

  3. Опишите алгоритм выбора максимального из трех чисел.

  4. Напишите псевдокод вычисления суммарного балла ЕГЭ по трем предметам.

  5. Напишите псевдокод определения максимального из трех чисел.

  6. Напишите псевдокод программы, выводящей на экран 10 элементов арифметической прогрессии с заданными параметрами.

  7. Напишите псевдокод вычисления площади круга.

  8. Изобразите блок-схему проверки числа на четность.

  9. Изобразите блок-схему вывода на экран 10 чисел.

  10. Изобразите блок-схему программы, которая принимает номер месяца от 1 до 12 и выводит число дней в нем.