- •Введение
- •1. Основы алгоритмизации и программирования
- •1.1. Этапы подготовки и решения задач на эвм
- •1.2. Алгоритмы и способы их описания Понятие алгоритма
- •Способы описания алгоритмов
- •Структурные схемы алгоритмов
- •1.3. Компиляция и интерпретация программ
- •1.4. Стили программирования
- •Процедурное программирование
- •Функциональное программирование
- •Логическое программирование
- •Объектно-ориентированное программирование
- •2.1. Пример готовой программы.
- •2.2. Структура основной программы
- •2.3. Алфавит языка
- •2.4. Константы и переменные Константы
- •Переменные
- •Примеры записи имен переменных
- •2.5. Арифметические выражения
- •Примеры вычисления арифметических выражений
- •Стандартные функции
- •Примеры программирования арифметических выражений
- •Контрольные задания
- •1. Составить описания для заданных переменных
- •2.6. Линейные вычислительные процессы
- •Оператор присваивания
- •Странные операторы присваивания
- •Функции ввода-вывода
- •Функции ввода исходных данных с клавиатуры
- •Потоковый ввод данных числового типа
- •Функция форматного ввода
- •Операторы вывода данных на экран Потоковый вывод
- •Форматный вывод
- •Контрольные задания
- •2.7. Разветвляющиеся вычислительные процессы
- •If (логическое выражение) p1; else p2;
- •Логические выражения
- •Порядок выполнения операций в логических выражениях
- •Условные операторы
- •Короткий условный оператор
- •Полный условный оператор
- •If (логическое выражение) { p1;} else {p2;}
- •Вложенные структуры условных операторов
- •Оператор выбора
- •Контрольные задания
- •2.8. Циклические вычислительные процессы
- •Операторы цикла с условием
- •Оператор цикла с параметром
- •2.9. Базовые алгоритмы
- •Задача 1. Алгоритм организации счетчика
- •Задача 2. Алгоритм накопления суммы
- •Задача 3. Алгоритм накопления произведения
- •Задача 4. Алгоритм поиска минимального члена последовательности
- •Задача 5. Табулирование функции (или кратные циклы)
- •Задача 6. Вычисление сумм элементов последовательностей
- •2.10. Указатели и массивы
- •2.10.1. Указатели
- •2.10.2. Понятие массива
- •Одномерные массивы
- •Описание одномерного массива
- •Индексированные переменные
- •Ввод-вывод одномерных массивов
- •Обработка одномерных массивов
- •Задача 1. Организация счетчика
- •Задача 2. Накопление суммы и произведения
- •Задача 3. Поиск минимального и максимального элементов массива
- •Двухмерные массивы
- •Описание двухмерного массива
- •Ввод-вывод двухмерного массива
- •Обработка матриц
- •2.11. Подпрограммы Структура сложной программы
- •Функции
- •Общий вид описания функции
- •Int I,j; //локальные переменные
- •Обращение к функции
- •Пример программы с функцией
- •Механизмы замены параметров
- •Параметры-массивы в функциях
- •Возвращение результатов
- •Примеры программирования задач с использованием подпрограмм Задача 1
- •Рекурсия
- •Технология сборки библиотеки
- •2.12. Текстовые данные
- •Символьный тип данных
- •Ввод-вывод символьных данных
- •Обработка символьных данных
- •Ввод-вывод строковых данных
- •Обработка строковых данных
- •Стандартные функции обработки строк
- •Сравнение строк:
- •Сцепление строк
- •Определение длины строки
- •Копирование строк
- •Поиск символа в стоке
- •Пример программы для задачи с текстовыми данными
- •Контрольные задания
- •2.13. Динамическое выделение памяти
- •Использование оператора new
- •Освобождение памяти
- •Структуры данных Понятие структуры
- •Обработка структур
- •Пример задачи с использованием структурированных данных
- •2.15. Файлы данных
- •2.15.1. Работа с файлами в стиле с
- •Объявление файловой переменной
- •Открытие файла
- •Закрытие файла
- •// Обработка открытого файла
- •Обработка открытого файла
- •Функции ввода/вывода
- •Работа с текстовыми файлами
- •Обработка бинарных файлов
- •Контрольные задания
- •Заключение
- •Оглавление
- •Литература
- •Приложение
2.11. Подпрограммы Структура сложной программы
Любая программа на языке высокого уровня может быть разбита на ряд логически завершенных программных единиц - подпрограмм. Такое разделение вызвано двумя причинами.
Экономия памяти. Каждая подпрограмма записывается в программе один раз, в то время как обращаться к ней можно многократно из разных точек программы.
Структурирование программы. Алгоритм решения задачи может быть достаточно сложным, поэтому целесообразно выделить самостоятельные смысловые части алгоритма и оформить их в виде подпрограмм.
В языке С++ существует один вид подпрограмм, который называется функция.
Функция – это именованная последовательность описаний и операторов, выполняющая какое-то законченное задание, как например, стандартная функция sin(…) из математической библиотеки предназначена и используется для вычисления синуса указанного в ее скобках аргумента.
Каждая программа на языке С++ должна иметь главную функцию (main), которая служит точкой входа в программу. Кроме главной функции в программе может быть оформлено произвольное число подпрограмм-функций. Создаваемая подпрограмма-функция должна иметь следующую структуру:
ЗАГОЛОВОК
{
Тело функции
}
Заголовок функции называется ее объявлением, а тело функции называется ее описанием. Любая подпрограмма-функция должна быть объявлена и определена.
Заголовок подпрограммы-функции должен иметь следующую структуру:
тип имя_функции ( [ список параметров])
Рассмотрим составные части заголовка.
Тип – это тип возвращаемого функцией значения. Он может быть любым(int, float, char, указатель на массив или другую функцию). Если функция не должна возвращать никакого значения, указывается тип void (пусто). Если никакой тип не указан, по умолчанию считается тип int.
Список параметров определяет величины, которые следует передать в функцию при ее вызове. Элементы списка параметров разделяются запятыми. Для каждого параметра указывается его тип и имя. Квадратные скобки около списка параметров в заголовке обозначают, что список может отсутствовать, то есть быть пустым.
Имя функции – это произвольная последовательность символов, придуманная разработчиком этой функции.
Объявление и описание подпрограммы-функции само по себе никаких действий не вызывает. При запуске программы выполнение начинается с операторов главной функции main(). Чтобы выполнить подпрограмму, в нужной точке главной функции main или любой другой функции, входящей в состав программы, необходимо записать обращение к подпрограмме-функции по ее имени. Для того чтобы функция могла быть вызвана, т.е. была доступна, необходимо, чтобы до ее вызова о ней было известно компилятору. Это значит, что либо мы текст функции должны поместить до функции, из которой она вызывается (например, перед main()), , либо перед main() записать прототип функции.
Ниже схематично приведены две возможные структуры программы, в которой объявлена и описана подпрограмма-функция.
#include "stdafx.h"
ЗАГОЛОВОК
{
тело функции
}
…
main()//начало главной функции
{…
имя-функции (параметр1, параметр2,…); /*обращение к подпрограмме-функции */
…
} //конец главной функции
Многоточие перед main обозначает, что там могут содержаться объявления и описания других функций.
Прототип функции по форме аналогичен заголовку функции, но в конце которого ставится ";". Второй вариант компоновки программы, содержащей подпрограмму-функцию, будет выглядеть так:
#include "stdafx.h"
ЗАГОЛОВОК;
main() //начало главной функции
{…
имя-функции (параметр1, параметр2,…); /*обращение к подпрограмме-функции */
…
} //конец главной функции
ЗАГОЛОВОК
{
тело функции
}