- •Глава 1. Основные понятия.
- •Общие сведения о программах, лексемах и алфавите
- •Процесс создания программы
- •Основные типы.
- •Основные типы данных
- •Глава 2. Создание консольных приложений в среде VisualStudio
- •1. Создание проекта
- •2. Начальный состав проекта
- •3. Добавление новых элементов в проект
- •Глава 4. Адреса, указатели, массивы, память
- •1. Указатели и адреса объектов
- •2. Указатели на функции
- •3. Ссылки
- •Глава 5. Структуры и объединения
- •1. Структура как тип и совокупность данных
Процесс создания программы
До выполнения программы необходимо подготовить текст исходной программы, написанной на языке Си++. Исходный текст может состоять из одного или нескольких файлов, имеющих расширение .cppили .h. В файлы с расширением .h, которые называют заголовочными файлами, помещаются фрагменты программы, которые обычно вставляются в другие файлы. Схема подготовки исполняемой программы представлена на рис.1
*.cpp
*.cpp
Перед шагом компиляции показан шаг препроцессорной обработки текста программы. Например, вставляет в текст программы содержимое других файлов, заменяет одни фрагменты текста другими. Вставки текстов файлов осуществляются с помощью препроцессорной директивы #include. Компилятор проверяет правильность исходной программы с точки зрения правил языка и переводит ее на язык машинных команд. В результате создается объектный код. Компоновщик дополнит программу библиотечными функциями и создаст загрузочный модуль с расширением .exe, который готов к выполнению.
Основные типы.
Разговор о типах начнем с переменных. Переменную чаще всего определяют как пару “имя”-“значение”. Имени соответствует адрес участка памяти, выделенный переменной, а значение соответствует содержимое этого участка. Именем служит идентификатор, а значение соответствует типу переменной, определяющему множество допустимых значений и набор операций, для которых переменная может служит операндом. Для определения и описания переменных основных типов используются следующие ключевые слова:
char(символьный)
sort (короткий целый)
int(целый)
long(длинный целый)
float(вещественный)
double(вещественный с удвоенной точностью)
void(отсутствие значений)
При определении переменных им можно приписывать начальные значения, которые вносятся в выделенную для них память.
char symbol=’y’;
floatpi=3.14159;
Употребляемые как отдельно, так и вместе с другими именами типов служебные слова unsigned(беззнаковый) иsigned(знаковый) позволяют для целого типа выбрать способ учета знакового разряда:
unsignedinti,j,k; // значения от 0 до 65535
unsignedlongL,M;// значения от 0 до 4294 967 295
При таком определении данные переменные могут принимать только положительные значения в указанных диапазонах. Применение отдельных служебных слов int,short,longэквивалентноsignedint,signedshort,signedlong, поэтому словоsignedобычно опускается. Переменные одного типа занимают в памяти одно и то же количество байтов. Их число может быть получено с помощью операцииsizeof.
Основные типы данных
Тип данных |
Размер бит |
Диапазон значений |
Назначение типа |
unsigned char |
8 |
0…255 |
Небольшие целые числа и коды символов |
char |
8 |
-128…127 |
Очень малые целые числа |
enum |
16 |
-32768…32767 |
Упорядоченные наборы целых чисел |
unsigned int |
16 |
0…65535 |
Большие целые и счетчики циклов |
short int |
16 |
-32768…32767 |
Небольшие целые, управление циклами |
int |
16 |
-32768…32767 |
Небольшие целые, управление циклами |
unsigned long |
32 |
0…4294 967 295 |
Астрономические расстояния |
long |
32 |
-2 147 483 648…2 147 483 647 |
Большие числа, популяции |
float |
32 |
3.4E-38…3.4E+38 |
Научные расчеты (7 значащих цифр) |
double |
64 |
1.7E-308…1.7E308 |
Научные расчеты (15 значащих цифр) |
long double |
80 |
3.4E-4932…1.1E+4932 |
Финансовые расчеты (19 значащих цифр) |
Пример программы, которая печатает размеры разных типов данных.
//Файл stdafx.h
#pragma once
#define WIN32_LEAN_AND_MEAN #include <stdio.h>
#include <tchar.h>
#include <stdio.h>
#include <iostream>
using namespace std;
//P1.cpp – Размеры типов данных
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
int i;
unsigned int ui;
long l;
unsigned long ul;
double d;
long double ld;
cout<<”\n sizeof(int)=”<<sizeof(i);
cout<<”\t sizeof(unsigned int)=”<<sizeof(ui);
cout<<”\n sizeof(long)=”<<sizeof(l);
cout<<”\t sizeof(unsigned long)=”<<sizeof(ul);
cout<<”\n sizeof(double)=”<<sizeof(d);
cout<<”\t sizeof(long double)=”<<sizeof(ld);
return 0;
}
Результат выполнения:
sizeof(int)=2 sizeof(unsigned int)=2
sizeof(long)=4 sizeof(unsigned long)=4
sizeof(double)=8 sizeof(long double)=10
Используя спецификатор typedef, можно вводить в программе удобные обозначения для сложных типов. Например,
typedefunsignedcharCOD;
CODsymbol;
введен новый тип CODи введена новая переменная этого типа, значениями которой могут быть беззнаковые числа в диапазоне от 0 до 255.
Операции над числовыми объектами
Над целыми числовыми объектами определены следующие пять бинарных операций: сложение +, вычитание -, умножение *, получение частного / и получение остатка от деления %. Например: 7%4 дает 3, а 7/4 дает 1.