Cpp introduction lec 1

Page 1

Лекция 1. Основные принципы и понятия языка С++. Консольное приложение. Основные встроенные типы данных. Переменные, константы. Массивы. Консольный ввод и вывод. Процесс построения программы на языке С++ Процесс построения программы на языке С++ включает в себя следующие этапы: - подготовку файлов исходного кода (*.cpp); - компиляцию исходных файлов в файлы объектного кода (*.obj); - компоновку объектных файлов с присоединением необходимых библиотек (*.lib, *.dll) и ресурсов (*.res), в результате формируется конечный исполняемый файл (*.exe).

Unit1.cpp

Unit2.cpp

Unit3.cpp

Компилятор Unit1.obj Компоновщик

Unit2.obj

Unit3.obj Библиотеки и ресурсы

Project1.exe Для того, чтобы сделать возможным написание программ, состоящих из нескольких файлов исходного кода и, как следствие, раздельную компиляцию исходных файлов в языке С++ используется механизм заголовочных файлов (*.h или *.hpp). Они подключаются к компилируемым исходным файлам на этапе препроцессорной обработки и содержат информацию (как правило, прототипы функций), необходимую для раздельной компиляции исходных модулей программы. Заголовочные файлы подключаются к компилируемому файлу исходного кода с помощью директивы #include. Один и тот же заголовок можно подключать ко многим исходным файлам. Структурно программа на С++ представляет собой набор функций, среди которых одна является входной точкой


программы; она называется main() или WinMain(). Функции - единственный тип подпрограмм в С++. Создание консольного приложения в среде Turbo С++ Explorer Стандартное консольное приложение является простейшим типом приложений, создаваемых средой Turbo С++ Explorer. Внешне оно похоже на программу DOS (на самом деле таковой, конечно же, не являясь). Чтобы создать в среде консольное приложение необходимо выполнить следующие действия: - запустить среду; - выбрать в главном меню File|New|Others; появится многостраничная диалоговая панель; - на странице C++ Builder Projects выбрать Console Application, на появившейся панели установить состояние «включено» для флажков С++ и Console Application. После этих действий появится окно редактора кода, с шаблоном функции main(). Создадим консольное приложение, выводящее приветствие Hello World. Для этого в верхнюю часть исходного файла поместим директивы

#include<stdio.h> #include<conio.h> Далее в функцию main поместим следующие строки:

printf(“Hello World. \n”); printf("OK"); getch(); Приложение Hello World готово. Директива #include<stdio.h> делает доступными прототипы функций буферизованного ввода-вывода (в нашем случае - printf( ) ), а #include<conio.h> позволяет использовать функцию getch().


Windows – приложения, создаваемые средой Turbo C++ Explorer, требуют для запуска нескольких dll библиотек. Для обеспечения переносимости создаваемых приложений рекомендуется присоединить используемые ими dll функции к исполняемому коду программы. Для этого нужно в среде выставить следующие настройки: в главном меню выбрать опцию Project->Options и затем на странице Linker убрать флажок «Use dynamic RTL”, а на странице Packages убрать флажок “Build with runtime”. Основные встроенные типы данных Данные в программе могут присутствовать как непосредственно в тексте программы, так и храниться в памяти во время её выполнения. В первом случае они представляются в виде литеральных констант. Литеральные константы бывают: - символьными (одиночный символ, заключённый в апострофы, например 'w', 'g', '7'); - строковыми (последовательность символов, заключённая в двойные кавычки, например "Это строка"); - целыми десятичными (последовательность цифр, не начинающаяся с 0, например 23, 2003); - целыми восьмеричными (последовательность цифр от 0 до 7, начинающаяся с 0, например 011, 0147); - целыми шестнадцатеричными (последовательность шестнадцатеричных цифр 0-9 и AF, перед которой стоит 0X или 0x, например 0xffff); - вещественными десятичными (например, 123.0, 43.87), и, наконец, вещественными экспоненциальными (например, 3e10, 5.12E-6). В случае если данные присутствуют в памяти машины во время её выполнения, то они рассматриваются компилятором как принадлежащие к некоторому типу данных. В С++ имеется несколько встроенных (или простых) типов данных: char (беззнаковое целое размером 1байт), signed char (знаковое целое размером 1байт), unsighed char (беззнаковое целое размером 1байт), short (знаковое целое размером 2байта), unsighed short (беззнаковое целое размером 2байта), int (знаковое целое размером 4байта),


unsigned int (беззнаковое целое размером 4байта), long (то же, что int), unsigned long (то же, что unsigned int), float (вещественное с одинарной точностью – 4байта), double (вещественное с удвоенной точностью - 8байт), long double (вещественное с расширенной точностью – 10 байт). Переменные перечисленных простых типов различаются размером занимаемой памяти и внутренним представлением. Последние три типа используются для хранения только вещественных чисел. Переменные Переменной называется поименованное место в памяти для хранения данных. Переменные в С++ создаются с помощью оператора объявления переменных, в котором указываются тип, имена переменных и, иногда, их начальные значения. Имена переменных в С++ могут состоять из латинских букв, цифр и символов подчёркивания, причём первый символ имени не может быть цифрой. Следует помнить, что компилятор С++ различает регистр. Объявление переменной должно предшествовать её использованию в программе. Ниже приведён пример объявления переменных:

short i; char s = 'Q'; float f1, f2=3.0, f3; double x1, y1, _x2, _y2; Типизированные константы Типизированные константы являются разновидностью переменных. Это переменные, значения которых (заданные при инициализации) нельзя изменить. Типизированные константы объявляются следующим образом (несколько примеров):


const short i=1; const char s='Q'; const float f2=3.0; const double Pi=3.14159265; Представление вещественных переменных в памяти машины В отличие от переменных целых типов, значения которых представляются в памяти компьютера абсолютно точно, значения переменных вещественных типов определяют произвольное число лишь с некоторой конечной точностью, зависящей от внутреннего формата вещественного числа. Тип

Диапазон значений –45

Значащих цифр 38

float

1.5 * 10

double

5.0 * 10–324 .. 1.7 * 10308

long double

3.6 * 10

.. 3.4 * 10

–4951

4932

.. 1.1 * 10

Размер, Б.

7–8

4

15–16

8

19–20

10

Как видно из таблицы, вещественное число в С++ занимает от 4 до 10 смежных байт и имеет следующую структуру в памяти: s

e

m

Здесь s – знаковый бит числа; е – экспоненциальная часть, содержит двоичный порядок числа; m – мантисса числа. Мантисса m имеет длину от 23 (для float) до 46 (для double) и 63 (для long double) двоичных разрядов (бит), что и обеспечивает соответствующую точность вычислений и диапазон значений. Десятичная точка подразумевается после первого разряда мантиссы. Таким образом, вещественное число, заданное описанной e структурой имеет значение x = m ⋅ 2 , причём x>0, если s=0 и х<0, если s=1.

Массивы Массивом называется совокупность однотипных переменных (элементов массива), объединённых под одним именем и различающихся своими индексами. Массив объяв-


ляется подобно переменной, но после имени массива указывается число его элементов в квадратных скобках:

double mymatrix[3][3]; int myarray[10]; Массив, как и переменную, можно инициализировать при объявлении:

int myarray[10]={0,1,2,3,4,5,6,7,8,9}; Обращение к элементам массива производится путём указания индекса элемента в квадратных скобках:

myarray[3]=30; Индекс должен быть целым выражением в пределах допустимого диапазона. Индексация массивов в С++ всегда начинается с 0, поэтому если массив состоит из N элементов, то его индекс может принимать значения от 0 до N-1. Консольный вывод в С++ Консольный вывод в С++ осуществляется с помощью функции printf( ). В качестве аргументов ей передаются строка формата и переменные. При этом строка формата может содержать спецификаторы преобразования, в соответствии с которыми и форматируются переменные. Полную информацию о спецификациях функции printf( ) можно почерпнуть в справочной системе среды. Наиболее часто употребляемые спецификаторы типа переменной: %d – переменная целого типа; %f – переменная типа float или double; %Lf – переменная типа long double; %c – переменная типа char, хранящая символ; %s – переменная типа указатель на char, хранящая строку;


%3.5f - пример задания количества знаков до и после запятой для вывода значения вещественной переменной. Консольный ввод в С++ Ввод данных с консоли в языке С++ может быть осуществлен несколькими способами. В настоящей лекции рассматривается способ, связанный с использованием функции gets( ). Консольный ввод строки в С++ осуществляется с помощью функции gets( ), которая помещает введённую с клавиатуры строку в массив-буфер, заданный параметром, например:

char s[80]; gets(s); Буфером, в который помещается введённая строка, является здесь символьный массив s. Для преобразования строк, содержащих представление чисел, в символьные типы данных могут применяться функции atoi( ) и atof( ). Они преобразуют строки соответственно в целые (int) и вещественные (double) числа. Входная строка может содержать начальные пробелы. Первый встреченный символ, который не может входить в число, завершает преобразование. Прототипы этих функций находятся в файле stdlib.h. В С++ есть также «обратная» функция sprintf( ), работающая аналогично printf( ), но выводящая строку не на консоль, а в указанный буфер:

sprintf(s, “String, which input to buffer s”); Размер буфера s должен быть достаточным для размещения строки. Несколько слов о представлении строк в С++. Строки в С++ (они ещё называются нультерминальными строками) кодируются последовательностью символов, при этом признаком конца строки является код 0 (терминальный ноль). Пример:

char s[80];


s[0]=’a’; s[1]=’b’; s[2]=’c’; s[3]=0; s[4]=’e’; printf(“%s”, s); На консоль будет выдано abc Смотри также пример к лекции 1, расположенный на портале


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.