Конкретного компьютера

Двоичные команды процессора (полностью)

"Императивные" или "процедурные" языки позволяют программисту описать, в

какой последовательности компьютер будет выполнять отдельные шаги алгоритма и,

таким образом, решать задачу и выдавать на экран результат. "Декларативные" языки

предназначены больше для описания самой задачи и желаемого результата, а не дей-

ствий компьютера.

"Объектно-ориентированные языки" рассчитаны на применение особого под-

хода к описанию задач, согласно которому в задаче выделяются некоторые "объекты"

с характерным для них "поведением" и взаимодействующие между собой. Один из

9

первых объектно-ориентированных языков – Смоллток, он предназначен исключи-

тельно для объектно-ориентированного программирования. В отличие от него, язык

Си++ обладает как объектно-ориентированными возможностями, так и средствами

традиционного процедурного программирования.

Радикальные приверженцы различных языков и стилей программирования

иногда делают экстравагантные заявления, выделяющие семейство языков или один

язык как исключительный и идеально подходящий для любых задач. Например, до-

вольно распространено мнение, что объектно-ориентированный подход наиболее

близок к способу решения задач человеком. По этому поводу вы со временем сможе-

те составить собственное мнение, т.к. абсолютно истинного, очевидно, нет.

2. Происхождение языка Си++

Язык Си++ был разработан в начале 1980-х гг. Бьерном Страуструпом из ком-

пании AT&T Bell Laboratories. Си++ основан на языке Си. Два символа "++" в назва-

нии – это игра слов, символами "++" в языке Си обозначается операция инкремента

(увеличение значения переменной на 1). Т.о., Си++ был задуман как язык Си с рас-

ширенными возможностями. Большая часть языка Си вошла в Си++ как подмножест-

во, поэтому многие программы на Си можно скомпилировать (т.е. превратить в набор

низкоуровневых команд, которые компьютер может непосредственно выполнять) с

помощью компилятора Си++.

При классификации языков программирования язык Си вызывает некоторые

трудности. По сравнению с ассемблером, это высокоуровневый язык. Однако Си со-

держит много низкоуровневых средств для непосредственных операций с памятью

компьютера. Поэтому язык Си отлично подходит для написания эффективных "сис-

темных" программ. Но программы других типов на Си могут оказаться довольно

сложными для понимания, и есть ряд ошибок, которым программы на Си особенно

подвержены. Дополнительные объектно-ориентированные возможности Си++ были

добавлены в Си, в частности, для устранения этих недостатков.

3. Стандарт ANSI Си++

Национальный Институт Стандартизации США (American National Standards

Institution, ANSI) разработал "официальные" стандарты для многих языков програм-

мирования, в том числе для Си и Си++. Эти стандарты стали общепринятыми и они

имеют очень большое значение. Программу, целиком написанную на ANSI Си++, га-

рантированно можно запустить на любом компьютере, для которого имеется компи-

лятор ANSI Си++. Другими словами, стандарт гарантирует переносимость программ

на языке ANSI Си++.

В действительности большинство версий Си++ представляют собой стандарт-

ный ANSI Си++, дополненный некоторыми машинно-зависимыми возможностями.

Эти специфические средства предназначены для облегчения взаимодействия про-

грамм с конкретными операционными системами. Вообще, в программах, которые

должны быть переносимыми, подобными специфическими возможностями следует

пользоваться как можно реже. В таких случаях части программы на Си++, в которых

используются не-ANSI компоненты языка, целесообразно особым образом помечать,

так, чтобы их легко можно было отделить от основной части программы и модифи-

цировать для других компьютеров и операционных систем.

10

4. Среда разработки Microsoft Developer Studio Visual С++

Известно, что лучший способ изучения языка программирования заключается в

том, чтобы писать на нем программы и проверять, как они работают на компьютере.

Для этого необходимы несколько программ:

• Текстовый редактор, с помощью которого можно набирать и редактировать

исходный текст программ на Си++.

• Компилятор. Эта программа выполняет преобразование исходного текста в

машинные команды, которые компьютер может непосредственно выпол-

нять.

• Компоновщик, который собирает отдельные скомпилированные части про-

граммы в единое целое и, при необходимости, добавляет к ним компоненты

из готовых библиотек. В результате компоновки получается готовая к за-

пуску программа – исполняемый файл.

• Отладчик, с помощью которого легче искать ошибки в программе. Ошибки

могут обнаружиться как при компиляции, так и во время работы програм-

мы.

В данном курсе изучения Си++ практические упражнения предполагается вы-

полнять в среде разработки программ Microsoft Developer Studio Visual C++ для

IBM-совместимых ПК под управлением Windows 95/NT. В этом пакете интегрирова-

ны редактор, компилятор, компоновщик и отладчик. Все вместе они образуют единую

удобную среду программирования. Краткое описание работы со средой Visual C++

приведено в Приложении.

5. Пример программы на Си++

Ниже приведен исходный текст простой программы на Си++.

// В языке Си++ с двойной косой черты начинаются комментарии

// (например, как эта строка). Компилятор игнорирует комментарии,

// начиная от первой черты и до конца строки.

/* Второй способ записи комментариев – после косой черты со звездочкой.

После текста комментария надо поставить звездочку, а затем – косую

черту. Комментарии, записанные подобным образом, могут занимать

больше одной строки. */

/* В программе ОБЯЗАТЕЛЬНО должно быть достаточное количество

комментариев! */

/* Эта программа запрашивает у пользователя текущий год, возраст

пользователя и еще один год. Затем программа вычисляет возраст

пользователя, который будет у него во втором введенном году.*/

#include <iostream.h>

int main()

{

int year_now, age_now, another_year, another_age;

cout << "Введите текущий год и нажмите ENTER.\n";

cin >> year_now;

cout << "Введите свой возраст (в годах).\n";

cin >> age_now;

11

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 <iostream.h>

Этот оператор называется "директивой include". До компилятора исходный

текст обрабатывается препроцессором – специальной программой, которая модифи-

цирует текст программы по специальным командам – директивам. Директивы пре-

процессора начинаются с символа "#". Директива include предназначена для вклю-

чения в исходный текст содержимого другого файла. Например, в программу 5.1

включается файл iostream.h, содержащий описания функций стандартной библиоте-

ки ввода/вывода для работы с клавиатурой и экраном. (Стандартные библиотеки язы-

ка Си++ будут рассматриваться позже).

Алгоритм, записанный в программе 5.1, очень простой. Поэтому структуру

программы легко представить в виде списка последовательно выполняемых команд

(операторов). Схематично программу, содержащуюся после директивы #include,

можно представить в виде:

int main()

{

Первый оператор;

...

...

Последний оператор;

return 0;

}

Подобная структура является общей для всех программ на Си++. Каждый опе-

ратор в теле программы завершается точкой с запятой. В хорошо разработанной

большой программе большинство операторов являются обращениями (вызовами) к

подпрограммам, которые записываются после функции main() или в отдельных

файлах. Каждая подпрограмма (функция) имеет структуру, подобную функции

main(). Но функция main() в каждой программе только одна. Именно с нее начина-

ется выполнение программы. (Подробнее функции будут рассматриваться далее.)

В конце функции main() записана строка:

12

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) требуется выделить необходимое количество памя-

ти. Эта область памяти будет зарезервирована в течение выполнения оставшейся час-

ти программы. Переменные всегда должны быть описаны до первого использования.

В программировании хорошим стилем считается описание всех переменных, исполь-

зуемых в подпрограмме, в начале этой подпрограммы. В Си++ есть несколько раз-

личных типов переменных, и они будут обсуждаться немного позже.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: