2. Происхождение языка Си++
Язык Си++ был разработан в начале 1980-х гг. Бьерном Страуструпом из компании AT&T Bell Laboratories. Си++ основан на языке Си. Два символа "++" в названии – это игра слов, символами "++" в языке Си обозначается операция инкремента (увеличение значения переменной на 1). Т.о., Си++ был задуман как язык Си с расширенными возможностями. Большая часть языка Си вошла в Си++ как подмножество, поэтому многие программы на Си можно скомпилировать (т.е. превратить в набор низкоуровневых команд, которые компьютер может непосредственно выполнять) с помощью компилятора Си++.
При классификации языков программирования язык Си вызывает некоторые трудности. По сравнению с ассемблером, это высокоуровневый язык. Однако Си содержит много низкоуровневых средств для непосредственных операций с памятью компьютера. Поэтому язык Си отлично подходит для написания эффективных "системных" программ. Но программы других типов на Си могут оказаться довольно сложными для понимания, и есть ряд ошибок, которым программы на Си особенно подвержены. Дополнительные объектно-ориентированные возможности Си++ были добавлены в Си, в частности, для устранения этих недостатков.
3. Стандарт ANSI Си++
Национальный Институт Стандартизации США (American National Standards Institution, ANSI) разработал "официальные" стандарты для многих языков программирования, в том числе для Си и Си++. Эти стандарты стали общепринятыми и они имеют очень большое значение. Программу, целиком написанную на ANSI Си++, гарантированно можно запустить на любом компьютере, для которого имеется компилятор ANSI Си++. Другими словами, стандарт гарантирует переносимость программ на языке ANSI Си++.
В действительности большинство версий Си++ представляют собой стандартный ANSI Си++, дополненный некоторыми машинно-зависимыми возможностями. Эти специфические средства предназначены для облегчения взаимодействия программ с конкретными операционными системами. Вообще, в программах, которые должны быть переносимыми, подобными специфическими возможностями следует пользоваться как можно реже. В таких случаях части программы на Си++, в которых используются не-ANSI компоненты языка, целесообразно особым образом помечать, так, чтобы их легко можно было отделить от основной части программы и модифицировать для других компьютеров и операционных систем.
4. Среда разработки Microsoft Developer Studio Visual С++
Известно, что лучший способ изучения языка программирования заключается в том, чтобы писать на нем программы и проверять, как они работают на компьютере. Для этого необходимы несколько программ:
Текстовый редактор, с помощью которого можно набирать и редактировать исходный текст программ на Си++.
Компилятор. Эта программа выполняет преобразование исходного текста в машинные команды, которые компьютер может непосредственно выполнять.
Компоновщик, который собирает отдельные скомпилированные части программы в единое целое и, при необходимости, добавляет к ним компоненты из готовых библиотек. В результате компоновки получается готовая к запуску программа – исполняемый файл.
Отладчик, с помощью которого легче искать ошибки в программе. Ошибки могут обнаружиться как при компиляции, так и во время работы программы.
В данном курсе изучения Си++ практические упражнения предполагается выполнять в среде разработки программ Microsoft Developer Studio Visual C++ для IBM-совместимых ПК под управлением Windows 95/NT. В этом пакете интегрированы редактор, компилятор, компоновщик и отладчик. Все вместе они образуют единую удобную среду программирования. Краткое описание работы со средой Visual C++ приведено в Приложении.
5. Пример программы на Си++
Ниже приведен исходный текст простой программы на Си++.
// В языке Си++ с двойной косой черты начинаются комментарии
// (например, как эта строка). Компилятор игнорирует комментарии,
// начиная от первой черты и до конца строки.
/* Второй способ записи комментариев – после косой черты со звездочкой.
После текста комментария надо поставить звездочку, а затем – косую
черту. Комментарии, записанные подобным образом, могут занимать
больше одной строки. */
/* В программе ОБЯЗАТЕЛЬНО должно быть достаточное количество
комментариев! */
/* Эта программа запрашивает у пользователя текущий год, возраст
пользователя и еще один год. Затем программа вычисляет возраст
пользователя, который будет у него во втором введенном году.*/
#include
int main()
{
int year_now, age_now, another_year, another_age;
cout << "Введите текущий год и нажмите ENTER.\n";
cin >> year_now;
cout << "Введите свой возраст (в годах).\n";
cin >> age_now;
cout << "Введите год, для которого вы хотите узнать свой возраст.\n";
cin >> another_year;
another_age = another_year - (year_now - age_now);
if (another_age >= 0)
{
cout << "В " << another_year << " году вам будет ";
cout << another_age << "\n";
}
else
{
cout << "В " << another_year << " вы еще не родились!\n";
}
return 0;
}
Программа 5.1.
Некоторые свойства программы 5.1 являются обычными для большинства программ на Си++. Программа начинается (после комментариев) с оператора
#include
Этот оператор называется "директивой include". До компилятора исходный текст обрабатывается препроцессором – специальной программой, которая модифицирует текст программы по специальным командам – директивам. Директивы препроцессора начинаются с символа "#". Директива include предназначена для включения в исходный текст содержимого другого файла. Например, в программу 5.1 включается файл iostream.h, содержащий описания функций стандартной библиотеки ввода/вывода для работы с клавиатурой и экраном. (Стандартные библиотеки языка Си++ будут рассматриваться позже).
Алгоритм, записанный в программе 5.1, очень простой. Поэтому структуру программы легко представить в виде списка последовательно выполняемых команд (операторов). Схематично программу, содержащуюся после директивы #include, можно представить в виде:
int main()
{
Первый оператор;
...
...
Последний оператор;
return 0;
}
Подобная структура является общей для всех программ на Си++. Каждый оператор в теле программы завершается точкой с запятой. В хорошо разработанной большой программе большинство операторов являются обращениями (вызовами) к подпрограммам, которые записываются после функции main() или в отдельных файлах. Каждая подпрограмма (функция) имеет структуру, подобную функции main(). Но функция main() в каждой программе только одна. Именно с нее начинается выполнение программы. (Подробнее функции будут рассматриваться далее.)
В конце функции main() записана строка:
return 0;
Эта строка значит "вернуть операционной системе в качестве сигнала об успешном завершении программы значение 0". Оператор возврата return применяется не только при завершении программы, но и при завершении отдельных подпрограмм. В любом случае этот оператор возвращает определенное значение на более высокий уровень управления.
В программе-примере используются четыре переменные:
year_now, age_now, another_year и another_age
Переменные в программировании отличаются от математических переменных. Они используются как символические имена "фрагментов оперативной памяти компьютера". При выполнении программы в различные моменты времени переменные могут хранить различные значения. В программе 5.1 первое упоминание четырех переменных содержится в строке с оператором описания переменных:
int year_now, age_now, another_year, another_age;
Этот оператор уведомляет компилятор, что для хранения четырех переменных типа "целое число" (integer – int) требуется выделить необходимое количество памяти. Эта область памяти будет зарезервирована в течение выполнения оставшейся части программы. Переменные всегда должны быть описаны до первого использования. В программировании хорошим стилем считается описание всех переменных, используемых в подпрограмме, в начале этой подпрограммы. В Си++ есть несколько различных типов переменных, и они будут обсуждаться немного позже.
|