Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
new_Лекции_1-7.docx
Скачиваний:
117
Добавлен:
05.03.2016
Размер:
1.49 Mб
Скачать

Практические задания

  1. Взгляните на следующую программу и постарайтесь понять, что она делает , не запуская ее #include <iostream> using namespace std; void main() { int x=5; int y=7; cout << “\n”; cout << x+y << “ “ << x*y; cout << “\n”; } Наберите эту программу, скомпилируйте, скомпонуйте, и выполните ее.

  2. Просмотрите папку в которой находится эта программа. Удалите ненужные служебные файлы, создаваемые компилятором.

  3. Введите и скомпилируйте следующую программу. Какие ошибки Вы получите? include <iostream> using namespase std; void main() { cout << “Hello word\n”; }

  4. Найдите ошибку и исправьте ее. Перекомпилируйте, скомпонуйте и запустите программу на выполнение. Добейтесь того, чтобы программа заработала.

Контрольные вопросы

  1. Чем отличается текстовый редактор от текстового процессора?

  2. Можно ли готовить текст программы на C++ с помощью MS Word.

  3. Что такое этап компиляции?

  4. Чем отличается компилятор от интерпретатора?

  5. Что делает компоновщик ?

  6. Каковы этапы цикла разработки?

  7. Что является причиной ошибок в программе?

  8. Можно ли игнорировать предупреждающие сообщения (warning messages) компилятора?

  9. Что такое интегрированная среда разработки программ?

  10. Обязательно ли готовить текст программы с помощью встроенного в компилятор редактора текстов?

  11. Как выполнить настройку встроенного в компилятор редактора?

  12. Как создать/открыть текст программы?

  13. Как установить/изменить тип создаваемого приложения и платформу выполнения?

  14. Как скомпилировать и выполнить программу?

  15. Как получить справку об ошибке ?

Тема 2: Составные части программы на С++

Лекция 2.1. Структура простой программы План лекции

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

  2. Элементы С++ программы

  3. Пример простой программы

  4. Комментарии

  5. Препроцессор

  6. Заголовочные файлы нового типа

  7. Пространство имен

  8. Консольный вывод

  9. Неименованные константы

  10. Переменные

  11. Выражения

  12. Консольный ввод

  13. Роль функции main()

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

Можно выделить следующие стандартные части С++ программы :

  • блок начальных комментариев;

  • системные заголовочные файлы;

  • личные заголовочные файлы;

  • глобальные объявления;

  • главная функция;

  • личные функции.

  1. Элементы С++ программы

В С++ программе необходимо различать также ее отдельные элементы, такие как : директивы препроцессора, ключевые слова, имена, переменные, константы, объекты, знаки операций, выражения, операторы, блоки операторов, комментарии, лексемы и т.д.

  1. Пример простой программы

Простой пример позволит лучше понять структуру С++ программы:

// Пример 2.1.1

  1. Комментарии

Комментарии в программе – это поясняющий текст, который игнорируется компилятором. В С++ имеется два типа комментариев : однострочный (// …) и многострочный (/* ……*/). Блок начальных комментариев – правило хорошего тона. Во многих фирмах его написание входит в стандарт оформления программы.

  1. Препроцессор

Препроцессор всегда работает перед выполнением компиляции. Директивы препроцессора начинаются с символа #. Препроцессор обрабатывает исходный текст С++ программы и создает новый временный файл. Именно этот файл и обрабатывает компилятор. Директива #include включает (добавляет) исходный текст заголовочного файла внутрь программы. В заголовочном файле <iostream> находится то, что необходимо для выполнения операций вывода на экран и ввода с клавиатуры (объявление и реализация объектов cin и cout).

  1. Заголовочные файлы нового типа

В современные версиях С++ реализованы заголовки нового типа. Вместо имен заголовочных файлов указываются стандартные идентификаторы, по которым компилятор находит требуемые файлы. Новые заголовки С++ являются абстракциями, гарантирующими объявление соответствующих прототипов и определений библиотеки С++. Поскольку новые заголовки не являются именами файлов, то для них не нужно указывать расширение .h, а только имя заголовка в угловых скобках. Например : <iostream> , <string>. Заголовки нового стиля по-прежнему включаются в программу директивой препроцессора #include. Заголовки нового стиля появились в С++ недавно. Поэтому в прежних программах их нет. Старые компиляторы С++ поддерживают только заголовки старого стиля. Новые – и те и другие. В новых разработках рекомендуется использовать заголовки нового стиля.

  1. Пространство имен

При включении в программу заголовка нового стиля его содержимое оказывается в пространстве имен с именем std. Пространство имен (namespace) – это просто некая объявляемая область, необходимая для того, чтобы избежать конфликтов имен. Традиционно имена системных библиотечных функций располагались в глобальном (общем) пространстве имен. Для того, чтобы пространство имен std стало видимым в вашей программе, нужно использовать следующую инструкцию: using namespace std;

  1. Консольный вывод

Системный объект cout используется для вывода данных на экран, посредствам его операции << , которая разделяет имена переменных и констант, значения неименованных констант и выражения. Символы '\n' и ‘\t’ внутри текстовых констант используются для вставки символов новой строки и табулятора в поток вывода. Новая строка начинается также и с помощью манипулятора вывода endl.

  1. Неименованные константы

В C++ различают четыре типа неименованных констант : целые, с плавающей точкой, символьные и строковые литералы:

  • целая константа - это десятичное (цифры от 0 до 9, причем первая не 0), восьмеричное (начинается с 0, цифры от 0 до 7) или шестнадцатеричное число (начинается с 0x или 0X, цифры от 0 до 9 и большие либо малые буквы от ‘a’ до ‘f’);

  • целым константам тип int или long присваивается в зависимости от значения величины. Запись большой L или малой l определяет длинную константу;

  • вещественные константы можно записывать в виде чисел с десятичной точкой или в экспоненциальной форме. Все вещественные константы имеют тип double;

  • символьное константа – символ(‘a’, ’Д’) или управляющая последовательность (‘\n’, ‘\t’, ‘\x009’) , заключенные в одинарные кавычки;

  • символьный литерал (строка, текст) – последовательность символов, заключенная в двойные кавычки. В конце литерала компилятор добавляет нулевой символ ‘\0’;

  • строки 2-х байтовых символов Unicode – перед строкой ставится L.

// Пример 2.1.2 // Неименованные константы С++

#include <iostream>

using namespace std;

void main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

cout << "Десятичная константа : " << 17 << endl;

cout << "8-ричная константа начинается с 0(цифры 0-7) : " << 017 << endl;

cout << "16-ричная константа начинается с 0x :" << 0x17 << endl;

cout << "16-ричная константа->цифры 0-9 и буквы A-F:"<< 0X17a <<endl;

cout << "Целая длинная константа завершается L : " << 12345L << endl;

cout << "Обычная вещественная константа: " << 3.14 << endl;

cout << "Научная вещественная константа: " << -1.6e-19 << endl;

cout << "Символьная константа (один символ): " << 'A' << endl;

cout << "Символьная константа (управляющий символ): " << '\t' << endl;

cout << "Символьная константа (16-ричный номер): " << '\xA7' << endl;

cout << "Строка символов, текстовая константа (литерал):" << "Hello" << endl;

cin.get();

}

  1. Переменные

В С++ существуют переменные и константы (const) различных типов : целые (int), вещественные(double), символьные(char) и т.д. При объявлении переменной (константы) ей обязательно нужно дать имя и указать ее тип. Во время выполнения программы значения переменных находятся в оперативной памяти компьютера (ОЗУ). Если переменной не было присвоено значение, то ее значение не определено, т.е. переменная содержит “мусор” – старое содержимое ОЗУ. Рекомендуют при объявлении переменной присваивать ей начальное значение, т.е. инициализировать. Константы инициализировать обязательно. Значение констант нельзя изменить в ходе выполнения программы.

// Пример 2.1.3

// Мусор и инициализация

#include <iostream>

using namespace std;

void main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

//1. Объявление без инициализации - значение -> мусор!!!

int age; // объявление переменной целого типа с именем age

double weight; // объявление переменной вещ. типа с именем weight

char name[10]; // объявление переменной типа символьная строка

cout << "Имя="<<name<<'\t'<<"Возраст="<<age<<'\t'<<"Вес="<<weight<<endl;

age=age+1;

cout << "Имя="<<name<<'\t'<<"Возраст="<<age<<'\t'<<"Вес="<<weight<<endl;

cin.get();

//2. Объявление с инициализацией

int Age=17; // целое с начальным значение 17

double Weight=90.5; // вещественное с начальным значение 90.5

char Name[10]="Vlad"; // символьная строка с начальным значение "Vlad"

cout << "Имя="<<Name<<'\t'<<"Возраст="<<Age<<'\t'<<"Вес="<<Weight<<endl;

cin.get();

//3. Константы обязательно инициализируются

const double PI=3.14; // объявление константы вещ. типа с именем PI

cout << "PI="<<PI<<endl;

//PI=3.14151; // значение константы изменить нельзя

cin.get();

}

  1. Выражения

Простые математические выражения С++ составляются из знаков арифметических операций (+, -, *, / и т.д. ), имен констант, переменных, неименованных констант, круглых скобок и оператора присваивания (=). При этом важно учитывать типы переменных и констант, правильность записи неименованных констант, порядок вычисления и множество других правил программирования выражений.

// Пример 2.1.4

// Использование cout и неименованных констант С++ в выражениях

#include <iostream>

using namespace std;

void main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

cout << "Большое целое число:\t" << 70000 << '\n';

cout << "Сумма 8 и 5:\t" << (8+5) << endl;

cout << "Целое деление 5 на 8 :\t\t" << (5/8) << endl;

cout << "Вещественное деление 5 на 8:\t\t" << (5./8) << endl;

cout << "Очень большое целое(переполнение):\t" <<70000*70000<< endl;

// 70000. – константа типа double

cout << "Очень большое число:\t" << 70000.*70000 << endl;

// (double)70000 – преобразование к типу double

cout << "Очень большое число:\t" << (double)70000*70000 << endl;

cin.get();

}

  1. Консольный ввод

Системный объект cin используется для ввода данных c клавиатуры в переменные программы, находящиеся в ОЗУ. Его операция >>, разделяющая имена переменных, позволяет ввести как одно, так и несколько значений сразу (в этом случае данные при вводе разделяются пробелом или <ENTER>). При вводе чисел возможны ошибки пользователя, приводящие к ошибка преобразования объекта cin (conversion error) и числовое значение переменной формируется неправильно. Допустим ввод чисел в экспоненциальной форме. Функции ввода-вывода printf() и scanf() языка С из библиотеки stdio.h можно не использовать.

// Пример 2.1.5

// Использование cout и cin

#include <iostream>

using namespace std;

#include <stdio.h> // библ. стандартного ввода-вывода С

void main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

//1. Объявление с инициализацией

int Age=17;

double Weight=90.5;

char Name[10]="Vlad"; // символьная строка

cout << "Имя="<<Name<<"\tВозраст="<<Age<<"\tВес="<<Weight<<endl;

cin.get();

//2. Использование объекта cin - раздельный ввод

cout << "Введите имя : ";

cin >> Name;

cout << "Введите возраст : ";

cin >> Age;

cout << "Введите вес : ";

cin >> Weight;

cout << "Имя="<<Name<<"\tВозраст="<<Age<<"\tВес="<<Weight<<endl;

cin.get();

//3. Множественный ввод в объекте cin

cout << "Введите через пробел или <Enter> имя, возраст, вес : ";

cin >> Name >> Age >> Weight;

cout << "Имя="<<Name<<"\tВозраст="<<Age<<"\tВес="<<Weight<<endl;

cin.get();

//4. Язык C - функции из stdio.h

int a=0;

double b=0;

printf("a=%d\tb=%lf\n",a,b);//cout << "a=" << a << '\t' << "b=" << b << '\n';

printf("Введите 2 числа через пробел\n");//cout << "Введите 2 числа … ";

scanf("%d%lf",&a,&b); //cin >> a >> b;

printf("a=%d\tb=%lf\n",a,b);//cout << "a=" << a << '\t' << "b=" << b << '\n';

cin.get();cin.get();

}

  1. Роль функции main()

Функция - блок операторов, выполняющий определенное действие в программе. Функция main() обязательно имеется в каждой С++-программе. В отличии от других функций, main()-функция вызывается и начинает работать автоматически при запуске приложения. Функции могут принимать параметры и возвращать значение вычисленного результата, посредствам оператора return. Тип возвращаемого результата void означает, что функция main() результат не возвращает и поэтому она не содержит оператора return. Пустые круглые скобки после ее имени означают, что она не принимает параметров. Некоторые компи­ляторы требуют, чтобы функция main() обязательно имела тип возврата int (целое число) и возвращала целое число. В этом случае она должна заканчиваться оператором return n; (где n – код возврата функции, целое число: 0, 1, 2 …). Операторы (тело, блок) функ­ции располагаются между открытой и закрытой фигурными скобками { … }.

// Пример 2.1.6

// Вычисление массы

#include <iostream>

using namespace std;

int main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

// объявление переменных

double plotnost=0.0, obem=0.0, massa=0.0;

// множественный ввод

cout << "Введите плотность и обьем через пробел и нажмите ENTER >";

cin >> plotnost >> obem;

// вычисления

massa=plotnost*obem;

// вывод

cout << "Масса равна " << massa << " кг.";

cin.get(); cin.get();

return 0 ; // код возврата функции (return code) : 0-нет ошибок

}

// Пример 2.1.7

// Вычисление параметров окружности, круга, шара

#include <iostream>

using namespace std;

// главная функция

void main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

// объявление переменных

double r=0.; // радиус

double C=0.; // длина окружности

double S=0.; // площадь круга,

double V=0.; // объем шара

const double PI=3.14; // математическая константа

//ввод

cout << "Введите значение радиуса (в см.) и нажмите ENTER : " ;

cin >> r;

// вычисления

C=2.*PI*r;

S=PI*r*r;

V=4./3*r*r*r;

// вывод

cout << "\tC=" << C << endl << "\tS=" << S << endl << "\tV=" << V << endl;

cin.get(); cin.get();

return;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]