Продолжение таблицы 2.2. €

Лабораторная работа 2

Переменные и базовые типы данных языка С++. Создание программы линейного алгоритма

Теоретическая часть

Понятие алгоритма. Блок-схема

Алгоритм - конечная последовательность предписаний, однозначно опре­деляющая процесс преобразования исходных данных в результат решения задачи.

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

- словесная запись;

- графические схемы алгоритмов (блок-схемы);

- псевдокод (формальные алгоритмические языки);

- структурограммы.

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

Таблица 2.1. - Графические элементы блок-схем

Название блока Блок Отображаемая функ­ция
Начало-конец Продолжение таблицы 2.2. € - student2.ru Начало, конец, вход -выход в программах
Блок ввода-вывода Продолжение таблицы 2.2. € - student2.ru Ввод данных либо вы­вод результатов на экран
Блок вывода Продолжение таблицы 2.2. € - student2.ru Вывод данных на печать

Продолжение таблицы 2.1. - Графические элементы блок-схем

Процесс Продолжение таблицы 2.2. € - student2.ru Вычисление или после­довательность вычисле­ний
Предопреде­ленный процесс Продолжение таблицы 2.2. € - student2.ru Выполнение подпро­граммы
Альтернатива   Проверка условий
Модификация   Начало цикла
Соединитель   Разрыв линий потока информации в пределах одной страницы

В таблице 2.2. приведены основные базовые элементарные структуры для составления блок-схем.

Таблица 2.2. - Базовые структуры блок-схем

Название типа структуры Изображение
Последовательность Продолжение таблицы 2.2. € - student2.ru

Продолжение таблицы 2.2. – Базовые структуры блок-схем

Разветвление (выбор) Продолжение таблицы 2.2. € - student2.ru Продолжение таблицы 2.2. € - student2.ru Продолжение таблицы 2.2. € - student2.ru Продолжение таблицы 2.2. € - student2.ru Продолжение таблицы 2.2. € - student2.ru Продолжение таблицы 2.2. € - student2.ru
Сокращенная запись разветвления   Продолжение таблицы 2.2. € - student2.ru
Выбор варианта Продолжение таблицы 2.2. € - student2.ru
Цикл с предусловием Продолжение таблицы 2.2. € - student2.ru

Продолжение таблицы 2.2. – Базовые структуры блок-схем



Цикл с постусловием Продолжение таблицы 2.2. € - student2.ru
Цикл с параметрами Продолжение таблицы 2.2. € - student2.ru

2.1.2. Алфавит и лексемы языка Си++

В алфавит языка Си входят:

- прописные и строчные буквы латинского алфавита;

- цифры: 0,1,2,3,4,5,6,7,8,9;

- специальные знаки:

” {} , [] () | + - / \ % ;

‘ : < = > _ ! & # ^ . * ~

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

- идентификаторы;

- ключевые (служебные, иначе зарезервированные) слова;

- константы;

- знаки операций;

- разделители (знаки пунктуации).

Рассмотрим эти лексические элементы языка подробнее.

Идентификатор - последовательность из букв латинского алфавита, десятичных цифр и символов подчеркивания, начинающаяся не с цифры:

RUN run hard_RAM_disk сору_54

Прописные и строчные буквы различаются. Таким образом, в этом примере два первых идентификатора различны. На длину разли­чаемой части идентификатора конкретные реализации накладывают ограничение. Компиляторы различают не более 32-х первых символов любого идентификатора. Некоторые реализации Си++ на ЭВМ типа VAX допускают идентификаторы длиной до 8 символов.

Ключевые (служебные) слова - это идентификаторы, зарезервированные в языке для специального использования. Ключевые слова Си++:

asm

auto

break

case

catch

char

class

const

continue

default

delete

do

double

else

enum

extern

float

for

friend

goto

if

inline

int

long

new

operator

private

protected

public

register

return

short

signed

sizeof

static

struct

switch

template

this

throw

try

typedef

typeid

union

unsigned

virtual

void

volatile

while

Ранее в языке Си++ был зарезервирован в качестве ключевого слова идентификатор overload. Для компиляторов фирмы Borland (ВС++ и ТС++) дополнительно введены ключевые слова:

cdecl

_cs

_ds

_еs

_export

far

huge

interrupt

_loadds

near

pascal

_regparam

_saveregs

_seg

_ss

Там же введены как служебные слова регистровые переменные:

_АН _BL _CX _SI _CS _FLA
_AL _BX _DH _DI _DS _GS
_AX _СН _DL _BP _SS  
_ВН _CL _DX _SP _ES  

Отметим, что ранние версии ВС++ и ТС++ не включали в ка­честве ключевых слов идентификаторы throw, try, typeid, catch.

He все из перечисленных служебных слов сразу же необходимы программисту, однако их запрещено использовать в качестве произ­вольно выбираемых имен, и список служебных слов нужно иметь уже на начальном этапе знакомства с языком Си++. Кроме того, иденти­фикаторы, включающие два подряд символа подчеркивания (__), резервируются для реализаций Си++ и стандартных библиотек. Идентификаторы, начинающиеся с символа подчеркивания (_), ис­пользуются в реализациях языка Си. В связи с этим начинать выби­раемые пользователем идентификаторы с символа подчеркивания и использовать в них два подряд символа подчеркивания не рекомендуется.

Константа (литерал) - это лексема, представляющая изображе­ние фиксированного числового, строкового или символьного (литерного) значения.

Константы делятся на пять групп: целые, вещественные (с пла­вающей точкой), перечислимые, символьные (литерные) и строковые (строки или литерные строки). Перечислимые константы проект стан­дарта языка Си++ [2] относит к одному из целочисленных типов.

Компилятор, выделив константу в качестве лексемы, относит её к той или другой группе, а внутри группы - к тому или иному типу дан­ных по ее "внешнему виду" (по форме записи) в исходном тексте и по числовому значению.

Целые константы могут быть десятичными, восьмеричными и шестнадцатеричными.

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

С именами переменных связывается тип данных, который контролируется компилятором и для которого выделяется определенное количество байтов памяти. Имена переменных должны начинаться с буквы (латинского алфавита) или символа подчеркивания (например, _aza), за которым могут следовать любые комбинации букв в любом регистре (заглавные или строчные), символы подчеркивания или цифры 0–9. В языке С имеется различие между заглавными и строчными буквами. Поэтому переменная World будет отличаться от переменной world и т.п. При этом в определении переменной не разрешается символ пробела (пробелов) и некоторые другие символы, например, $... .

Стандарт С89 определяет пять базовых типов данных:

int – целочисленный тип, целое число;

float – вещественное число одинарной точности с плавающей точкой;

double – вещественное число двойной точности с плавающей точкой;

char – символьный тип для определения одного символа;

void – тип без значения.

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

Объект типа char всегда занимает 1 байт памяти. Размеры объектов других типов, как правило, зависят от среды программирования и операционной системы.

Приведем модификаторы базовых типов данных. К ним относятся следующие спецификаторы, предшествующие им в тексте программы:

signed, unsigned, long, short

Базовый тип int может быть модифицирован каждым из перечисленных спецификаторов. Тип char модифицируется с помощью unsigned и signed, тип double – с помощью long.

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

Таблица 2.3.

Типы данных языка С

Тип данных Типичный размер в битах Минимально допустимый диапазон значений
char 8 (или 1 байт) от –127 до 127
unsigned char от 0 до 255
signed char от –127 до 127
int 16 или 32 от –32767 до 32767
unsigned int 16 или 32 от 0 до 65535
signed int 16 или 32 от –32767 до 32767
short int от –32767 до 32767
unsigned short int от 0 до 65535
signed short int от –32767 до 32767
long int от –2147483647 до 2147483647
long long int от –(263–1 ) до (263–1) для С99
signed long int от –2147483647 до 2147483647
unsigned long int от 0 до 4294967295
unsigned long long int от 0 до (264–1) для С99
float от 1Е–37 до 1Е+37 (с точностью не менее 6 значащих десятичных цифр)
double от 1Е–37 до 1Е+37 (с точностью не менее 10 значащих десятичных цифр)
long double от 1Е–37 до 1Е+37 (с точностью не менее 10 значащих десятичных цифр)

Для базового типа int возможны следующие записи с модификатором:

signed или signed intunsigned или unsigned intlong или long intshort или short int

Для данных вещественного типа максимальные значения абсолютных величин представлены в табл. 2.4 .

Таблица 2.4.

Наши рекомендации