- •Основные логические функции и элементы
- •Комбинированные цифровые схемы. Построение цифровой схемы по произвольной таблице истинности (сднф)
- •Комбинированные цифровые схемы. Построение цифровой схемы по произвольной таблице истинности (скнф)
- •Комбинированные цифровые схемы. Декодер. Десятичный дешифратор
- •Комбинированные цифровые схемы. Семисегментный дешифратор
- •Сумматор
- •Бистабильные схемы
- •Rs-триггер
- •Синхронный rs-триггер
- •Статический d-триггер
- •Динамический d-триггер
- •T-триггер. Суммарный асинхронный счетчик
- •Параллельный регистр
- •Последовательный регистр
- •Архитектура микопроцессорной системы
- •Структурная схема микропроцессорной системы
- •Основные концепции языков программирования
- •Парадигмы языков программирования
- •Критерии оценки языков программирования
- •Объекты данных в языках программирования
- •Механизмы типизации
- •Виды типизации
- •Произвольные типы
- •Время жизни переменных
- •Область видимости переменных
- •Типы данных
- •Векторы и массивы
- •Указатели
- •Выражения и операторы присваивания
- •Структуры управления на уровне операторов
- •Составной оператор (блок)
- •Операторы if
- •Переключатели
- •Цикл while (while-do)
- •Цикл repeat(do-while)
- •Цикл for-do
- •Функции
- •Функции без возвращаемого значения
- •Параметры и переменные в функциях
- •Необходимость инициализации переменных (автоматические переменные)
- •Статические переменные
- •Передача по значению
- •Адреса и указатели
- •Чем «опасны» указатели?
- •Ввод-вывод
- •Функции как часть типа данных
- •Конструкторы и деструкторы
- •Перегрузка операторов и функций
- •Перегрузка функций. Прототипы и сигнатуры
- •Пространство имен
- •Исключения (exceptions)
- •Наследование и полиморфизм
- •Уровни доступа к базовому классу
- •Одноименные поля в произвольном и базовых классах
- •Виртуальные функции
- •Абстрактные классы. Чистые виртуальные функции.
- •Виртуальные конструкторы
Цикл while (while-do)
Цикл while называют цклом с предусловием потому что сначала проверяется условие, и если оно верно, то выполняется тело цикла. Условие продолжения цикла должно быть истинно true, как только условие стало ложным, выполняется выход из цикла. Также как и в условных операторах выбора, фигурные скобочки могут опускаться в том случае, если тело цикла — это один оператор. Но как правило в цикле выполняется несколько операторов, так как кроме выполнения полезного действия необходимо делать условие цикла while ложным, иначе цикл будет бесконечным, а это, в свою очередь, приведет к зависанию программы.
Pascal: |
C:
|
whileлогическое выражениеdo тело цикла;
|
while(условие цикла) do{тело оператора}
|
Цикл repeat(do-while)
Похож на цикл while-do, различаются тем что вdo-whileусловие выполняется хотя бы один раз
Pascal: |
C:
|
Repeat тело цикла untilлогическое выражение;
|
do{тело оператора} while(условие цикла);
|
Цикл for-do
Похож на цикл for, нопозволяет задать определенное количество выполнений кода.
Pascal: |
C:
|
forиндексная переменная:= начальное значениеtoконечное значениеdo тело цикла;
|
for(стартовое значение переменной цикла; условие продолжения; изменение шага переменной цикла) тело цикла; int c, i; char s[10]; c=64; for (i=0; i<10; i++) do s[i]=c;
|
Функции
Вызов функции - это оператор. У вызова функции есть приоритет – один из самых высоких. Список аргументов функции считают за один операнд, так что оператор оказывается бинарным (первый операнд - сама функция, второй - список ее аргументов).
Пример записи функции func:
double func(double param1, int param2)
{ return param1-0.1*param2; }
Сначала указан тип значения, которое функция возвращает - в данном случае это double. Затем после пробела следует имя функции - идентификатор, составленный по тем же правилам, что и для имен переменных. После имени функции в круглых скобках перечислены формальные параметры с указанием их типов.
Формальные параметры разделены запятыми. В нашей функции это param1типаdoubleиparam2типаint.
После круглых скобок со списком формальных параметров следует блок с телом функции - тот, который в фигурных скобках, причем в теле функции мы можем использовать формальные параметры как обычные переменные.
Определив функцию, мы можем ее неоднократно вызывать, задавая в
качестве фактических параметров нужные нам переменные или
значения. При этом мы можем использовать то значение, которое она
возвращает, а можем его игнорировать (если нам просто надо, чтобы
ыполнились операторы в теле функции).
int i; double x, result; ... /* два вызова функции в выражении */ result = func(x,i) * func( i+x, 100 ); /* Вызываем еще раз, но игнорируем возвращаемое значение */ func(x, i);
Функция может выполнять «побочный эффект» - печать, выводить в файл, тогда возвращать значение не надо
Функции без возвращаемого значения
/* У этой функции нет возвращаемого значения */ void f() { ... return; }
В операторе returnнет никакого значения, сразу после ключевого слова стоит точка с запятой.
Также можно написать voidвместо списка параметров, если функции параметры не нужны:
int f(void) { ... return 0; }
Указатель типа voidсовместим со всеми другими типами указателей