
- •Вопрос 5 Скалярные типы и выражения. Приведите пример простой программы.
- •Вопрос 6 Типы операций: операции присвоения и отношения. Примеры. Операция присваивания.
- •Вопрос7 Типы операций: логические, битовые и условные операции.
- •10) Условные операторы. Варианты условных операторов. Пример: Даны целые числа X, y. Вычислить max(X, y).
- •11) Условные конструкции. Оператор switch. Приведите примеры
- •12. Условные и циклические конструкции. Виды конструкций, что общего у них.
- •13.Циклические конструкции. Виды конструкций.
- •14Циклические констрккции.Цикл while
- •Вопрос15 Циклические конструкции. Цикл do...While. Приведите примеры.
- •Вопрос16 Циклические конструкции. Цикл for. Приведите примеры. Циклические конструкции. Цикл for
- •Вопрос17 Цикл for. Использование операции "запятая". Приведите примеры.
- •Вопрос18 Укажите особенности операторов go to, break, continue, return.
- •20Этапы решения задач на компьютере
- •21 Назначение препроцессора .Примеры использования директив препроцессора
- •1. Замена идентификаторов заранее подготовленными последовательностями символов;
- •2. Включение в программу текстов из указанных файлов;
- •3. Исключение из программы отдельных частей ее текста, условная компиляция;
- •4. Макроподстановка, то есть замена обозначения параметризованным текстом, формируемым препроцессором с учетом конкретных аргументов.
- •23Основные возможности функции scanf(). Приведите примеры
- •25Арифметические операции. Приведите примеры.
- •27 Указатели и адреса
- •28 Общие сведения о массивах
- •29Многомерные массивы. Работа с массивами с помощью указателей
- •30Общие сведения о функциях. Определение функции
- •31 Класс памяти (auto)
- •32Внешний класс памяти (extern)
- •33 Внешние глобальные объекты (extern)
- •33Внешние статические объекты (static).
- •34 Строки
- •35 Функция для работы со строками
30Общие сведения о функциях. Определение функции
Принципы программирования на языке C++ основаны на понятии функции. В представленных ранее примерах мы уже воспользовались несколькими функциями: printf(), scanf(). Эти функции являются системными, однако в предыдущих примерах мы создали и несколько своих собственных функций под общим именем main(). Заметим, что выполнение программы всегда начинается с операторов, содержащихся в функции main(), затем последняя вызывает другие функции. Теперь мы переходим к вопросу о том, как создавать свои собственные функции.
Что же такое функция? Функция - самостоятельная единица программы, спроектированная для реализации конкретной задачи. Функции в языке C++ играют ту же роль, какую играют функции, подпрограммы и процедуры в других языках, хотя детали их структуры могут быть разными. Вызов функции приводит к выполнению некоторых действий. Например, при обращении к функции printf() осуществляется вывод данных на экран. Другие же функции позволяют получать величины, используемые затем в других частях программы.
Почему мы пользуемся функциями?
Во-первых, они избавляют нас от "повторного" программирования. Если конкретную задачу необходимо выполнить в программе несколько раз, то мы напишем соответствующую функцию только один раз, а затем будем вызывать ее всегда, когда это требуется.
Во-вторых, мы можем применять одну и ту же функцию, например printf(), в различных программах. Даже в том случае, когда некоторая задача выполняется только в одной программе, лучше оформить ее решение в виде функции, поскольку функции повышают уровень модульности программы и, следовательно, облегчают ее чтение, внесение изменений и коррекцию ошибок.
Предположим, например, что мы хотим написать программу, которая делает следующее:
вводит набор чисел,
сортирует эти числа,
находит их среднее арифметическое.
Соответствующую программу можно спроектировать так:
main ()
{
int list[50];
readlist (list); /* Ввод набора чисел. */
sort (list); /* Сортировка этих чисел. */
average (list); /* Поиск их среднего. */
}
Разумеется мы должны еще запрограммировать три функции: readlist(), sort(), average(), но... это уже детали. Используя смысловые имена функций мы четко определяем, что программа делает и как она организована. После этого можно заниматься каждой функцией отдельно и совершенствовать ее до тех пор, пока она не будет правильно выполнять требуемую задачу. Дополнительное преимущество данного подхода состоит в том, что если мы создадим функции достаточно общего вида, то их можно будет использовать и в других программах.
31 Класс памяти (auto)
Для возврата из функции нескольких значений можно использовать глобальные переменные. В этом случае кроме изученных ранее характеристик переменных (имя, тип, значение), используется еще одна - класс памяти.
Класс памяти характеризует время существования и область действия объекта в программе. Перечислим имена классов памяти:
auto,
extern,
static,
register.
Остановимся более подробно на автоматическом классе памяти (auto).
Объекты, описанные внутри блока:
с указанием класса памяти auto или
без указания класса памяти,
относятся к объектам автоматического класса памяти (автоматическим объектам).
Автоматические объекты являются локальными по отношению к блоку, и их значения хранятся внутри того блока, где они описаны. Автоматические объекты существуют только во время выполнения данного блока и теряют свои значения при выходе из него. При каждом вхождении в блок им присваиваются начальные значения, если они заданы в описании. Если начальные значения не заданы, то значения автоматических объектов при входе в блок не определены.
Автоматические переменные инициализируются всякий раз при входе в функцию или блок. Для автоматических переменных инициализирующее выражение не обязательно должно быть константой: оно может быть любым выражением, включающим определенные ранее величины и обращения к функциям. По своему действию инициализация автоматических переменных является сокращенной записью оператора присваивания.
Пример. Результат работы следующей программы не определен, так как в функции P() значение переменной a не определено.
#include <iostream.h>
void main ()
{
auto int a=6;
void P();
/* -- */
P();
}
/* --- */
void P()
{
auto int a;
cout << a << endl;
}