
- •Базовые понятия информатики. Понятие «Информатика» и «Информация»
- •Информация
- •Информационные технологии
- •Понятие алгоритма. Свойства и классы алгоритмов. Формы представления алгоритмов
- •Понятие алгоритма. Базовые алгоритмические структуры
- •Представление данных в памяти персонального компьютера.
- •Принципы обработки программных кодов
- •Компиляторы
- •Интерпретатор
- •Язык с. История развития. Основные свойства языка
- •Отличительные особенности языкаC
- •Элементы языка c
- •Константы
- •Базовые типы данных
- •Директива #include
- •Использование void
- •Инструкция return
- •Описание переменных
- •Обработка данных. Операторы
- •Арифметические операторы
- •Приоритет операторов и порядок вычислений
- •Используемые алгоритмы обработки данных
- •Аккумуляторы
- •Преобразования типов данных
- •Декларации и дефиниции функций
- •Формальные и фактические параметры. Вызов функций
- •Возврат функцией значений
- •Переменные в функциях
- •Автоматические (локальные) переменные
- •Внешние (глобальные) переменные
- •Статические переменные
- •Передача параметров по значению
- •Передача параметров по ссылке
- •Значения параметров по умолчанию
- •Перегрузка функций
- •Рекурсия
- •Встроенные функции
- •Обработка символьных данных
- •Функция puts()
- •Функция putchar()
- •Функция printf()
- •Выбор правильных средств вывода информации
- •Функция gets()
- •Функция getchar()
- •Функция scanf()
- •Выбор соответствующих средств ввода данных
- •Управляющие структуры Структуры выбора (if / else)
- •Структуры выбора (switch/case/default)
- •Структуры повторения (циклы)
- •Использование цикла for
- •Использование цикла do...While (постусловие)
- •Использование цикла while (предусловие)
- •Операторы передачи управления Оператор безусловного перехода goto
- •Оператор break
- •Оператор continue
- •Препроцессор языка Си
- •Массивы Объявление переменной массива
- •Использование индексной переменной Если ваши программы используют массив, обычной операцией является использование индексной переменной для обращения к элементам массива.
- •Каждый раз, когда цикл for увеличивает переменную I, программа может обратиться к следующему элементу массива. Инициализация массива при объявлении
- •Программа не инициализирует элементы values[3] и values[4]. В зависимости от вашего компилятора, эти элементы могут содержать значение 0.
- •Использование констант при объявлении массивов
- •Когда выходной поток cout выводит символьную строку, он по одному выводит символы строки, пока не встретит символ null. Как 'а' отличается от "а"
- •В зависимости от потребностей программы может возникнуть необходимость включения в строку знаков кавычек. Предположим, что требуется представить следующую строку:
- •Инициализация символьной строки
- •Следующая программа init_str.Cpp инициализирует символьную строку при объявлении:
Передача параметров по ссылке
Как известно, в Си по умолчанию параметры передаются функции по значению. При таком способе передачи параметра функция не имеет возможности изменить значение передаваемой ей переменной таким образом, чтобы это изменение имело место и после завершения выполнения функции. Однако в большинстве программ бывает необходимо, чтобы функции тем или иным способом изменяли значения своих параметров. Например, функция, которая читает информацию из файла, должна возвращать считанные данные в массиве символьной строки.
Для того чтобы функция могла возвращать модифицированное значение своего параметра, при вызове такой функции должен использоваться способ, называемый передача параметра по ссылке. Различие между передачей параметра по значению и по ссылке заключается в том, что в первом случае функция получает копию значения параметра, а во втором - адрес значения переменной. Таким образом, при получении параметра по ссылке функция может производить изменения значения, сохраненного по данному адресу, и эти изменения остаются в силе и после завершения функции. Для организации передачи параметров функции по ссылке в программе должны использоваться указатели. Подробно этот тип переменных обсуждается в разделе "Массивы, указатели и структуры". Здесь же будем рассматривать указатель просто как адрес памяти. Для присваивания указателю адреса переменной используется операция получения адреса (&). Для доступа к значению, расположенному по месту памяти, задаваемому указателем, применяется операция "звездочка" (*).
intx;
int&y=x;
Идентификатор y назначает другое, альтернативное имя ячейке, названной x. Если прибавить к значению переменной x некоторое число, то оно будет прибавлено и к переменной y.
#include <iostream.h>
#include <conio.h>
void summa(int &number1, int &number2)
{
number1++;
number2++;
}
void main()
{
int a=10;
int b=15;
cout<<"Before upd "<<a<<" "<<b;
summa(a,b);
cout<<"\nAfter upd "<<a<<" "<<b;
getch();
}
Результат
Before upd 10 15
After upd 11 16
Так как number1 и a – это одна и та же ячейка, то изменение number1 автоматически приведет к изменению переменной a (аналогично number2 и b).
Значения параметров по умолчанию
Как вы уже знаете, C++ позволяет вам с помощью параметров передавать информацию в функции. Кроме этого, в C++ при вызове функций можно опускать параметры. В таких случаях для опущенных параметров будут использоваться значения по умолчанию. Обеспечение значений по умолчанию для параметров упрощает возможность повторного использования функций (их использования несколькими программами).
Обеспечить значения по умолчанию для параметров функции очень легко. Вы просто присваиваете значение параметру с помощью оператора присваивания С++ прямо при объявлении функции, как показано ниже:
void some_function(int size=12, float cost=19.95) //--->Значения по умолчанию
{ // Операторы функции }
Следующая программа присваивает значения по умолчанию параметрам a, b и c внутри функции show_parameters. Затем программа четыре раза вызывает эту функцию, сначала не указывая параметров вообще, затем указывая значение только для а, потом значения для а и b и, наконец, указывая значения для всех трех параметров:
#include <iostream.h>
void show__parameters (int a=1, int b=2, int c=3)
{ cout << "a" << a << " b " << b << " с " << с << endl; }
void main(void)
{ show_parameters(); show_parameters(1001); show_parameters(1001, 2002); show_parameters(1001, 2002, 3003); }
Когда вы откомпилируете и запустите эту программу, на вашем экране появится следующий вывод:
С:\> DEFAULTS<ENTER>
а 1 b2 с 3
а 1001 b2 с 3
а 1001 b2002 с 3
а 1001 b2002 с 3003
Как видите, если необходимо, функция использует значения параметров по умолчанию.
Правила для пропуска значений параметров
Если программа опускает значения параметров при вызове функции, функция использует значения по умолчанию. Если программа опускает определенный параметр для функции, обеспечивающей значения по умолчанию, то следует опустить и все последующие параметры. Другими словами, вы не можете опускать средний параметр. В случае предыдущей программы, если требовалось опустить значение параметра b в show_parameters, программа также должна была опустить значение параметра с. Вы не можете указать значение для а и с, опуская значение b.
По мере увеличения количества созданных программ и функций, вероятно, встретятся функции, которые вообще не имеют параметров. При определении такой функции (и ее прототипа) следует применить ключевое слово void. С помощью void компилятору (и другим программам) сообщается о том, что функция не использует параметров:
int my_function(void);
Если в дальнейшем в программе будет сделана попытка использовать такую функцию с параметрами, то компилятор выдаст ошибку.