95620

Объявление переменной и определение переменной

Лекция

Математика и математический анализ

ЭВМ, где точка фиксируется после знакового разряда, работает с дробными числами; если же точка зафиксирована после n-го разряда, то в такой ЭВМ могут представляться только целые числа. Рассмотрим частный случай q = 2; т.е. используется двоичная система счисления. Микропроцессор в IBM PC хранит целые числа и выполняет целочисленные операции...

Русский

2015-09-25

40.57 KB

0 чел.

Лекция  4.

x1

………….

хк

хк+1

………….

хn-1

Знак

k

m

а) Естественная форма: число записывается в виде знака и последовательности цифр, разделённых точкой (либо запятой) на целую и дробную части: Х = х1х2 … хк . хк+1 … хn-1 Точка (запятая)  в МС не изображается, а считается всегда стоящей на одном фиксированном месте. Такая форма представления называется представлением с фиксированной точкой.  

Знак «плюс» кодируется нулём, а знак «минус» — единицей; к — количество разрядов в целой части, а  m — в дробной части числа; точка подразумевается между ними. Таким образом, характеристики МС = {n, k, m, q}; здесь n = k + m + 1;

ЭВМ, где точка фиксируется после знакового разряда, работает с дробными числами; если же точка зафиксирована после n-го разряда, то в такой ЭВМ могут представляться только целые числа.

Рассмотрим частный случай q = 2; т.е. используется двоичная система счисления.  Микропроцессор в  IBM  PC хранит  целые  числа и  выполняет целочисленные  операции только с целыми  данными.  Число Х запишется так:

х0 х1 х2 … хк хк+1 … хn-1;

 

здесь х0 - знак, а хi равно 0, либо 1для i=0,1,…n-1.

На это представление можно посмотреть как на целое число; его называют машинным кодом числа Х для представления с фиксированной точкой. Это прямой код числа Х:

 

Пример.  МС = {n=8; n-1=k+m; q=2};   даны два числа a и b. записать их прямые коды.

  a =101112  [a]пр = 0101 1100

 b = -1010012  [b]пр = 1010 1001

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

В современных ЭВМ числа, как правило, хранятся в памяти в дополнительном коде, для положительных чисел и нуля дополнительный код совпадает с прямым. Для рассмотренных чисел  a и b:

[a]доп = [a]пр =  0101 1100 

[b]доп = 10000 0000

  -  0010 1001

               1101 0111        1101 0111

Замечание 1. Существует и другое, более простое, правило для определения дополнительного кода числа х<0: взять прямой код числа |х|, инвертировать его (заменить нули на 1, а  1 - на нули) и добавить к младшему разряду кода единицу. Например, дополнительный код числа b можно получить и так

[|b|]доп = 0010 1001; после инвертирования:  1101 0110  

 [b]доп = 1101 0110 + 1 = 1101 0111

Замечание 2. Дополнительный код не позволяет определить ситуацию переполнения, поэтому, наряду с ним, используется модифицированный дополнительный код:

Выполнение операций над числами, представленными с фиксированной точкой.

Сложение:  a + b = [a]доп + [b]доп =  здесь единица переполнения теряется.

Вычитание: :  a b = [a]доп +[–b]доп , т.е. операция вычитания заменяется сложением.

[–b]доп = 0010 1001 , операция   [a]доп +[–b]доп  выполняется над модифицированными дополнительными кодами:            

00 101 1100

00 010  1001

01 000  0101

Различные значения в двух знаковых разрядах результата сигнализируют о ситуации переполнения (см. замечание 2) - это аварийная (особая ) ситуация.

Умножение двух n-разрядных машинных слов выполняется на специальном (2*n)-разрядном регистре.

Диапазон чисел, представленных

а)в прямом коде:   –(qkqm)  X  (qkqm)

Здесь Xmax=(qkqm) –самое большое значение числа, которое можно представить в МС.   Каждому X из диапазона соответствует свой машинный код. Коды чисел X и -Х отличаются знаковыми разрядами.

b)в дополнительном коде:    –qk   X  (qkqm)

  Здесь незадействованным оказался код   100000…..0000 (так как нуль представляется кодом из n нулей, а -0 нет), его поставили в соответствие числу –qk .

Точность чисел, представленных с фиксированной точкой.

Если в записи числа, в его дробной части, содержится более, чем n цифр, то при записи числа в МС лишние знаки отбрасываются (с округлением или без округления), т.е. вместо числа Х хранится его приближение Х*. Очевидно, что отброшенный хвост не превосходит единицы (n-1) - го разряда:  | XX*|  q–(n-1). Эту величину (наименьшую из верхних оценок) называют абсолютной погрешностью, обозначают .

Аварийные (особые)ситуации, возникающие при выполнении операций над числами, представленными с фиксированной точкой.

  1.  переполнение разрядной сетки, называют переполнение с фиксированной точкой.
  2.  деление на нуль, называют некорректность деления в арифметике с фиксированной точкой.

Достоинства формы представления чисел с фиксированной точкой.

Сравнительно простая конструкция ЭВМ: в операциях сложения, вычитания при q=2 все разряды МС (и знаковый и числовые) работают одинаково.

Недостатки формы представления чисел с фиксированной точкой:

  1.  Сравнительно узкий диапазон чисел; необходимость следить, чтобы все промежуточные результаты лежали в этом диапазоне, для чего приходится выполнять достаточно громоздкую процедуру - масштабирование формул.
  2.  При хранении небольших по величине чисел возникает такая ситуация: хранятся в МС незначащие цифры (нули)  числа, а значащие должны быть отброшены. Например, число Х = 0.1= 0.0001[10011001100…]2 будет представлено:  0000 0001 , т.е. хранится Х*= 0.00012 = 0.0625.

6.Переменная – объект программы, который может изменять значение в ходе выполнения программы, переменная имеет имя и значение.

Объявление и определение переменной

До первого использования  переменной, её обязательно надо объявить(описать). Объявления переменных могут располагаться в любом месте  программы. Не обязательно делать все объявления переменных до появления первого исполняемого оператора, как это было принято в С. Тем не менее, объявления наиболее часто употребляемых переменных целесообразно производить в  начале программы, чтобы обеспечить ее удобочитаемость.

Объявление переменной предполагает указание имени переменной  и ее типа (в простейшем случае):   

имя типа  имя переменной [инициализатор]

Возможно указпание  нескольких имён:

 тип  имя [,имя … имя];

Например:  

int a,b;

float x;

При описании  можно присвоить переменной начальное значение, говорят инициализировать её, есть 2 способа сделать это:

 short  k,I=1;    // тип  имя =значение ;

 int  x(10);      // тип  имя (значение);

Модификатор  const  перед описанием переменной указывает, что переменная явл. именованной константой,она должна быть инициализирована при описании  и её значение изменять нельзя.

const int=100;   

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

Описание переменной  определяет её область действия – часть программы, где её можно использовать для доступа к выделенной ей области памяти.    Если  переменная определена в  блоке (внутри{  }) , то она говорят явл. локальной и область её действия от места описания и до конца блока. Если переменная определена вне любого блока, она наз. глобальной, область её действия – весь файл, где она описана,  начиная с места  описания.

Есть  разница  между терминами   объявление переменной и определение переменной.

Если при объявлении переменной  одновременно выделяется память под нее, то происходит определение переменной. Предложения – объявления  переменных, описанные выше,  являются и объявлениями, и определениями.

Вещественный тип

Стандарт С++ определяет три вещественных типа данных:

 float         4 байта             1.17*10-38 <|x|<3.4*10+38 ; x=0

 double        8 байтов         2.2*10-308 <|x|<1.7*10+308 ; x=0

 long double   10 байтов    3.4*10-4932 <|x|<1.19*10+4932 ; x=0

Операции для вещественного  типа:  

OP(вещественный)={+оо ; * / ; + - ; < <= >= > ;== != }

Функции для вещественного типа:  #include<cmath>  

Fun(вещественный)={fabs(x), sin(x), cos(x), log(x), log10(x), exp(x), pow(a,b), tan(x), atan(x),  asin(x),  acos(x), sqrt(x)}

Константы вещественного типа

Естественный вид:     [xxxx].[xx..xx],  например,    136.25,  136. , .25

Константа с порядком: :     

[xxxx][.][xx..xx] [{E/e}  [{+/-}]xx],

 например  .15е1  , 3Е5 , 1.25Е-3  это константы  0.15*101 , 3*105,  1.25*10-3 

По умолчанию у вещественной константы тип double, можно явно указать тип  с помощью суффиксов  F,f (для float),  L,l (для long double).

Логический тип: bool

Множество значений логического типа  {false, true}(эти слова зарезервированы как константы  логического типа),  false представляется значением 0, любое другое значение интерпретируется как  true, если true преобразуется к целому типу, оно имеет значение 1. Переменные логического типа чаще всего используются для хранения результатов сравнения.

Операции для логического   типа:

O(bool )={ !  ; <  <=  >=  > ; ==  != ;  && ; || }

Функции для логического типа: Fun(bool)= ø

Символьный тип: char 

Возможны типы

Signed char (≈ char)     1байт     -128 ÷ 127

Unsigned char           1байт      0 ÷ 255

Множество значений типа  char – множество символов ASCII, каждый символ в байте представлен своим кодом (0 ÷ 255), часть символов (с кодами 0÷31)является управляющими , они не имеют графического изображения, символы с кодами 32÷127 имеют фиксированное графическое написание ,а наборы символов с кодами 128÷255 отличаются для разных операционных систем , платформ и часто не содержат русских букв.

Коды цифр 0….9 упорядочены по возрастанию и идут без пропусков. Коды больших латинских букв упорядочены по алфавиту и идут без пропусков. То же самое верно и для малых латинских букв.

Операции для символьного   типа: -те же, что и для целого типа 

 (в операциях отношения сравниваются коды символов)

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

#include <cctype>  //подключение функций классификации и преобразования символов

isalnum(int ch)-проверка является ли символ буквой или цифрой.

isalpha(int ch)-проверка является ли символ буквой .

isdigit(int ch)-проверка является ли символ цифрой.

iscntrl(int ch)-проверка является ли символ управляющим.

Константы символьного типа

Символьные константы записываются в одиночных кавычках: 'А', ’+' и т. д. (это символы, имеющие графическое изображение).

Управляющие символы не  имеют графического написания  и изображаются  '\символ', говорят в виде управляющей последовательности, это означает, что символ \ «управляет»  интерпретацией следующих за ним символов последовательности. Так, ‘\t’  воспринимается не как символ 't', а как символ табуляции.  (Символ табуляции означает, что весь поток вывода будет условно разделен на фрагменты одинаковой длины, определяемой шагом табуляции, и следующий символ будет напечатан в начале  следующего фрагмента, а не сразу за предыдущим символом. В консольных программах шаг табуляции равен восьми позициям.)  Символьная константа '\п' означает перевод курсора в начало следующей строки. Управляющие символы могут использоваться и в составе строк.

Символ обратной косой черты  используется  для представления символов  ’  ” \ ?:  ‘\’’, ‘\\’, ‘\”’ , ‘\?’.

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

Структура описания функции:

<Заголовок функции> {<тело функции >}

int main()  

{<тело функции >}

Программа содержит:

<Директивы препроцессора>

using    namespace   std;

<описания>

< описание функции>

…….

< описание функции>

Функции не могут быть вложенными.Одна из функций обязательно есть функция main(). Программа может состоять из одного текстового файла  (его наз. исходный модуль)  или из нескольких исходных модулей.  

6.Переменная – объект программы, который может изменять значение в ходе выполнения программы, переменная имеет имя и значение.

Объявление и определение переменной

До первого использования  переменной, её обязательно надо объявить(описать). Объявления переменных могут располагаться в любом месте  программы. Не обязательно делать все объявления переменных до появления первого исполняемого оператора, как это было принято в С. Тем не менее, объявления наиболее часто употребляемых переменных целесообразно производить в  начале программы, чтобы обеспечить ее удобочитаемость.

Объявление переменной предполагает указание имени переменной  и ее типа (в простейшем случае):   

имя типа  имя переменной [инициализатор];

Возможно указпание  нескольких имён:

 тип  имя [,имя … имя];

Например:  

int a,b;

float x;

При описании  можно присвоить переменной начальное значение, говорят инициализировать её, есть 2 способа сделать это:

 short  k,I=1;    // тип  имя =значение ;

 int  x(10);      // тип  имя (значение);

Модификатор  const  перед описанием переменной указывает, что переменная явл. именованной константой, она должна быть инициализирована при описании  и её значение изменять нельзя.

const int=100;   

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

Описание переменной  определяет её область действия – часть программы, где её можно использовать для доступа к выделенной ей области памяти.   Если   переменная определена в блоке (внутри{  }) , то она говорят явл. локальной и область её действия от места описания и до конца блока. Если переменная определена вне любого блока, она наз. глобальной, область её действия – весь файл, где она описана, начиная с момента описания.

Есть  разница  между терминами   объявление переменной и определение переменной.

Если при объявлении переменной  одновременно выделяется память под нее, то происходит определение переменной. Предложения – объявления  переменных, описанные выше,  являются и объявлениями, и определениями.


 

А также другие работы, которые могут Вас заинтересовать

85239. АНАЛИЗ ОРГАНИЗАЦИИ И ОЦЕНКА ЭФФЕКТИВНОСТИ ВНЕДРЕНИЯ CRM-СИСТЕМЫ 2.56 MB
  Целью данной работы является оценка эффективности внедрения CRM-системы «Петрол плюс». Для достижения поставленной цели выполняются следующие задачи: Описание особенностей, видов и этапов внедрения CRM-систем; Обоснование показателей эффективности внедрения CRM-систем...
85240. Активное управление портфелем ценных бумаг в условиях неопределенности и риска 1.81 MB
  На современном этапе реформирования экономики Украины, актуальной проблемой является обеспечение полноценного функционирования фондового рынка, как эффективного механизма перераспределения финансовых ресурсов между субъектами экономической деятельности.
85241. Пути повышения эффективности управления оборотными активами ОАО «Дзержинский мясокомбинат» 550.5 KB
  Теоретические основы управления оборотными активами Общие основы управления оборотными активами Особенности управления оборотными активами Анализ технико-экономических и финансовых показателей ОАО Дзержинский мясокомбинат Пути повышения эффективности управления оборотными активами ОАО Дзержинский мясокомбинат Анализ состава и структуры оборотных активов ОАО Дзержинский мясокомбинат Оптимизация размера основных видов оборотных активов Пути рационального использования оборотных средств ОАО Дзержинский...
85243. Совершенствование организации процесса приготовления и приготовление сложных горячих фирменных блюд из мяса (говядины, телятины, свинины) в ресторанной кухне с использованием современных технологий и оборудования 153.5 KB
  Актуальность моей работы заключается в том, что она имеет практическую значимость для предприятий общественного питания. Результаты проделанной работы могут быть использованы для разработки рецептур мясных блюд европейской кухни и определения технологических нормативов закладки сырья, что необходимо...
85244. Особенности маркетинга кинорынка и специфика кинопродукции как объекта маркетинга 386.3 KB
  Вопросам развития рекламы всегда придавалось огромное значение. Значение рекламы наилучшим образом раскрывается в законе перепроизводства который гласит: в экономике производящей больше товаров и услуг чем их может быть потреблено реклама обеспечивает потребителей информацией об альтернативах выбора...
85245. ПРОЕКТИРОВАНИЕ ЛИНИИ СВЯЗИ НА УЧАСТКЕ ЖЕЛЕЗНОЙ ДОРОГИ 957.71 KB
  На основе разнообразных линий передачи создана собственная обширная ведомственная сеть электросвязи МПС, предназначенная для оперативного руководства технологическим процессом работы ж.д.транспорта