Основы языка С++

История развития языка С и С++. Базовые средства языка C++: состав алгоритмического языка, этапы создания исполняемой программы. Алфавит языка С (С++), лексемы (идентификаторы, ключевые слова, знаки операций, константы, разделители). Основные типы данных.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 08.06.2015
Размер файла 31,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

1. Введение в C и C ++

Язык C разработан Денисом Ричи в начале 80-х г.г. Этот язык создавался как язык системного программирования. Язык C эффективен для разработки операционных систем, компиляторов и т.д., более удобен для написания прикладных программ. Язык поддерживает полный набор конструкций структурного программирования, поддерживает модульность, имеет простую структуру программ. Кроме того, язык C обладает набором низкоуровневых средств, которые позволяют иметь удобный доступ к аппаратным средствам компьютера, в частности, позволяют добраться до каждого бита памяти. алгоритмический программа лексема константа

Преимущества C: переносимость C-программ компьютеры различной архитектуры, из одной операционной системы в другую, лаконичность записи алгоритмов, возможность получить эффективный код программы. Первое описание C приведено в книги Кернигана и Ричи. Имеется стандарт языка C - ANSI. Гибкость и универсальность C обеспечило его широкое распространение.

В начале 80-х г.г. Бьёрн Страуструп расширил C, он создал язык C с классами. В 1983 году это название было заменено на C ++. В 1998 году был создан стандарт языка C ++ - ISO/IEC 14882. Язык C ++ полностью включает возможности языка C, т.е. C - программа свободно реализуется в C ++.

2. Базовые средства языка C++

2.1 Состав языка

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

Подобные элементы содержит и алгоритмический язык, только слова называют лексемами (элементарными конструкциями), словосочетания -- выражениями, а предложения -- операторами. Лексемы образуются из символов, выражения -- из лексем и символов, а операторы -- из символов, выражений и лексем:

* Алфавит языка, или его символы -- это основные неделимые знаки, с помощью которых пишутся все тексты на языке.

* Лексема, или элементарная конструкция, -- минимальная единица языка, имеющая самостоятельный смысл.

* Выражение задает правило вычисления некоторого значения.

* Оператор задает законченное описание некоторого действия.

Размещено на http://www.allbest.ru/

Рисунок 1.1. Состав алгоритмического языка

Для описания сложного действия требуется последовательность операторов. Операторы могут быть объединены в составной оператор, или блок (Блоком в языке С++- считается последовательность операторов, заключенная в фигурные скобки { }). В этом случае они рассматриваются как один оператор. Операторы бывают исполняемые и неисполняемые. Исполняемые операторы задают действия над данными. Неисполняемые операторы служат для описания данных, поэтому их часто называют операторами описания или просто описаниями.

Каждый элемент языка определяется синтаксисом и семантикой. Синтаксические определения устанавливают правила построения элементов языка, а семантика определяет их смысл и правила использования.

Объединенная единым алгоритмом совокупность описаний и операторов образует программу на алгоритмическом языке.

Для того чтобы выполнить программу, требуется перевести ее на язык, понятный процессору -- в машинные коды. Этот процесс состоит из нескольких этапов. Рисунок 1.2 иллюстрирует эти этапы для языка С++.

Сначала программа (текстовый файл с расширением имя.cpp) передается препроцессору, который выполняет директивы, содержащиеся в ее тексте (например, включение в текст так называемых заголовочных файлов -- текстовых файлов, в которых содержатся описания используемых в программе элементов).

Получившийся полный текст (файл с расширением .cpp) программы поступает на вход компилятора, который выделяет лексемы, а затем на основе грамматики языка распознает выражения и операторы, построенные из этих лексем. При этом компилятор выявляет синтаксические ошибки и в случае их отсутствия строит объектный модуль.( создается файл - имя.obj).

Компоновщик, или редактор связей, формирует исполняемый модуль программы, подключая к объектному модулю другие объектные модули, в том числе содержащие функции библиотек, обращение к которым содержится в любой программе (например, для осуществления вывода на экран). Если программа состоит из нескольких исходных файлов, они компилируются по отдельности и объединяются на этапе компоновки.

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

Размещено на http://www.allbest.ru/

Рисунок 1.2. Этапы создания исполняемой программы

Для описания языка в документации часто используется некоторый формальный метаязык, например, формулы Бэкуса--Наура или синтаксические диаграммы. Для наглядности и простоты изложения будем использовать широко распространенный неформальный способ описания, при котором необязательные части синтаксических конструкций заключаются в квадратные скобки, текст, который необходимо заменить конкретным значением, пишется по-русски, а выбор одного из нескольких элементов обозначается вертикальной чертой.

Например, запись

[ void | int ] имя():

означает, что вместо конструкции имя необходимо указать конкретное имя в соответствии с правилами языка, а перед ним может находиться либо void, либо int, либо ничего. Фигурные скобки используются для группировки элементов, из которых требуется выбрать только один. В тех случаях, когда квадратные скобки являются элементом синтаксиса, это оговаривается особо.

2.2 Алфавит языка С (С++)

Алфавит языка С (С++) включает в себя:

1. Прописные и строчные буквы латинского алфавита и знак подчёркивания

2. Цифры от 0 до 9

3. Специальные знаки: " { } , | [ ] ( ) + - / % * . \ ? < = > ! & # ~ ; ' '

4. Пробельные символы: пробел, символы табуляции, символ перехода на следующую строку.

2.3 Лексемы

Из символов алфавита формируются лексемы:

1. идентификаторы

2. ключевые (зарезервированные) слова

3. знаки операций

4. константы

5. разделители

Идентификаторы - имя программного объекта. Используются латинские буквы, цифры, знак подчеркивания. Первый символ имени - буква или знак подчеркивания. Пробелов не должно быть, длина имени не ограничивается. В Borland C++ -- 1-32 символов. Идентификатор не должен совпадать с ключевыми словами.

Ключевые слова - слова, имеющие специальные значения для компилятора.

!!! Все ключевые слова пишутся только строчными буквами.

Примеры некоторых ключевых слов:

asm class inline return

auto double int static

bool do new this

break enum operator try

case friend public typedef

Знаки операций - один или более символов, определяющих действия над операндами.

Знаки операций делятся на:

· унарные

· бинарные

· терарные

Один и тот же знак может интерпретироваться по-разному, в зависимости от контекста.

Константы - неизменяемые величины. Различают целые, вещественные, символьные и строковые константы. Тип константы определяется её записью.

Целая константа может быть записана в 8-, 10-, 16-ричном формате. В 10-ричном формате константы начинаются не с нуля (8, 10, 0, 7, 15 и т.д.). В 8-ричном формате константа начинается с нуля, далее следуют 8-ричные цифры (01, 07, 0701 и т.д.). В 16-ричном формате константа начинается с 0X (0XA, 0X777, 0X1 и т.д.).

Вещественная константа может быть записана в следующем виде:

[цифры].[цифры]

Например: 2.2 или .01 и т.д.

или в экспоненциальной форме

Записывается в виде:

[цифры][.][ цифры]{E|e}[+|-][ цифры]

Примеры записи:

0.2E5

.1e-5

10E5

Символьная константа - один или более символов в апострофах. Примеры:

`A' `\n' `\0' `\0x17' и др.

Символьные константы, состоящие из одного символа, занимают в памяти один байт и имеют стандартный тип char. Двухсимвольные константы занимают два байта и имеют тип int, при этом первый символ размещается в байте с меньшим адресом.

Символ обратной косой черты используется для представления:

* кодов, не имеющих графического изображения (например, \а -- звуковой сигнал, \n -- перевод курсора в начало следующей строки);

* символов апострофа ( ' ), обратной косой черты ( \ ), знака вопроса ( ? ) и кавычки ( " );

* любого символа с помощью его шестнадцатеричного или восьмеричного кода, например, \073, \0xF5. Числовое значение должно находиться в диапазоне от 0 до 255.

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

В таблице 1.1 приведены их допустимые значения. Управляющая последовательность интерпретируется как одиночный символ. Если непосредственно за обратной косой чертой следует символ, не предусмотренный таблицей 1.1, результат интерпретации не определен. Если в последовательности цифр встречается недопустимая, она считается концом цифрового кода.

Таблица 1.1 Управляющие последовательности

Запись

Код шестнадцатеричный

Название

\a

7

Звуковой сигнал

\b

8

Возврат на шаг

\f

C

Перевод страницы(формата)

\n

A

Перевод строки

\r

D

Возврат каретки

\t

9

Горизонтальная табуляция

\v

B

Вертикальная табуляция

\\

5C

Обратная косая черта

\'

27

Апостроф

\”

22

Кавычка

\?

3F

Знак вопроса

\0ddd

-

Восьмеричный код символа

\0xddd

ddd

Шестнадцатеричный код символа

Приведенные управляющие константы используются в строковых константах.

Строковые константы - последовательность символов, взятых в кавычки.

Примеры:

“Привет”

“\n y=%d x=%d”

“фирма \“Гарант\” ”

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

Длинную строковую константу можно разместить на нескольких строках, используя в качестве знака переноса обратную косую черту, за которой следует перевод строки. Эти символы игнорируются компилятором, при этом следующая строка воспринимается как продолжение предыдущей.

Например, строка

"Условие задачи: \

найти сумму положительных чисел, \

делящихся на 2"

полностью эквивалентна строке

"Условие задачи: найти сумму положительных чисел, делящихся на 2"

В конец каждого строкового литерала компилятором добавляется нулевой символ, представляемый управляющей последовательностью \0. Поэтому длина строки всегда на единицу больше количества символов в ее записи. Таким образом, пустая строка "" имеет длину 1 байт.

Разница между строкой из одного символа, например, "А", и символьной константой 'А' в том, что строка занимает 2 байта, а символьная константа занимает 1 байт.

Пустая символьная константа недопустима.

Разделители - пробелы, точки с запятой, фигурные скобки.

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

/*комментарий*/

либо с каждой строки

// комментарий

3. Типы данных

Концепция типа данных.

Любая программа обрабатывает данные. Данные различного типа хранятся и обрабатываются по-разному. Каждая константа, переменная результат вычисления выражения или функции имеет определенный тип.

Тип данных определяет внутреннее представление данных в памяти компьютера, множество значений, которые могут принимать значения этого типа (диапазона), операции и функции, которые можно применять к величинам этого типа.

Исходя из этих характеристик, программист выбирает тип каждой величины программы. По обязательному описанию компилятор проводит проверку допустимости различных конструкций программы.

Все типы языка C++ можно разделить на основные и составные. В языке C++ определено шесть основных типов данных для представления целых, вещественных, символьных и логических величин. На основе этих типов программист может вводить описание составных типов. К ним относятся массивы, перечисления, функции, структуры, ссылки, указатели, объединения и классы.

3.1 Основные типы данных

Основные (стандартные) типы данных часто называют арифметическими, поскольку их можно использовать в арифметических операциях. Для описания основных типов определены следующие ключевые слова:

* int (целый);

* char (символьный);

* wchar_t (расширенный символьный);

* bool (логический);

* float (вещественный);

* double (вещественный с двойной точностью).

Первые четыре тина называют целочисленными {целыми), последние два -- типами с плавающей точкой. Код, который формирует компилятор для обработки целых величин, отличается от кода для величин с плавающей точкой.

bool и wchar_t используются в С++, в С не используются.

Существует четыре спецификатора типа, уточняющих внутреннее представление и диапазон значений стандартных типов:

* short (короткий);

* long (длинный);

* signed (знаковый);

* unsigned (беззнаковый).

3.2 Целый тип (int)

Размер типа int не определяется стандартом, а зависит от компьютера и компилятора. Для 16-разрядного процессора под величины этого типа отводится 2 байта, для 32-разрядного -- 4 байта.

Спецификатор short перед именем типа указывает компилятору, что под число требуется отвести 2 байта независимо от разрядности процессора. Спецификатор long означает, что целая величина будет занимать 4 байта. Таким образом, на 16-разрядном компьютере эквиваленты int и short int, а на 32-разрядном -- int и long int.

Внутреннее представление величины целого типа -- целое число в двоичном коде. При использовании спецификатора signed старший бит числа интерпретируется как знаковый (0 -- положительное число, 1 -- отрицательное). Спецификатор unsigned позволяет представлять только положительные числа, поскольку старший разряд рассматривается как часть кода числа. Таким образом, диапазон значений типа int зависит от спецификаторов. Диапазоны значений величин целого типа с различными спецификаторами для IBM PC-совместимых компьютеров приведены в таблице 1.2

По умолчанию все целочисленные типы считаются знаковыми, то есть спецификатор signed можно опускать.

Константам, встречающимся в программе, приписывается тот или иной тип в соответствии с их видом. Если этот тип по каким-либо причинам не устраивает программиста, он может явно указать требуемый тип с помощью суффиксов L, 1 (long) и U, u (unsigned). Например, константа 32L будет иметь тип long и занимать 4 байта. Можно использовать суффиксы L и U одновременно, например, Ox22UL или 05LU.

Типы short int, long int, signed int и unsigned int можно сокращать до short, long, signed и unsigned соответственно.

3.3 Символьный тип (char)

Под величину символьного типа отводится количество байт, достаточное для размещения любого символа из набора символов для данного компьютера. Как правило, это 1 байт. Тип char, как и другие целые типы, может быть со знаком или без знака. В величинах со знаком можно хранить значения в диапазоне от -128 до 127. При использовании спецификатора unsigned значения могут находиться в пределах от 0 до 255. Этого достаточно для хранения любого символа из 256-символьного набора ASII. Величины типа char применяются также для хранения целых чисел, не превышающих границы указанных диапазонов.

3.4 Расширенный символьный тип (wchar_t)

Тип wchar_t предназначен для работы с набором символов, для кодировки которых недостаточно 1 байта, например, Unicode. Размер этого типа зависит от реализации; как правило, он соответствует типу short. Строковые константы типа wchar_t записываются с префиксом L, например, L"Games".

3.5 Логический тип (bool)

Величины логического типа могут принимать только значения true и false, являющиеся зарезервированными словами. Внутренняя форма представления значения false -- 0 (нуль). Любое другое значение интерпретируется как true. При преобразовании к целому типу true имеет значение 1.

3.6 Типы с плавающей точкой (float, double и long double)

Стандарт C++ определяет три типа данных для хранения вещественных значений: float, double и long double.

Типы данных с плавающей точкой хранятся в памяти компьютера иначе, чем целочисленные.

Внутреннее представление вещественного числа состоит из двух частей -- мантиссы и порядка. В IBM PC-совместимых компьютерах величины

типа float занимают 4 байта, из которых один двоичный разряд отводится под

знак мантиссы, 8 разрядов под порядок и 23 под мантиссу. Мантисса -- это число, большее 1.0, но меньшее 2.0. Поскольку старшая цифра мантиссы всегда равна 1, она не хранится.

Для величин типа double, занимающих 8 байт, под порядок и мантиссу отводится 11и 52 разряда соответственно. Длина мантиссы определяет точность числа, а длина порядка -- его диапазон. Как можно видеть из табл. 1.2, при одинаковом количестве байт, отводимом под величины типа float и long int, диапазоны их допустимых значений сильно различаются из-за внутренней формы представления.

Спецификатор long перед именем типа double указывает, что под величину отводится 10 байт.

Константы с плавающей точкой имеют по умолчанию тип double. Можно явно указать тип константы с помощью суффиксов F, f (float) и L, 1 (long). Например, константа 2E+6L будет иметь тип long double, а константа 1.82f -- тип float.

Таблица 1. 2 Диапазоны значений простых типов данных для IBM PC

Тип

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

Размер в байтах

bool

true и false

1

signed char

-128 … 127

1

unsigned char

0 … 255

1

signed short int

-32768 … 32767

2

unsigned short int

0 … 65535

2

signed long int

-2147483648 … 2147483647

4

unsigned long int

0 … 4 294 967 295

4

float

3.4e-38 … 3.4e38

0

-3.4e38 … -3.4e-38

4

double

1.7e-308 … 1.7e308

0

-1.7e308 … -1.7e-308

8

long double

3.4e-4932 … 3.4e4932

0

-3.4e4932 … -3.4e-4932

10

Для написания переносимых на различные платформы программ нельзя делать предположений о размере типа int. Для его получения необходимо пользоваться операцией sizeof, результатом которой является размер типа в байтах. Например, для операционной системы MS-DOS sizeof (int) даст в результате 2, а для Windows 9Х или OS/2 результатом будет 4.

В стандарте ANSI диапазоны значений для основных типов не задаются, определяются только соотношения между их размерами, например:

slzeof(float) < slzeof(double) < sizeof(long double)

sizeof(char) < slzeof(short) < sizeof(int) < sizeof(long)

Минимальные и максимальные допустимые значения для целых типов зависят от реализации и приведены в заголовочном файле <limits.h> (<c11m1ts>), характеристики вещественных типов -- в файле <float.h> (<cfloat>).

Различные виды целых и вещественных типов, различающиеся диапазоном и

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

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

3.7 Тип void

Кроме перечисленных, к основным типам языка относится тип void. Множество значений этого типа пусто. Он используется для определения функций, которые не возвращают значения, для указания пустого списка аргументов функции, как базовый тип для указателей и в операции приведения типа.

Размещено на Allbest.ru

...

Подобные документы

  • Понятие алгоритма. Цикл программы. Структурная схема алгоритма. Элементы языка Тurbo Рascal. Алфавит. Идентификаторы. Комментарии. Лексика языка С++. ESC-последовательности. Операции. Ключевые слова. Комментарии.

    контрольная работа [43,0 K], добавлен 24.04.2006

  • Ознакомление со структурой, комментариями, переменными и типами данных, константами, перечислениями, преобразованием типов языка программирования высокого уровня С++. Ключевые понятия языка, идентификаторы, ключевые слова, функции, операторы, выражения.

    контрольная работа [31,2 K], добавлен 12.12.2009

  • Лингвистическая концепция языка Паскаль. Интегрированная инструментальная оболочка. Основы построения программ на ТП 7.0. Алфавит языка и специфика использования символов. Простые типы данных: константы и переменные. Циклические конструкции и операции.

    курсовая работа [284,6 K], добавлен 02.07.2011

  • Переменные и операции языка СИ: используемые символы, константы, идентификаторы и ключевые слова. Использование комментариев в тексте программы. Типы данных и их объявление. Приоритеты операций и порядок вычислений. Функции, переменные, макроподстановки.

    учебное пособие [135,0 K], добавлен 17.02.2012

  • Изучение общей структуры языка программирования Delphi: главные и дополнительные составные части среды программирования. Синтаксис и семантика языка программирования Delphi: алфавит языка, элементарные конструкции, переменные, константы и операторы.

    курсовая работа [738,1 K], добавлен 17.05.2010

  • Символьный тип данных как составляющая языка программирования: управляющие символы, лексемы и разделители. Разработка программного обеспечения для практической реализации решения задач, содержащих символьные величины языка программирования Turbo Pascal.

    курсовая работа [37,7 K], добавлен 03.05.2012

  • Язык BASIC как семейство высокоуровневых языков программирования. Средства алгоритмического языка программирования и их типы. Способы ввода исходных данных. Особенности оператора условного перехода. Детальная характеристика циклических вычислений.

    реферат [64,4 K], добавлен 02.05.2015

  • Методика разработки и частичная реализация транслятора для языка "С" с использованием языка "С++", производящего разбиение на минимальные неделимые конструкции языка исходной цепочки символов основываясь на лексике языка. Анализ работы программы.

    курсовая работа [841,3 K], добавлен 19.03.2012

  • Элементы языка Object Pascal: идентификаторы, константы, переменные, выражения. Структура проекта Delphi. Операторы и метки. Типы данных языка OPascal. Статические и динамические массивы. Записи с вариантными полями. Совместимость и преобразование типов.

    курс лекций [385,4 K], добавлен 18.02.2012

  • Конструкции Си, базовые типы данных языка программирования. Идентификаторы и типизированные константы. Область видимости и время жизни переменных. Функции преобразования символьных строк. Функции, работающие со строками. Разработка визуальных компонент.

    методичка [400,2 K], добавлен 06.07.2009

  • Различия между существующими диалектами SQL. Стандартизация языка SQL. Концепция баз данных. Эффективность организации данных. Структура языка SQL. Приближенные числовые типы. Интервальный тип данных. Обработка сложно структурированной информации.

    курсовая работа [50,7 K], добавлен 29.05.2014

  • Общие данные об основных операторах языка SQL. Интерактивный режим работы. Использование языка SQL для выбора информации из таблиц, для вставки, редактирования и удаления данных в них. Связь между операциями реляционной алгебры и операторами языка SQL.

    реферат [146,5 K], добавлен 06.02.2015

  • Основы языка программирвоания C++. Элементы управления в Microsoft Visual C++. Алгоритмические конструкции языка программирования Visual C++ и базовые элементы управления. Глобальные константы и переменные. Управление программой с помощью клавиатуры.

    курсовая работа [1,7 M], добавлен 08.04.2015

  • Язык структурированных запросов SQL (Structured Query Language) и его место в сфере доступа к информации в реляционных базах данных. Структура и основные типы данных языка. Синтаксис и семантика главных операторов SQL, последние стандарты языка.

    реферат [98,7 K], добавлен 29.03.2012

  • Понятие и общая характеристика языка программирования РНР, принципы и этапы его работы, синтаксис и ассоциируемые массивы. Обработка исключений в языке Java. Работа с базами данных с помощью JDBC. Изучение порядка разработки графического интерфейса.

    презентация [192,3 K], добавлен 13.06.2014

  • История создания языка Java. Основные принципы объектно-ориентированного программирования. Структура, особенности синтаксиса и примеры прикладных возможностей использования языка Java, его преимущества. Перспективы работы программистом на языке Java.

    курсовая работа [795,9 K], добавлен 14.12.2012

  • История создания и применение языка Basic. Стандартные математические и строковые функции. Операции и выражения языка. Блоки данных и подпрограммы. Операторы управления, цикла, ввода-вывода и преобразования информации. Константы, переменные, массивы.

    контрольная работа [2,3 M], добавлен 04.05.2015

  • Краткая характеристика встроенного языка. Формат исходных текстов программных модулей. Комментарии, формат операторов, зарезервированные слова. Структура программного модуля. Базовые типы данных, правила их преобразования. Оператор объявления переменных.

    реферат [30,3 K], добавлен 23.01.2011

  • Ознакомление со структурой языка программирования Turbo-Pascal 7.0, его алфавитом, выражениями и простейшими конструкциями (метками, идентификаторами). Способы описания арифметических, вещественных, логических и символьных операций в программной среде.

    реферат [68,2 K], добавлен 07.02.2011

  • Алфавит языка программирования C#. Лексемы языка программирования. Область действия переменных. Понятие классов и объектов. Структура программного модуля на С#. Управление процессом повторения вычислений. Продолжение цикла и модификация параметра цикла.

    курсовая работа [557,1 K], добавлен 10.03.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.