- •Обобщенная схема компьютера:
- •Понятие информации и алгоритма. Формы представления алгоритма:
- •Блок-схемы разветвляющихся алгоритмов:
- •Блок-схемы циклических алгоритмов:
- •Операции присваивания. Особенности выполнения.
- •Потоковый ввод-вывод.
- •Форматированный ввод-вывод.
- •Использование манипуляторов при вводе и выводе данных.
- •Строковый и символьный ввод-вывод информации.
- •Условные операторы. Условная операция «?:». Примеры использования.
- •Особенности синтаксиса и выполнения операторов перехода continue, break.
- •Оператор перехода goto. Оператор return.
- •Переключатель switch. Примеры использования.
- •Организация циклов с помощью while, do-while. Примеры.
- •Организация циклов с помощью for. Примеры.
- •Пространство имен. Ключевое слово using как директива.
- •Средства отладки программ в ms vs.
- •Выполнение приложения с использованием средств интерактивной отладки.
- •Выполнение приложения с использованием средств планируемой отладки.
- •Создание исполняемого файла.
- •Побитовые логические операции (конъюнкция, дизъюнкция, сдвиги, инвертирование).
- •Символы, строки (примеры объявления, инициализации).
- •Алгоритмы работы со строками (подсчет длины строки, объединение строк, удаление заданного символа).
- •Стандартные функции работы со строками. Примеры использования.
- •Логические переменные и примеры их использования в программах.
- •Понятие указателя. Операции над указателями.
- •Одномерные массивы и указатели. Понятие индекса. Инициализация. Доступ к компонентам.
- •Указатели и строки. Примеры (объединение строк, поиск заданного символа).
- •Матрицы. Инициализация, ввод, вывод.
- •Связь между указателями и элементами матриц. Поиск минимума и суммы элементов матрицы через указатели.
- •Указатели на указатели. Примеры использования.
- •Функции работы с динамическими массивами на языке с.
- •Объявление и определение функции.
- •Вызов и использование функций.
- •Способы передачи аргументов в функции. Использование указателей.
- •Массивы и строки как параметры функций.
- •Перегрузка функций. Задание параметров функции по умолчанию.
- •Функции с переменным числом аргументов.
- •Указатели как формальные параметры и как результат функции.
- •Ссылки как формальные параметры и как результат функции.
- •Массивы указателей. Способы формирования.
- •Многоуровневые указатели.
-
Массивы и строки как параметры функций.
Как правило, массив в параметре функции интерпретируется как указатель.
В программе функция f1 вычисляет длину строки, заданной фактическим параметром buf, формальный параметр - указатель:
#include <stdio.h>
#include <string.h>
int f1 (char *s) {
printf ("\nsizeof(s)=%d",sizeof(s));
for (int l=0;*s;s++,l++);
return l;
}
void main () {
char buf[128];
strcpy (buf,"Hello,win");
printf ("\nresult=%d",f1(buf));
}
-
Перегрузка функций. Задание параметров функции по умолчанию.
В С++ возможно определение нескольких функций с одинаковым именем, но с разными типами и/или количеством формальных параметров. При этом транслятор выбирает соответствующую функцию по типу аргументов.
//прототипы
int max (int arr[ ], int size);
long max (long arr[ ], int size);
double max (double arr[ ], int size);
double max (long arr[ ], int size); //ошибка
Разные типы возвращаемых значений не дают возможности различать функции. Поэтому компилятор не может различить функции
long max (long arr[ ], int size);
double max (long arr[ ], int size);
Назначение перегрузки – разрешить выполнять одно и то же действие с разными операндами.
Пусть объявлена функция: char* func(long, int = 0);
Инициализатор второго параметра является параметром по умолчанию.
То есть, если в вызове дан только один параметр, в качестве второго используется параметр по умолчанию.
cout << func(31) << func(32, 3);
интерпретируется как
cout << func(31, 0) << func(32, 3);
Задавать параметр по умолчанию можно только для последних параметров.
Аргументы по умолчанию должны быть указаны при первом упоминании имени функции – обычно в прототипе. Значения по умолчанию могут быть константами, глобальными переменными или вызовами функций.
-
Функции с переменным числом аргументов.
Пример функции с переменным числом параметров, в которой вычисляется сумма значений. В программе список параметров состоит из одного параметра, который является количеством дополнительных параметров:
int sum (int n, ...)
{ int *p = &n;
int s = 0;
for (int i = 1; i <= n; i++)
s += *(++p);
return s;
}
void main()
{ cout << sum(6, 4, 5, 1, 2, 3, 0); }
-
Указатели как формальные параметры и как результат функции.
Формальные параметры функции представляют собой локальные переменные, которым в момент вызова присваиваются значения фактических параметров.
Формальные параметры внутри функции могут как угодно изменяться - это не затрагивает соответствующих фактических параметров в основной программе.
Если фактический параметр должен быть изменен в подпрограмме-функции, то формальный параметр надо определить как указатель. Тогда фактический параметр должен быть передан с использованием операции &. Пример, в котором происходит обмен значениями переменных:
void swap(int *, int *); // прототип
int main()
{ int a = 10; int b = 20;
cout << a<<' '<< b<<endl;
swap(&a, &b);
cout << a<<' '<< b<<endl;
}
void swap(int *x, int *y)
{ int c;
c = *x; *x = *y; *y = c;
}
Указатель-результат функции может ссылаться не только на отдельную переменную, но и на массив.
Пример. В массиве А увеличить все числа на 1 (внутри функции).
int *ftf(int *pA, int n)
{ for (int i = 0; i < n; i++)
*(pA + i) = *(pA + i) + 1;
return pA;
}
void main()
{ int A[] = {8, 4, 3, 2, 11};
*ftf(A, 5);
for (int i = 0; i < 5; i++)
cout<<A[i]<<' ';
}