- •Введение
- •1 Цели и задачи дисциплины
- •2 Методы и технологии разработки алгоритмов и программ
- •2.1 Сущность структурного программирования
- •2.1.1 Базовые управляющие структуры
- •2.1.2 Дополнительные управляющие структуры
- •2.2 Сущность процедурного программирования
- •2.3 Сущность модульного программирования
- •2.4 Сущность объектно-ориентированного программирования
- •3 Методические указания к выполнению лабораторных работ
- •Лабораторная работа №1 Работа с файлами в интегрированной среде программирования
- •Лабораторная работа №2 Отладка и тестирование программы
- •Текст программы
- •Лабораторная работа №3 Поразрядные логические операции
- •Варианты индивидуальных заданий
- •Пример решения для варианта задания вида:
- •Пример программы
- •Лабораторная работа №4 Поиск экстремума
- •Варианты индивидуальных заданий
- •Пример схемы алгоритма и текста программы определения экстремума для варианта задания вида:
- •Пример программы
- •Лабораторная работа №5 Определение принадлежности точки выделенным областям на плоскости
- •Варианты индивидуальных заданий
- •Пример схемы алгоритма и текст программы определения местоположения точки на плоскости для варианта задания вида:
- •Текст программы
- •Лабораторная работа №6 Многовариантные вычисления по ключу
- •Варианты индивидуальных заданий
- •Пример программы
- •Лабораторная работа №7 Циклические вычисления на заданное число повторений.
- •Варианты индивидуальных заданий
- •Пример программы
- •Лабораторная работа №8 Циклические вычисления с заданной точностью
- •Варианты индивидуальных заданий
- •Пример программы
- •Лабораторная работа №9 Обработка одномерных массивов
- •Варианты индивидуальных заданий
- •Пример программы
- •Лабораторная работа №10 Обработка двумерных массивов
- •Варианты индивидуальных заданий
- •Пример программы
- •4 Методические указания к выполнению контрольных работ
- •Контрольная работа №1 Преобразование чисел из одной системы счисления в другие
- •Варианты индивидуальных заданий
- •Пример выполнения задания
- •Контрольная работа №2 Арифметические операции в двоичной, восьмеричной и шестнадцатеричной системах счисления
- •Варианты индивидуальных заданий
- •Пример выполнения задания
- •Библиографический список
2.2 Сущность процедурного программирования
С увеличением объёма программ программисту невозможно удерживать в своей памяти все нюансы задачи, и он вынужден структурировать информацию, выделяя главное и отбрасывая несущественное. Этот процесс называется повышением степени абстракции программы.
Первым шагом на этом пути является процедурное программирование.
Процедурное программирование представляет собой метод, реализующий нисходящую технологию проектирования программ. Процедурное программирование предполагает разбиение задачи на более простые подзадачи, каждая из которых оформляется в виде подпрограммы.
Подпрограмма – это именованная последовательность описаний и операторов, выполняющая некоторое функционально законченное действие. Результирующая программа включает последовательность вызовов подпрограмм, при выполнении которых в свою очередь могут вызываться другие подпрограммы.
Любая подпрограмма должна быть объявлена и определена.
Объявление (опережающее описание, прототип, сигнатура) подпрограммы должно находиться в тексте раньше её вызова для того, чтобы компилятор мог выполнить проверку правильности вызова подпрограммы. Объявление задаёт имя подпрограммы и список передаваемых параметров.
Определение (описание) подпрограммы содержит кроме объявления тело подпрограммы, представляющее собой последовательность описаний и операторов.
Подпрограмма начинает выполняться в момент её вызова. Подпрограмма описывается один раз, а вызываться она может многократно из разных точек программы в соответствии со схемой алгоритма.
В определении, объявлении и при вызове подпрограммы типы, количество и порядок следования параметров в списке параметров подпрограммы должны совпадать. На их имена ограничений по соответствию не накладывается, поскольку подпрограмму можно вызывать с различными аргументами.
Описания, содержащиеся внутри подпрограммы, являются локальными по отношению к ней. Областью их действия является подпрограмма.
Описания, содержащиеся вне каких-либо подпрограмм, называются глобальными. Областью их действия является вся часть текста программы ниже этого описания.
Обмен данными между подпрограммой и внешней средой может осуществляться за счёт списка параметров подпрограммы и с использованием глобальных переменных.
Организация передачи данных за счёт глобальных переменных очень легка. Однако она не рекомендуется (а при выполнении лабораторных работ категорически запрещена), поскольку затрудняет отладку программы из-за возможности возникновение побочных эффектов и нарушает автономность подпрограмм. Любая подпрограмма должна быть максимально независима, а её интерфейс должен полностью определяться заголовком.
Список параметров подпрограммы является наиболее предпочтительным способом организации передачи данных между подпрограммой и внешней средой. В нём указываются имена входных и выходных данных подпрограммы. Использование списка параметров исключает возникновение побочных эффектов, то есть непредвиденных искажений данных при использовании подпрограмм.
Параметры, перечисленные в списке параметров подпрограммы, называются формальными. Соответствующие параметры, записанные в операторе вызова подпрограммы, называются фактическими.
Существует два способа передачи параметров в подпрограмму: по значению и по адресу.
При передаче по значению при вызове подпрограммы формальные параметры принимают значения копий значений фактических параметров. После этого связь между фактическими и формальными параметрами теряется, и операторы подпрограммы работают с этими копиями. Доступа к исходным значениям фактических параметров у подпрограммы нет, и, следовательно, нет возможности их изменить. В этом случае фактический параметр – это любое выражение того же типа, что и формальный параметр, или один из его частных случаев – переменная или константа.
При передаче по адресу формальные параметры подпрограммы принимают значения адресов фактических параметров. Операторы подпрограммы получают доступ к данным по этим адресам и могут менять исходные значения фактических параметров. В этом случае фактические параметры должны быть переменными того же типа, что и соответствующие формальные параметры.
