- •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. Бинарные деревья
В примере:
//1 — объявление функции; модификатор const указывает на то, что параметры в функции не изменяются;
//2 — ввод размерности массива;
//3 — выделение памяти под динамический массив;
//4 — ввод значений элементов массива;
//5 — вызов функций и вывод результата выполнения функции на экран;
//6 — определение функции;
//7 — суммирование элементов массива;
//8 — передача результата суммирования в точку вызова функции.
4.1.6. Функции с переменным числом параметров
В функциях с переменным числом параметров список формальных параметров заканчивается троеточием.
Для доступа к необязательным параметрам внутри функции используются следующие макросы библиотеки <stdarg.h>:
va_start,
va_arg,
va_end и va_list .
va_start — инициализирует указатель;
va_list — хранит указатель на очередной аргумент;
va_arg — возвращает значение очередного аргумента;
va_end — после перебора всех элементов необходимо обратиться к этому макросу до выхода из функции.
Пример:
/* функция с переменным числом параметров */
#include <stdio.h>
#include <stdarg.h>
main () {
int n;
int sred_znach(int , …) ; // объявление функции
n=sred_znach(2,3,4,-1) ; // вызов с 4-мя параметрами
print(''n=%d'' , n) ;
n=sred_znach(5,6,7,8,9,-1) ; // вызов с 6-ю параметрами
printf(''\n n=%d'' , n) ;
return 0 ;
}
int sred_znach(int x , …) // определение функции
{ int i=0 ; j=0 ; sum=0 ;
va_list uk_arg ; // объявл-е указателя uk_arg на эл-ты
// списка необязательных параметров
va_start (uk_arg , x) ; // установка указателя uk_arg на
// первый необязательный параметр х
/* выборка очередного параметра и проверка на конец списка: */
while ((i=va_arg(uk_arg , int))!=–1)
{
sum+=i ; // сумма элементов
j++ ; // кол-во элементов
}
va_end(uk_arg) ; // закрытие списка параметров
return (sum/j) ; // передача сред. знач. в точку вызова
}
Результат выполнения программы:
n=3
n=7
Примечание:
Функция в данном примере имеет один обязательный параметр, который обязательно должен быть равен ‘–1' и является признаком (флагом) окончания списка передаваемых в функцию параметров.
4.1.7. Рекурсивные функции
Рекурсивная функция — функция, вызывающая сама себя (прямая рекурсия). Если несколько функций вызывают друг друга — это косвенная рекурсия.
Рекурсивная функция должна иметь хоть одну нерекурсивную ветвь, заканчивающуюся оператором возврата.
Пример:
/* вычисление факториала (n!): */
long factorial (long n) {
if (n==0 || n==1) return 1;
return (n*factorial(n–1));
}
Положительные стороны использования рекурсивной функции — компактность программного кода, отрицательные — расход памяти и времени, опасность переполнения стека.
4.1.8. Функция main()
Функция main()— функция, которой передаётся управление после запуска программы и которая может передавать значение в вызывавшую систему и принимать параметры из внешнего окружения.
Существует два формата записи функции:
— без параметров
тип main() { … }
— с двумя параметрами
тип main( int argc , char* argv[ ] ) { … }
Имена параметров могут быть любые, но общепринятыми являются указанные ниже.
Здесь:
— argc — определяет количество параметров, передаваемых функции;
— argv — является указателем на массив указателей типа char; каждый элемент массива содержит указатель на отдельный параметр командной строки, хранящейся в виде строки.
Указатели массива argv[ ] выполняют следующие функции:
argv[0] — ссылается на полное имя запускаемого на исполнение файла;
argv[1] — ссылается на первый параметр командной строки;
…
argv[argc] — указывает на «нуль символ» (окончание строки) и равен '\n';
Пример:
#include <iostream.h>
void main ( int argc , char *argv[ ] )
{
for( int i=0 ; i<argc ; i++ )
cout<< argv[i]<< “\n” ;
}
Результат выполнения программы:
Если данный файл имеет название main.exe и запускается из строки:
d:\BC\main.exe one two three
то на экране будет выведено:
D:\BC\MAIN.EXE
one
two
three
