- •1. Основные понятия информатики
- •1.1. Понятие и задачи информатики
- •1.2. Системы счисления
- •1.2.1. Двоичная система счисления
- •1.2.2. Восьмеричная система счисления
- •1.2.3. Шестнадцатеричная система
- •1.3. Обобщенная структура и состав персонального компьютера
- •1.4. Организация вычислительных процессов при решении инженерных задач
- •1.5.1. Алгоритм: основные свойства и способы представления
- •1.5.2. Базовые элементы и структуры программирования
- •1.5. Алгоритмы
- •1.5.3. Представление линейных, разветвленных и циклических структур
- •2. ОБщие сведения об операционных системах
- •2.1. Общие сведения об операционных системах
- •2.1.1. Предпосылки создания и краткая история операционных систем ms-dos и Windows
- •2.1.1.1. Операционная система ms-dos
- •2.1.1.2. История создания операционной системы Windows
- •2.1.2. Основные отличия версий операционных систем
- •2.1.2.1. Операционная система Mac os
- •2.1.1.2. Операционная система Linux
- •2.1.1.3. Операционная система Windows
- •2.1.3. Основные команды операционной системы ms-dos
- •2.2. Основные элементы интерфейса операционной системы Windows
- •2.2.1. Элементы интерфейса ос Windows
- •2.2.2. Работа с файловыми системами операционной системы
- •3.2. Элементы языка с
- •3.2.1. Алфавит языка с (используемые символы)
- •3.2.2. Идентификаторы
- •3.2.3. Константы
- •3.2.4. Ключевые слова
- •3.2.5. Знаки операций
- •3.2.6. Комментарии
- •3.3. Лекция 6. Типы данных и их объявление
- •3.3.1. Основные типы данных
- •3.3.2. Объявление типов данных
- •3.4. Лекция 7. Указатели и массивы
- •3.4.1. Объявление указателей
- •3.4.2. Инициализация указателей
- •3.4.3. Составные указатели
- •3.4.4. Операции над указателями
- •3.4.5. Ссылки
- •3.5. Лекция 8. Массивы
- •3.5.1. Одномерные массивы
- •3.5.2. Многомерные массивы
- •3.5.3. Динамические массивы
- •3.5.3.1. Одномерные динамические массивы
- •3.5.3.2. Динамический многомерный массив
- •3.5.4. Символьные массивы (строки)
- •3.6. Лекция 9. Выражения и присваивания
- •3.6.1. Операции инкремента и декремента (увеличения и уменьшения на 1)
- •3.6.2. Операция определения размера типа
- •3.6.4. Операции деления ( / ) и нахождения остатка от деления ( % )
- •3.6.7. Поразрядные операции
- •3.6.8. Логические операции
- •3.6.9. Операции присваивания
- •3.6.10. Условная операция
- •3.6.11. Приоритеты выполнения операций
- •3.6.12. Преобразование типов
- •3.7. Лекция 10. Операторы
- •3.7.1. Операторы ветвления
- •3.7.1.1. Условный оператор if
- •If (выражение) [оператор_1]; [ else оператор_2 ; ]
- •3.7.1.2. Оператор switch
- •3.7.2. Операторы цикла
- •3.7.2.1. Цикл с предусловием (while)
- •3.7.2.2. Цикл с постусловием (do while)
- •3.7.2.3. Цикл с параметрами ( for )
- •3.7.3. Операторы передачи управления
- •3.7.3.1. Оператор безусловного перехода goto
- •3.7.3.2. Оператор прерывания break
- •3.7.3.3. Оператор пропуска continue
- •3.7.3.4. Оператор возврата из функции return
- •4. Модульное программирование
- •4.1. Лекция 11. Функции
- •4.1.1. Объявление функций
- •4.1.2. Определение функций
- •4.1.3. Вызов функций
- •4.1.4. Передача параметров в функцию
- •4.1.5. Передача массивов в функцию
- •В примере:
- •4.1.6. Функции с переменным числом параметров
- •4.1.7. Рекурсивные функции
- •4.1.8. Функция main()
- •4.1.9. Перегрузка функций
- •4.1.10. Шаблоны функций
- •4.2. Лекция 12. Директивы препроцессора
- •4.2.1. Директива #include
- •4.2.1. Директива # define
- •4.2.3. Директивы условной компиляции
- •4.2.4. Директивы #undef
- •4.3. Лекция 13. Пользовательские типы данных
- •4.3.1. Переименование типов
- •4.3.2. Перечисления
- •4.3.3. Структуры
- •4.3.4. Битовые поля
- •4.3.5. Объединения
- •5. Программирование графических изображений в языке с
- •5.1. Лекция 14. Программирование графических изображений
- •5.1.1. Графический режим видеоадаптера
- •5.1.2. Функции управления графическим окном
- •5.1.3. Управление цветом и стилем заполнения фигур
- •5.1.4. Рисование простейших графических фигур
- •5.1.5. Отображение текстовой информации в графическом режиме
- •5.1.7. Преобразование координат и анимационные эффекты
- •6.1.1.3. Функция gets()
- •6.1.1.4. Функция puts()
- •6.1.1.5. Функции printf() и scanf()
- •Потоковые объекты ввода/вывода (форматируемые):
- •6.1.2.1 Форматирование данных с помощью флагов и методов
- •6.2. Функции файлового ввода и вывода
- •6.2.1. Файловый ввод и вывод средствами с
- •6.3. Строки: операции с текстовыми файлами
- •6.3.1. Операции над строками
- •6.3.2. Методы и функции ввода и вывода строк
- •6.4. Лекция 18. Операции со структурами и бинарными файлами
- •6.5. Лекция 19. Списки: операции с динамическими структурами данных; организация списков и их обработка
- •6.5.1. Линейные списки
- •6.5.2. Стеки
- •6.5.3. Очередь
- •6.5.4. Бинарные деревья
4.1.2. Определение функций
Определение функции содержит, кроме объявления, тело функции, представляющее собой последовательность операторов.
Формат:
[класс] тип имя ( [список_параметров] ) [throw(исключения)]
{тело функции}
Здесь:
— исключения — список исключений, которые может порождать функция (т.е. ошибки).
4.1.3. Вызов функций
Формат:
имя_функции ( [список_параметров] ) ;
Примечание:
1. В определении, в объявлении и при вызове одной и той же функции типы и порядок следования параметров должны совпадать.
2. На имена параметров ограничений по соответствию не накладывается, так как функцию можно вызывать с различными аргументами.
3. В прототипах имена списка параметров игнорируются и служат исключительно для улучшения читаемости программы.
Пример:
#include <iostream.h>
//объявление функции:
int sum (int x, int y) ; // <– – Вариант 1
//int sum (int, int) ; <– – Вариант 2
main() {
int a=2 , b=3 , c , d ;
c=sum(a , b) ; // вызов функции
cin>> d ;
cout<< sum(c , d) ; // вызов функции
cout<< sum(a*10+5 , b+3-a/2) ;// вызов функции
return 0 ;
}
// определение функции
int sum (int x , int y)
{
return (x+y) ; // <– – Здесь x и y – локальные переменные
}
В следующем примере все величины, описанные внутри функций являются локальными.
4.1.4. Передача параметров в функцию
Параметры, перечисленные в заголовке описания функции, называют формальными, а записанные в операторе вызова функции — фактическими параметрами, или аргументами.
Кроме этого в функцию можно передавать параметры специальным образом, например:
sum ( a*10+5 , b+3–a/2 ) ;
Параметры, перечисленные в заголовке описания функции, называют формальными, а записанные в операторе вызова функции — фактическими параметрами, или аргументами.
Существует два основных способа передачи параметров в функцию (см. рис. 4.1.): по значению и по адресу.
Рисунок 4.1 — Способы передачи параметров в функцию
Пример:
#include <iostream.h>
void increm (int a, int *b, int &c) ; // объявление функции
main() {
int a=1 , b=2 , c=3 ;
cout<<''a b c \n'' ;
cout<<a<<' '<<b<<' '<<c<<'\n' ;
increm(a , &b, c) ; //вызов функции
cout<< a<<' '<<b<<' '<<c<<'\n' ;
return 0 ;
}
void increm(int a , int *b , int &c)
{ // определение функции
a++, (*b)++, c++
}
Результат выполнения программы:
a b c
1 2 3
1 3 4
В примере:
— первый параметр (а) передаётся в функцию по значению, его изменение в функции не влияет на исходное значение переменной;
— второй параметр (b) передаётся по адресу с помощью указателя; передача фактического параметра (аргумента) осуществляется с помощью операции взятия адреса (&); в самой функции используется операция реадресации (разыменования, *);
— третий параметр (с) передаётся в функцию с помощью ссылки; при этом происходит неявное разыменование; такой способ передачи параметров в функцию улучшает читаемость и понятность кода программы.
4.1.5. Передача массивов в функцию
При использовании массива в качестве параметра функции, в функцию передаётся указатель на тип элемента массива, а точнее — на первый элемент массива.
Рассмотрим пример передачи одномерного массива:
/* Передача одномерного массива в функцию */
#include <iostream.h>
int sum (const int *mas, const int n) ; //объявление функции
const int n=10; //объявление константы – кол-ва элементов массива
main()
{
int marks[n] = {1, 2, 3, 4, 5, 6} ; //объявление и иниц-ция массива
cout<< “Сумма эл-тов массива: ”<<sum(marks, n) ; //вызов ф-ции
return 0;
}
int sum(const int *mas, const int n) //определение функции
{ // или int sum(int mas[], int n)
// или int sum(int mas[n], int n)
int s=0;
for (int i=0; i<n; i++) s += mas[i] ; //суммирование элементов м.
return s ;
}
Результат выполнения программы:
Сумма эл-тов массива: 21
Рассмотрим пример передачи двумерного массива в функцию:
/* Передача двумерного массива в функцию */
#include <iostream.h>
int sum (int **a, const int n_str, const int n_slb) ; //1
main()
{ int n_str, n_slb;
int **a, i, j ;
cout<< “Кол-во строк: ” ; cin>>n_str; //2
cout<< “Кол-во столбцов: ” ; cin>>n_slb; //2
a = new int *[n_str] ; //3
for (i=0; i<n_str; i++) a[i] = new int [n_slb] ; //3
for (i=0; i<n_str; i++) //4
for (j=0; j<n_slb;j++) //4
{ cout<<“a[”<<i<<“,”<<j<<“]=”; //4
cin>>a[i][j] ; //4
}
cout<<“Сумма эл-тов массива: ”<<sum(a, n_str, n_slb) ; //5
...
return 0 ;
}
int sum(int **a, const int n_str, const int n_slb) //6
{ for(int s=0, i=0; i<n_str; i++) //7
for(int j=0; j<n_slb; j++) s+=a[i][j] ; //7
return s ; //8
}
Результат выполнения программы при вводе кол-ва строк — 2 и количества столбцов —2, и значений элементов массива a[0,0]=1, a[0,1]=2, a[1,0]=3, a[1,1]=4:
Сумма эл-тов массива: 10
