- •1.1. _Классика. Общие сведения
- •1.1.3. Элементарные функции ввода-вывода
- •1.2. Функции
- •Void surface(int dl, int VI, int shi);
- •1.3.1. Задание значений аргумента функций по умолчанию
- •1.3.2. Перезагружаемые функции (function overloading)
- •1.3.4. Допускается использование функции с различным количеством аргументов.
- •1.3.6. Дружественные функции (friend)
- •1.3.9. Виртуальные (virtual) функции
- •1.3.8. Шаблоны.
- •1.3.10. Абстрактные классы
- •1.4. Указатели (ссылки). Массивы.
- •Int fprintf ([указатель-На-Входной-Поток], Управляющая-строка, [,Имя-переменной-1, [Имя-переменной-2…]]);
- •Int cprintf (УправляющаяСтрока[,Имя-переменной-1, [Имя-переменной-2…]]);
- •1.6.1 Директива Include
- •1.6.2 Директивы #define и #undef
- •1.6.3 Условные Директивы
- •1.8..Проект (создание проекта классическими средствами языка с)
- •1 .8.1. Классы памяти
- •1.8.3. Проект
- •Раздел 2. Классы
- •31.10.11 Кр Связан с созданием классов и про ооп
- •Лекция 8 от 17.10.2011
- •7.2.2. Динамически присоединенные библиотеки
1.1.3. Элементарные функции ввода-вывода
<Stdio.h>
P
rintf
([“Управляющая строка”][,Список
аргументов]);
Оператор вывода функции
Const
Управляющая строка: как вводится информация и как преобразовывается
Может быть:
Символьное преобразование
Символьное управление переходом
Любой вводимый текст
%
Количество десятичных знаков
[ - ] [ min] [ . ] [ dote ] Символьный преобразовательРавнение по левому краю
Минимальное количество символов для отвода под аргумент
Printf(“%-10.7s”,”Программа”); Прогамм _ _ _
c – один символ (char)
d – целое число (int)
f – число с плавающей точкой
s – вывод массива символов
\b – шаг назад
\f – новая страница
\n – новая строка
\r – возврат каретки
Scanf – ввод данных из входного потока cin
S
Const char*
canf ([“Управляющая строка”],[Список агрументов]);
% [ * ] [ max ] Символьный преобразователь
Подавление аргумента, ввод с клавиатуры или файла
Количество символов
Преобразователь
<iostream.h>
Cout<<10<<”x”<<3,15159<<”приблизительно равно”,,(10*4,14)<<endl;
Cout<<”Введите число формата Float”;
Cin>>x;
1.2. Функции
В С модульность реализуется через функции и макрокоманды, т.е. отсутствует понятие процедур и подпрограмм. Ни одна функция в С не может содержать определение объектов другой функции, но они могут содержать общие объекты, если объекты объявлены за пределами функций или находятся в общем файле включения.
Ф
Заголовок
ункция
представляет собой независимую
совокупность определений и операторов,
предназначенных для многократного
использования, и имеет следующую
конструкцию:
[
Спецификатор]
[Int]
ИМЯ ( [ [Типы данных] Имена формальных
параметров] )
Тип возвращаемого результата
Уникальное
[Типы формальных параметров]
{
[ Определение локальных объектов ]
[ Исполнительная часть в виде операторов и вызовов других функций]
[ Оператор возврата return ]
}
Определение функции – текст функции, который содержит обязательно заголовок, описание типов формальных параметров и тело функции с локальными определениями и операторами.
Примеры заголовков:
Float surface (float Per, int sat) – возвращается float
Void surface (float Per; int sat) – не возвращается ничего
Int surface (void) – возвращаемый тип Int не имеет параметров
Вызов функции:
Имя_Переменной = Имя_Функции([С фактическими значениями параметров])
Имя функции ([С фактическими значениями параметров]) – имеет return, 1 возвращается
Допускается деление вызова функции до ее описания. Но тогда в функции вызова должно быть описание прототипа вызываемой функции.
П
Описание типов формальных параметров. Две строчки можно заменить одной:
Void surface(int dl, int VI, int shi);
ример 0. Расчет поверхности параллелограмма, где не требуется использование прототипа функции.#
unclude
<iostream.h>
Void surface(dl, vi, shi)
Int dl, int vi, int shi;
{
Return 2*(dl*vi+dl*shi+vi*shi);
}
Void main(void)
{
Int dlina=10, visota=5, shirina, are;
Shirina=2;
Are=surface(dlina,visota,shirina);
Cout<<”Площадь параллелограмма равна”<<are;
}
Пример 1. Требуется использование прототипа функции.
Прототип имеет тот же формат, что и заголовок, но он завершается ; и в аргументах функции перечисляются только типы данных без указания формальных параметров.
Компилятор использует прототипы для контроля совпадения фактических и формальных параметров в вызываемой функции и функции вызова.
#unclude <iostream.h>
#include <stdio.h>
Void main(void)
{
Float surface(float,int,float);
Float dlina=10.8, int visota=5, shirina;
Cin>>shirina;
Printf(“Площадь параллелограмма = %f\n”,surface(dlina, visota, shirina));
}
Float surface(float dl, int vi, float shr)
{*ar=2*(dl*vi+dl*shi+vi*shi);}
{return 2*(dl*vi+dl*shi+vi*shi);}
Для передачи информации в функцию существует 2 подхода:
Посредством задания формальных параметров фактических значений при вызове. Т.е. явная передача.
Если функция вызова и вызываемая функция будут использовать общие объекты, определенные за пределами тела функции. Т.е. неявная передача.
Для возврата информации из функции существует 3 способа:
Возврат информации неявным способом на основе использования общих объектов, определенных за пределами функции (объекты – переменные).
Возврат единственного значения я помощью оператора return.
Через список формальных параметров на основе использования инструментов адресов и ссылок.
При обычном вызове функции значения фактических параметров копируются в промежуточную область и формальные параметры ссылаются на эти значения. Когда вызов функции отработает, промежуточная область освобождается, значения формального параметра теряются.
Если в функцию передавать не значения, а адреса фактических значений, то после завершения работы вызываемой функции значения параметров будут сохранены.
Int *ar
*ar=…
Void main(void)
…
Cout<<&ar;
…
Операция разадресации: *Имя_Формального_Параметра = выражение;
Лекция 2 от 12.09.2011
26-го числа кр. Первую страницу раздаточного материала знать наизусть (!)
1.3. Расширение возможностей аппарата функций С++
