Опубликован: 28.04.2014 | Доступ: свободный | Студентов: 987 / 89 | Длительность: 01:30:00
Специальности: Программист
Лекция 6:

Основы программирования. Типы данных, переменные, операторы

< Лекция 1 || Лекция 6: 123456

Структурное программирование. Основные принципы

Структурное программирование оказало большое влияние на развитие языков программирования. Впервые идеи структурного программирования были высказаны в знаменитой статье Эдсгера Дейкстры "О вреде оператора go to". Позже они были развиты в книге "Структурное программирование" трех авторов: У. Дала, Э. Дейкстры, Ч. Хоара. С тех пор все языки программирования включают в свой состав операторы, удовлетворяющие принципам структурного программирования. Все рассмотренные нами операторы соответствуют этим принципам. В чем их суть?

Сформулируем два основных принципа структурного программирования:

  • Принцип "Один вход – один выход". В соответствии с этим принципом, каждый оператор языка программирования должен иметь одну точку входа и одну точку выхода.
  • Принцип "Естественный преемник". В соответствии с этим принципом преемником каждого оператора является оператор, следующий по тексту программы. Выход оператора А связывается со входом оператора В, следующего в тексте программы за оператором А.

Из этих принципов вытекает важное следствие – "Текст программы управляет ее выполнением". Текст программы можно рассматривать как последовательность операторов S1, S2, S3, ... Sn. Выполнение программы следует этому порядку – вначале выполняется оператор S1, затем S2 и так далее, пока не будет выполнен оператор Sn.

Как же, скажете Вы, выполняются эти принципы для операторов If и While, где есть выбор и повторение? Для пояснения ответа на этот вопрос стоит рассмотреть блок-схемы трех операторов. На рис.1 показана блок-схема составного оператора:

Блок-схема составного оператора

Рис. 6.1. Блок-схема составного оператора

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

На рис.2 показана блок-схема оператора If:

Блок-схема оператора выбора If

Рис. 6.2. Блок-схема оператора выбора If

Если рассматривать оператор If как черный ящик, то у него один вход и один выход. Конечно же, когда нас интересует подробное его устройство, то мы начинаем изучать внутренние операторы. То, что они отвечают принципам структурного программирования облегчает их понимание.

На рис. 3 показана блок-схема оператора цикла While:

Блок-схема оператора While

Рис. 6.3. Блок-схема оператора While

Принципы структурного программирования кажутся вполне естественными. Чтобы понять их достоинства следует рассмотреть неструктурированные операторы, характерные для первых языков программирования. Операторы программы могут быть помеченными. Метки операторов играют роль их имен. Оператор go to ранее широко употребляемый в программах имеет следующий синтаксис:

go to  M;

Этот оператор нарушает второй принцип структурного программирования, передавая управление не своему преемнику в тексте программы, а оператору с меткой M. Следует сказать, что эти возможности сохранились и в современных языках, в том числе и в языке C#. Первоначальный вариант оператора If, появившийся в первом языке программирования Fortran, имел следующий синтаксис:

IF(<арифметическое выражение> M1, M2, M3;

Если значение арифметического выражения было положительным управление передавалось оператору с именем M1 равным нулю – M2, отрицательным – M3. Этот оператор нарушал оба принципа структурного программирования. Применение подобных операторов делало программу подобной "блюду спагетти", где вычисления перескакивали из одного фрагмента программы к другому в хаотическом порядке. Понимание работы такой программы крайне затруднительно. Это не простая задача и для структурированных программ, но не структурированность вносит излишние трудности, которые можно избежать.

Задания

Задание 1

Используя доступный образец проекта, постройте с нуля свой вариант Решения, содержащий два проекта – консольный и Windows. При проектировании интерфейса Windows проекта поэкспериментируйте со свойствами объектов интерфейса.

Задание 2

Постройте консольный проект решения следующей задачи. Для заданного значения x вычислить значение функции F(x) = 2x2 – 3x + 7.

Задание 3

Постройте Windows проект решения следующей задачи. На плоскости дан круг радиуса R с центром в начале координат. Известны координаты точки Px и y. Необходимо определить, принадлежит ли точка кругу. Если да, то в какой квадрант она попадает.

< Лекция 1 || Лекция 6: 123456
Дмитрий Лубченков
Дмитрий Лубченков
Николай Молдован
Николай Молдован