- •Е.А. Ганцева
- •Учебное пособие
- •Оглавление
- •Введение
- •Контрольные вопросы
- •2. Операции и основные типы данных
- •2.1. Операции
- •2.2. Указатели и массивы
- •2.3. Символы и строки символов
- •Контрольные вопросы
- •3. Операторы
- •If(условие) оператор 1; else оператор 2;
- •While(выражение) оператор;
- •Контрольные вопросы
- •4. Сложные типы данных
- •4.1. Составные деклараторы
- •4.2. Перечисления
- •4.3. Структуры
- •4.4. Объединения
- •4.5. Объявление tyрedef
- •4.6. Битовые поля
- •Контрольные вопросы
- •5. Функции
- •Контрольные вопросы
- •6. Организация ВводА/выводА
- •6.1. Ввод/вывод потоком
- •6.2. Функции ввода/вывода нижнего уровня
- •6.3. Функции ввода/вывода с консоли и порта
- •Контрольные вопросы
- •7. Директивы препроцессора
- •#Undef идентификатор
- •Контрольные вопросы
- •8. Видимость и время жизни переменных
- •Контрольные вопросы
- •9.1. Описание локальных переменных
- •9.2. Функциональная запись преобразования типов
- •9.3. Перегрузка функций
- •9.4. Перегрузка операторов
- •9.5. Модификаторы const и volatile
- •9.6. Доступ к глобальным переменным
- •Контрольные вопросы
- •10. Объектно–ориентированное программирование
- •10.1. Инкапсуляция
- •10.2. Классы и объекты
- •10.3. Друзья класса
- •10.4. Перегрузка операторов для классов
- •10.5. Конструкторы и деструкторы
- •10.6. Указатель this
- •10.7. Наследование
- •10.8. Доступность членов в иерархии классов
- •10.9. Виртуальные базовые классы
- •10.10. Виртуальные функции
- •Контрольные вопросы
- •11. Потоки ввода/вывода
- •11.1. Понятие потока
- •11.2. Библиотека iostream
- •11.3. Класс streambuf
- •11.4. Класс ios
- •11.5. Потоковый вывод
- •11.6. Встроенные типы
- •11.7. Манипуляторы
- •11.8. Потоковый ввод
- •11.9. Ввод типов, определенных пользователем
- •11.10. Простой ввод/вывод в файл
- •11.11. Обработка строкового потока
- •11.12. Потоки вывода на экран
- •Контрольные вопросы
- •Список использованных источников
Введение
Си является языком функций, типов данных, операторов присваивания и управления последовательностью вычислений. Большинство функций возвращают некоторые значения. Значение, возвращаемое функцией, может использоваться в операторе присваивания, который изменяет значение другой переменной. Си - язык высокого уровня, способствующий хорошему стилю программирования. Си имеет небольшой набор типов данных: целые числа, числа с плавающей запятой, битовые поля и перечислимый тип. Адресная арифметика языка Си является чувствительной к типу данных того объекта, с которым связан используемый указатель. Разрешены также указатели к функциям. Можно расширить список типов данных путем создания структур с иерархической зависимостью входящих в него типов данных. Каждый тип данных может принадлежать либо к основному типу, либо к ранее описанному структурному типу. Объединения напоминают структуры, но определяют различные виды иерархических зависимостей, в которых данные разных типов располагаются в памяти. Функции Си являются рекурсивными по умолчанию. Программа на языке Си разбивается на блоки, в каждом из которых могут быть определены свои собственные локальные переменные. Блоки могут быть вложенными друг в друга. Переменные и функции могут быть глобальными для программы, глобальными для исходного модуля или локальными для блока, в котором они описаны. Локальные переменные могут быть описаны таким образом, что они будут сохранять свои значения при всех обращениях внутри данного блока (статические переменные) или же будут восприниматься как новые объекты при каждом обращении (автоматические переменные). Си позволяет создавать программу в виде нескольких исходных модулей, которые будут транслироваться независимо. В языке Си нет операторов ввод/вывод, весь ввод/вывод выполняется с помощью функций. Вследствие этой особенности языка Си разработана стандартная библиотека функций.
Учебное пособие рассчитано на читателей, имеющих знания по информатике и знакомых с основными принципами составления программ на любом из языков программирования: Паскале, Бэйсике, Фортране.
В конце каждой главы пособия приведены контрольные вопросы, позволяющие лучше понять и осмыслить предлагаемый материал.
1. ПРАВИЛА ОФОРМЛЕНИЯ ПРОГРАММ НА Си/Си++
Программа состоит из модулей-функций, причем одна из функций является главной и обязательно называется main. После имени функции в круглых скобках перечисляются через запятую ее параметры, затем открывается фигурная скобка, записываются операторы тела функции и ставится закрывающая фигурная скобка. Фигурные скобки { и } также служат для указания начала и конца блока операторов (функции, цикла и т. п.).
Каждый оператор заканчивается точкой с запятой, может располагаться на нескольких строках, кроме того, несколько операторов можно записать на одной строке. Символы // означают, что оставшаяся часть строки является комментарием. Текст, начинающийся /* и заканчивающийся */, также является комментарием. Только некоторые компиляторы допускают вложенные комментарии.
Имена переменных, функций, меток, типов данных, классов и макросов называются идентификаторами и могут содержать символы:
строчные и прописные буквы английского алфавита;
цифры от 0 до 9 (имя не может начинаться с цифры);
символ подчеркивания.
Обычно длина идентификатора ограничивается 31 символом, прописные и строчные буквы различаются. Идентификаторы не должны совпадать с ключевыми словами.
#include <iostream.h> // этот файл нужен для ввода/вывода
void main(void) // главная функция main(void) без параметров
{ // начало функции
char *name; // так описывается строка
cout<<“Введите свое имя”<<endl; // на экране появляется просьба ввести имя
cin>>name>>endl; // с клавиатуры вводится имя
cout<<“Привет, “<<name<<“ это первая программа”; // вывод на экран
} // конец функции
В программе можно использовать константы:
десятичные (например: 1, 10L, -6, -2.3, 3.45е6, 6.789е-2);
восьмеричные (например: 012, 0204, 076663L);
шестнадцатеричные (например: 0xa, 0xA, 0xdeL, 0x84, 0x7dB3);
символы (например: ‘g’, ‘?’, ‘\b’, ‘\\’, ‘0x1B’, ‘\’’);
строчные литералы (“long string”, “Y\\N”, “ \”Yes, I do, \” she said”).