- •Экзамен 374 Предварительные рассуждения Вступительное слово
- •Исторические факты
- •Начнем!
- •Проба пера
- •Открытие сохраненного проекта
- •Вывод данных
- •Типы данных
- •Хороший стиль программирования
- •Переменные и константы
- •Практический пример
- •Ввод данных
- •Например:
- •Пример:
- •Арифметические операции с числами
- •Литералы
- •Некоторые примеры
- •Домашнее задание
- •Напишите программу, которая вводит число из трех цифр, разделяет число на отдельные цифры и печатает их отдельно друг от друга с тремя пробелами между ними. Преобразование типов
- •Перечисляемые типы
- •Типичная ошибка
- •Хороший стиль программирования
- •Типичная ошибка
- •Выражения
- •Оператор if
- •Структура программы
- •Логические операции
- •Структура множественного выбора switch
- •Практический пример
- •Цикл for
- •Практический пример
- •Цикл do-while
- •Домашнее задание
- •Вызов функции
- •Прототипы функций
- •Разбор программы
- •Область видимости
- •Аргументы по умолчанию
- •Встраивание
- •Перегрузка функций
- •Учебный пример перегруженных функций. Иллюстрация перегрузки
- •Результат работы программы
- •Практические примеры
- •Домашнее задание
- •Примеры домашней работы урока 1 Пример №1
- •Как работает программа
- •Пример №2
- •Как работает программа
- •Примеры домашних работ на создание функций Пример №1
- •Как работает программа
- •Пример №2
- •Как работает программа
- •Массивы
- •Объявление массивов
- •Примеры использования массивов
- •Программа 1
- •Программа 2
- •Обратите внимание!
- •Типичная ошибка программирования
- •Типичная ошибка программирования
- •Программа 3
- •Типичная ошибка программирования
- •Замечание по технике программирования
- •Программа 4
- •Программа 5
- •Программа нахождения минимального и максимального элементов массива
- •Сортировка массивов
- •Домашнее задание
- •Что такое указатели?
- •За кулисами...
- •Как работать с указателями?..
- •Зачем нужны указатели?
- •Указатели и Массивы.
- •Примеры задач
- •Пример 1
- •Пример 2
- •Пример 3
- •Указатели - аргументы функций.
- •Ссылочные параметры
- •Примеры решения задач
- •Домашнее задание
- •Операторы свободной памяти new и delete
- •Функции работы со строками из библиотеки обработки строк
- •Пример 1.
- •Пример2
- •Пример 3
- •Пример задачи на новый материал
- •Домашнее задание
- •Двухмерные массивы, как частный случай многомерных массивов
- •Программа.
- •Результаты работы программы.
- •Многомерные динамические массивы
- •Пример на многомерные динамические массивы
- •Домашнее задание
- •Рекурсия
- •Рекурсии или итерации
- •Указатели на функции
- •Пример №1
- •Результат выполнения программы:
- •Пример №2
- •Результат выполнения программы
- •Пример №3
- •Результаты выполнения программы
- •Определения структур
- •Пример #1 на использование структур
- •Пример #2 на использование структур
- •Оператор указателя на структуру
- •Домашнее задание
- •Тест по c Группа ___________________ф. И. О. ______________________
- •Объектно-ориентированное программирование.
- •Наследование (Inheritance).
- •Инкапсуляция (Encapsulation).
- •Определение класса
- •Конструкторы и деструкторы Инициализация объектов класса: конструкторы
- •Основное назначение конструкторов - инициализация объектов.
- •Использование конструкторов с аргументами по умолчанию
- •Если параметры не передаются конструктору, в определении объекта не нужно включать пустые круглые скобки.
- •Использование деструкторов
- •Когда вызываются конструкторы и деструкторы.
- •Домашнее задание
- •Конструктор копирования
- •Синтаксис конструктора копирования
- •Памятка
- •Пример использования конструктора копирования.
- •Перегруженные конструкторы
- •Экскурс в историю
- •Послесловие к примеру
- •Маленькое замечание
- •Домашнее задание
- •Создание класса ''строка''
- •Перегрузка операций.
- •Общие принципы перегрузки операторов.
- •Преобразования, определяемые классом
- •Пример строкового класса с перегруженными операторами
- •Домашнее задание
- •Дружественные функции (Friend Functions)
- •Пример строкового класса с перегруженными операторами и дружественными функциями
- •Перегрузка операторов new и delete
- •Перегрузка оператора индексирования
- •Класс вектор. Часть1.
- •Класс вектор. Часть 2.
- •Класс вектор. Часть 3.
- •Домашнее задание
- •Наследование (Inheritance). Часть 1.
- •Наследование (Inheritance). Часть 2.
- •Множественное наследование (multiple inheritance)
- •Пример множественного наследования
- •Домашнее задание
- •Статические члены данных
- •Раннее и позднее связывание
- •Виртуальные функции
- •Пример.
- •Абстрактные классы
- •Виртуальный базовый класс
- •Практический пример
- •Домашнее задание
- •Потоки ввода-вывода.
- •Iostream.H: stream - поток, "I" - сокр. Input - ввод, "o" - сокр. Output - вывод.
- •Предопределенные потоки.
- •Операции помещения в поток и извлечения из потока.
- •Файловый ввод-вывод с применением потоков.
- •Конструкторы файловых потоков.
- •Функции для открытия и закрытия файлов.
- •Функции для обмена с потоками.
- •Часто применяемые функции потока.
- •Ввод/вывод массива в/из файл(-а).
- •Практический пример: перекодировка файла.
- •Домашнее задание
- •Немного о файлах...
- •И снова файлы...
- •Пример "Телефонная книга"
- •Файл abonent.H
- •Форматирование данных при обменах с потоками.
- •Состояние потока.
- •Использование аргументов командной строки.
- •Ввод/вывод в с.
- •Домашнее задание
- •Определение шаблонов функций
- •Переопределение шаблонов функций
- •Шаблоны классов
- •Шаблонный класс вектор
- •Шаблонный класс вектор
- •Шаблонный класс вектор
- •Введение
- •Обработка исключительных ситуаций
- •Практический пример
- •Программа
- •Домашнее задание
- •Экзамен
Ввод/вывод в с.
Иногда в программе сочетают код на С++ и С. Ввод данных с клавиатуры и вывод на экран дисплея в языке С осуществляют стандартные функции. Наиболее универсальными являются printf и scanf. Они позволяют вводить данные любых типов. Для того, чтобы функция могла правильно обработать вводимые данные, используются форматы. Формат содержится в строчной константе и всегда начинается с символа '%'. Каждой вводимой и выводимой переменной в строчной константе должен соответствовать формат. Часто используются следующие форматы:
%d |
- для ввода и вывода чисел типа int; |
%f |
- для ввода и вывода чисел типа float без показателя степени (с фиксированной точкой); |
%e |
- для ввода и вывода чисел типа float с показателем степени; |
%c |
- для ввода и вывода символов; |
%s |
- для ввода и вывода строк. |
В строчной константе, используемой для вывода информации, кроме форматов могут содержаться любые строки и специальные символы (ESC-символы).
При вводе чисел с клавиатуры по формату e или f при необходимости можно опускать показатель степени и десятичную точку. Числа друг от друга отделяются пробелами или переводом строки.
Итак, для форматированного вывода в С используется функция printf, которая имеет формат:
printf(строчная константа, список),
где строчная константа содержит форматы и сообщения выводимые на экран; список - список переменных (выражений), выводимых на экран. Если выводится только сообщение - список переменных может отсутствовать. Переменные в списке разделяются запятыми. Первой переменной списка должен соответствовать первый формат, второй переменной - второй и т.д. Количество переменных должно соответствовать числу форматов. Несоответствие приводит к непредсказуемым ошибкам.
Например,
printf ("%d + %d = %d", 2, 2, 4); /* На экране
появится: 2 + 2 = 4 */
Для форматированного ввода в С используется функция scanf, которая имеет формат:
scanf(строчная константа, список),
где строчная константа содержит форматы, список - список имен вводимых переменных. Перед каждым именем ставится символ '&' (исключение составляют строковые переменные). Отсутствие & перед именем приводит к непредсказуемым последствиям!
Например,
scanf("%d &d", &x, &y); /* Значение целых
переменных x и y будет введено с клавиатуры. */
Функция scanf останавливает выполнение программы до тех пор, пока не будут введены все данные, предписанные форматами.
Библиотека ввода-вывода языка С также содержит средства для работы с файлами.
Для открытия файла используется функция fopen, имеющая следующий формат:
поток = fopen(имя файла, тип и способ);
Для работы с конкретным файлом в операторах ввода-вывода используется специальная переменная - указатель типа FILE, называемая потоком (еще дискриптором, указателем на файл или протсо файлом). Итак,поток - имя переменной, которая объявлена как FILE *поток; имя файла - текстовая переменная или константа. Если поток имеет значение NULL, то при открытии файла произошла ошибка. Тип и способ - текстовая перемнная или константа, состоящая из нескольких символов. Один символ - тип файла; для текстовых файлов - t, для бинарных - b. Другие - способ доступа: r - только по чтению, w - только для записи, rw - чтение и запись, a - добавление.
Например,
FILE *in; /* объявление потока */
...
in = fopen("temp.tmp", rb); /* открыть файл для чтения как бинарный*/
if (in == NULL)
printf ("Ошибка открытия файла!");
...
Для чтения из файла используется функция fscanf, использующая следующий формат:
fscanf(поток, формат, список переменных);
Для записи в файл используется функция fprintf, имеющая следующий формат:
fprintf(поток, формат, список переменных);
где поток - переменная, описанная выше, формат и список переменных используются так же, как в функциях scanf и printf.
Например,
fscanf(in, "%d, %f", &a, &b[i]); /* чтение из файла
целой переменной и элемента вещественного массива */
fprintf(out, "My name is %s", name); /* Вывод в файл
строковой переменной*/
Закрытие файла производится функцией fclose (поток);. Например,
fclose(in);
После закрытия поток можно повторно открыть на другой (или тот же) файл, с другими (или теми же) параметрами.
Перед использованием рассмотренных в данном разделе функций в программу необходимо включить файл stdio.h