
- •Л. Б. Бузюков, о. Б. Петрова
- •Учебное пособие
- •Предисловие
- •Глава 1. Введение в язык с
- •1.1. История создания и особенности языка с
- •1.3. Элементы языка с
- •1.3.1. Основные символы
- •1.3.2. Ключевые слова
- •1.3.3. Идентификаторы
- •1.3.4. Константы
- •1.3.5. Лексемы
- •1.3.6. Комментарии
- •Глава 2. Типы данных языка c
- •2.1. Числовые типы данных
- •2.2. Объявление переменных
- •2.3. Данные целого типа
- •2.4. Данные вещественного типа
- •Глава 3. Выражения
- •3.1. Операции
- •3.1.1. Арифметические операции
- •3.1.2. Операция присваивания
- •Глава 4. Составление простейших программ
- •4.1. Препроцессор и его функции
- •4.2. Основные директивы препроцессора
- •4.2.1. Директива include
- •4.2.2. Директива define
- •4.2.3. Директива undef
- •4.3. Структура и правила составления программ
- •4.3.1. Структура функции
- •4.3.2. Функция main()
- •4.3.3. Структура простой программы
- •4.3.4. Правила записи объявлений, операторов и комментариев
- •4.3.5. Пример простейшей программы
- •Глава 5. Средства ввода/вывода
- •5.1. Общие замечания
- •5.2. Функция форматированного вывода printf()
- •5.2.1. Основные форматы
- •5.2.2. Модификации форматов
- •5.3. Функция форматированного ввода scanf()
- •Глава 6. Управляющие операторы
- •6.1. Условные операторы
- •6.1.1. Логические выражения
- •6.1.2. Формы оператора if
- •6.1.3. Оператор выбора switch
- •6.2. Операторы цикла
- •6.2.1. Оператор while
- •6.2.2. Оператор for
- •6.2.3. Оператор do-while
- •6.3. Операторы перехода
- •6.3.1. Оператор break
- •6.3.2. Оператор continue
- •6.3.3. Оператор return
- •6.3.4. Применение оператора goto и меток
- •Глава 7. Функции
- •7.1. Основные понятия
- •7.2. Определение функции
- •7.3. Прототип функции
- •7.4. Вызов функции
- •Глава 8. Классы памяти
- •8.1. Логическаяструктура памяти программы
- •8.2. Особенности классов памяти
- •8.3. Объявления переменных
- •8.4. Объявления функций
- •8.5. Время жизни и область видимости программных объектов
- •8.6. Инициализация глобальных и локальных переменных
- •Глава 9. Указатели
- •9.1. Операция получения адреса
- •9.2. Операции над указателями
- •Глава 10. Массивы
- •10.1. Общие сведения о массивах
- •10.2. Одномерные массивы
- •10.3. Двумерные массивы
- •10.4. Массивы и указатели
- •10.5. Массивы и функции
- •Глава 11. Строки
- •11.1. Представление символьной строки при помощи одномерного массива
- •11.2. Указатель на символьную строку
- •11.3. Ввод/вывод символьных строк
- •11.4. Массивы символьных строк
- •11.5. Функции работы состроками
- •Глава 12. Структуры
- •12.1. Определение структуры
- •12.2. Структуры и функции
- •12.3. Указатели на структуру
- •12.4. Массивы структур
- •12.5. Вложенные структуры
- •12.6. Использование синонима типа
- •12.7. Объединения
- •Глава 13. Файлы
- •13.1. Работа с файлами
- •13.2. Функции ввода/вывода
- •Глава 14. Динамическая память
- •14.1. Распределение памяти
- •14.2. Функции управление памятью
- •Глава 15. Проект
- •15.1. Основы создания проекта
- •15.2. Пример создания проекта
- •Глава 17. Основы объектно-ориентированного программирования
- •17.1. Объектно-ориентированный подход
- •17.3. Конструкторы и деструкторы
- •17.4. Инкапсуляция
- •17.5. Полиморфизм
- •17.6. Наследование
- •17.7. Виды взаимодействия классов
- •17.8. Способы графического представления объектно-ориентированной задачи
- •18.2. Библиотека Win32 api
- •18.3. Библиотека owl
- •18.4. Библиотека vcl
- •18.5. Библиотека clx
- •18.6. Библиотека mfc
- •18.7. Библиотека OpenGl
- •19.3. Создание проекта
- •19.4. Редактирование проекта
- •19.5. Компиляция и выполнение программы
- •19.6. Файловая структура проекта
- •19.7. Создание консольного приложения
- •Глава 20. Разработка приложений для операционных систем windows
- •20.1. Взаимодействие программы и Windows
- •20.2. Компоненты библиотеки Win32 api
- •20.3.Функция WinMain()
- •20.4. Оконная процедура
- •20.5. Структура программы для ос Windows
- •20.6. Ресурсы Windows
- •20.7. Взаимодействие прикладной программы и устройств в Windows
- •Глава 21. Создание приложений для ос windows на основе библиотеки mfc
- •21.1. Обзор классов библиотеки mfc
- •21.2. Класс cString
- •21.3. Класс cFile
- •21.4. Класс cPoint
- •21.5. Класс cRect
- •21.7. Приложение, основанное на диалоге
- •21.8. Использование в приложении элементов управления
- •21.9. Мастер классов mfc ClassWizard
- •21.10. Установка начального значения элементам управления
- •21.11. Элементы управления Picture
- •21.12. Элемент управления Group Box
- •21.13. Элемент управления Radio Button
- •21.14. Элемент управления Check Box
- •21.15. Элемент управления List Box
- •21.16. Создание меню
- •21.17. Приложение с двумя диалоговыми панелями
- •21.18. Приложение sdi
- •21.19. Создание панели инструментов
- •21.20. Приложение mdi
- •21.21. Контекстыустройств в mfc
- •21.22. Графические объекты Windows в mfc
- •21.23. Графические операции в mfc
- •П.1. Основы методологии конструирования программ
- •П.1.1. Основные понятия. Программа и алгоритм
- •П.1.2. Этапы разработки программ
- •П.2. Алгоритмы
- •П.2.1. Алгоритм и его свойства
- •П.2.2. Способы описания алгоритмов
- •П.2.3. Средства графического изображения алгоритмов Схемы алгоритмов
- •Псевдокоды
- •Структурограммы
- •П.3. Основные приемы программирования
- •П.3.1. Разновидности структур программирования
- •П.3.2. Программирование линейных и разветвляющихся процессов
- •П.3.3. Программирование циклических процессов
- •Арифметический цикл (цикл с параметром)
- •Итерационный цикл
- •Вложенный цикл
- •Литература
П.3. Основные приемы программирования
П.3.1. Разновидности структур программирования П.3.2. Программирование линейных и разветвляющихся процессов П.3.3. Программирование циклических процессов
П.3.1. Разновидности структур программирования
Программирование представляет собой процесс разработки алгоритма решения задачи и его реализацию на одном из языков программирования.
Существуют общие приемы и методы, позволяющие представить алгоритм решения любой задачи в виде последовательности базовых элементов и структур. Элементы и структуры являются базовыми в том смысле, что алгоритмы на их основе реализуются независимо от конкретного языка программирования.
В процессе выполнения алгоритма производятся различные преобразования информации. Эти преобразования осуществляются заданной последовательностью операторов.
Одним из основных понятий в программировании являются термин переменная и принцип следования.
Переменная – это величина, которая при выполнении алгоритма изменяет свое значение. Когда переменной присваивается новое значение, старое – стирается.
Принцип следования или принцип обеспеченности переменных состоит в том, что порядок выполнения операторов в алгоритме должен обеспечить конкретные значения переменных на каждом шаге его выполнения.
Поясним сказанное на примере. Пусть требуется составить структурограмму вычисления функции
где у = sin x; значения коэффициента b и аргумента х вводятся.
Структурограмма вычисления будет иметь вид, представленный на рис. П.3.1, где t, z – вспомогательные переменные.
Логическая структура программы может быть выражена комбинацией трех базовых структур: СЛЕДОВАНИЕ, РАЗВЕТВЛЕНИЕ, ЦИКЛ.
Характерной особенностью этих структур является наличие в них одного входа и одного выхода.
Важнейшей базовой структурой, вытекающей из принципа обеспеченности переменной, является структура СЛЕДОВАНИЕ, означающая, что два действия должны быть выполнены друг за другом. Каждое действие может означать одно единственное действие или включать в себя несколько действий. Алгоритм, содержащий только структуры СЛЕДОВАНИЕ, называется линейным алгоритмом.
Приведенная последовательность операторов не допускает никакой перестановки, так как при перестановке нарушается принцип обеспеченности переменных, и расчет заданной функции становится невозможен.
Рис. П.3.1. Структурограмма СЛЕДОВАНИЕ
Структура РАЗВЕТВЛЕНИЕ (рис. П.3.2) обеспечивает в зависимости от результата проверки условия выбор одного из альтернативных путей работы алгоритма. Каждый из путей ведет к общему выходу, так что работа алгоритма продолжается независимо от того, какой путь выбран.
Рис. П.3.2. Структурограмма РАЗВЕТВЛЕНИЕ
В символах псевдокодов структура РАЗВЕТВЛЕНИЕ соответствует структуре IF-THEN-ELSE или в частном случае – IF-THEN, когда для одного из путей никаких действий предпринимать не надо.
Алгоритм, соответствующий второй базовой структуре, называется разветвляющимся алгоритмом.
Структура ЦИКЛ обеспечивает повторное выполнение (циклическую работу) оператора или группы операторов, находящихся в теле цикла.
Различают две разновидности этой структуры: ЦИКЛ-ПОКА (рис. П.3.3,а) и ЦИКЛ-ДО (рис. П.3.3,б).
Рис. П.3.3. Структура ЦИКЛ: а – ПОКА, б – ДО
В псевдокодах это циклы WHILE-DO и REPEAT-UNTIL соответственно.
При входе в структуру ЦИКЛ-ПОКА проверяется условие. Если оно истинно, то выполняется действие «процесс», и снова проверяется условие. При ложности условия действие «процесс» не выполняется и происходит выход из структуры.
При входе в структуру ЦИКЛ-ДО сначала выполняется действие «процесс», а затем проверяется условие. Ложность условия обеспечивает возврат в тело цикла, истинность – выход из структуры.
Основное отличие структур в том, что в зависимости от условия тело цикла в структуре ЦИКЛ-ПОКА может не выполниться ни разу, а в структуре ЦИКЛ-ДО должно обязательно выполниться хотя бы один раз.
Для управления количеством повторений символ «процесс» должен включать действие, изменяющее значение условия.
Алгоритмы, имеющие в своем составе базовую структуру ЦИКЛ, называются циклическими.
Реальные алгоритмы и вычислительные процессы представляют собой совокупность всех рассмотренных базовых структур.