- •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;
- •Вложенные структуры условных операторов
- •Оператор выбора
- •Контрольные задания
- •2.8. Циклические вычислительные процессы
- •Операторы цикла с условием
- •Оператор цикла do...While
- •Оператор цикла с параметром
- •2.9. Базовые алгоритмы
- •Задача 1. Алгоритм организации счетчика
- •Задача 2. Алгоритм накопления суммы
- •Задача 3. Алгоритм накопления произведения
- •Задача 4. Алгоритм поиска минимального члена последовательности
- •Задача 5. Табулирование функции (или кратные циклы)
- •Задача 6. Вычисление сумм последовательностей
- •2.10. Указатели и массивы Указатели
- •Понятие массива
- •Общий вид описания массива
- •Одномерные массивы
- •Описание одномерного массива
- •Индексированные переменные
- •Ввод-вывод одномерных массивов
- •Обработка одномерных массивов
- •Задача 1. Организация счетчика
- •Задача 2. Накопление суммы и произведения
- •Задача 3. Поиск минимального и максимального элементов массива
- •Двухмерные массивы
- •Описание двухмерного массива
- •Ввод-вывод двухмерного массива
- •Обработка матриц
- •2.11. Подпрограммы Структура сложной программы
- •Функции
- •Общий вид описания функции
- •Обращение к функции
- •Пример программы с функцией
- •Механизм замены параметров
- •Параметры-массивы в функциях
- •Рекурсия
- •Примеры программирования задач с использованием подпрограмм
- •Задача 1
- •2.12. Текстовые данные
- •Символьный тип данных
- •Ввод-вывод символьных данных
- •Обработка символьных данных
- •Ввод-вывод строковых данных
- •Обработка строковых данных
- •Стандартные функции обработки строк
- •Сравнение строк:
- •Сцепление строк
- •Определение длины строки
- •Копирование строк
- •Поиск символа в стоке
- •Пример программы для задачи с текстовыми данными
- •Контрольные задания
- •2.13. Динамическое выделение памяти
- •Структуры данных Понятие структуры
- •Обработка структур
- •Пример задачи с использованием структурированных данных
- •2.15. Файлы данных Понятие файла
- •Работа с файлами
- •Открытие файла
- •Обработка открытого файла
- •Закрытие файла
- •Функции ввода/вывода
- •Работа с текстовыми файлами
- •Обработка бинарных файлов
- •Контрольные задания
- •Заключение
- •Оглавление
Обращение к функции
Обращение к типизированной функции не является специальным оператором, а включается в состав выражения. Результат выполнения функции возвращается в основную программу через имя функции. Обращение к функции записывается аналогично записи стандартной функции (например, sin(x), ехp(x) и т.п.) в виде операнда:
<имя функции>(<список фактических параметров>);
При вычислении выражения операнд обращения к функции заменяется значением функции.
Пример программы с функцией
Вычислить значение: Z =,
где а - заданное вещественное число.
В этой задаче требуется многократно использовать алгоритм возведения числа в целую степень. Оформим функцию, в которой данный алгоритм можно формально описать как алгоритм накопления произведения.
где i – номер шага вычисления (умножения);
n – число шагов.
При описании функции надо с помощью списков параметров (формальных и фактических) связать формальный параметр x с основанием степени, параметр п — с показателем. Поскольку в задаче требуется вычислить три раза операцию возведения в степень, то в главной функции main() будет организован вызов этой функции из выражения.
#include "stdafx.h"
float ST(float x, int n) // начало функции ST
{
int i;
float P;
P=1;
for( i=1; i<= n; i++)
P = P*x;
return P;
} // конец функции ST
void main()
{
float a,Z;
printf("Введите число а:");
scanf("%f",&a);
Z = (ST(a, 5) + ST(1/a, 5))/(2* ST(a, 7));
printf("Z=%f\n", Z);
}
В процессе выполнения программы после ввода заданного числа а вычисляется значение Z по формуле. В данной формуле обращение к функции ST осуществляется с помощью трех операндов.
При каждом вызове функции происходит соответствующая замена формальных параметров (х, n) на фактические. Вычисленный результат возвращается в выражение. Далее вычисляется значение Z и выводится на экран.
Для того чтобы функция могла быть вызвана, т.е. была доступна, необходимо, чтобы до ее вызова о ней было известно компилятору. Это значит, что либо мы текст функции должны поместить до функции, из которой она вызывается (например, из main()), либо перед main() записывается прототип функции.
Прототип функции по форме аналогичен заголовку функции, в конце которого ставится ";".
Например, рассмотрим предыдущую программу:
#include "stdafx.h"
// прототип функции ST
float ST(float , int );
// функция main
void main()
{ float a,Z;
printf("Введите число а:");
scanf("%f",&a);
Z = (ST(a, 5) + ST(1/a, 5))/(2* ST(a, 7));
printf("Z=%f\n", Z);
}
// функция ST
float ST(float x, int n)
{
int i;
float P;
P=1;
for( i=1; i<= n; i++)
P = P*x;
return P;
}
Согласование параметров
Формальные и фактические параметры должны быть согласованы друг с другом по количеству, типу и порядку следования. Это означает, что количество формальных параметров должно быть равно количеству фактических параметров, и каждый формальный параметр должен иметь тот же тип и занимать в списке то же место, что и соответствующий ему фактический параметр.