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;   

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

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

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

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


 

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

23326. Создание отчетов 143 KB
  Лабораторная работа №7: Создание отчетов По дисциплине: Базы данных. Цели работы: научиться быстро составлять отчет на основе стандартного; освоить технику разработки отчетов вывода отчетов на экран в файл; изучить все особенности работы в диалоговых окнах генерации отчетов; составить отчеты по теме самостоятельного проектирования. Отчет по работе: Контрольные вопросы: Объяснить структуру выполненных отчетов. Назначение инструментов для конструирования отчетов.
23327. Проектирование этикеток 76.5 KB
  Лабораторная работа №8: Проектирование этикеток По дисциплине: Базы данных. Цели работы: научиться быстро проектировать этикетки; освоить технику разработки этикеток вывода этикеток на экран в файл; составить этикетку по теме самостоятельного проектирования. Задание: Определите структуру этикетки: база данных для этикетки; название этикетки; порядок размещения полей в этикетке; порядок размещения этикеток на листе; размер этикеток.
23328. Локальные сети. Структура стандартов IEEE 802.x 158.5 KB
  Стандарты семейства IEEE 802.х охватывают только два нижних уровня семиуровневой модели OSI — физический и канальный. Это связано с тем, что именно эти уровни в наибольшей степени отражают специфику локальных сетей. Старшие же уровни, начиная с сетевого, в значительной степени имеют общие черты, как для локальных, так и для глобальных сетей.
23329. Макросы. Создание макросов 36.5 KB
  Отчет по работе: Открыть таблицу CtrlF1: USE{SPACEBAR}table1{SPACEBAR}AGAIN{SPACEBAR}IN{SPACEBAR}0{ENTER} SELECT{SPACEBAR}Table1{ENTER} BROWSE{SPACEBAR}LAST{ENTER} Удалить таблицу CtrlF2: Remove{SPACEBAR}Table{SPACEBAR}table1{ENTER} Установить отношение между таблицами CtrlR: SET{SPACEBAR}RELATION{SPACEBAR}TO{SPACEBAR}фамилия{SPACEBAR}INTO{SPACEBAR}Table2{SPACEBAR}ADDITIVE{ENTER} Модифицировать отчёт CtrlM: MODIFY{SPACEBAR}REPORT{SPACEBAR} c: artamonov базы данных visual foxpro9 save artlab10 report1.frx {SPACEBAR}NOENVIRONMENT{ENTER}...
23330. Генератор прикладных программ 91 KB
  Цель работы: научиться создавать стандартные приложения с помощью генератора FoxApp. Задание: Перед началом работы создать отдельный каталог для файлов приложения. Выполните генерацию стандартного приложения создавая или указывая базу данных на шаге 1. Проверьте работу стандартного приложения: стандартный экран форма ввода кнопки управления; меню стандартного приложения.
23331. Интегрированная cреда FoxPro for Windows 39 KB
  Задание на лабораторную работу: Создайте на диске Х: каталог под именем FOXPRO для хранения примеров. Войдите в среду FoxPro. Ознакомьтесь с интерфейсом FoxPro: изучите систему главного меню – пункты Файл Правка База Запись Программа Запуск Текст Окно; изучите способы выбора пунктов меню с помощью мыши комбинаций клавиш; повторите правила работы с окнами: закрыть открыть свернуть развернуть распахнуть переместить изменить размеры переключиться между окнами; ознакомьтесь с командами пунктов меню Окно и ; повторите...
23332. Создание структуры базы данных в СУБД FoxPro 166 KB
  Задание на лабораторную работу: Создайте структуру базы данных в соответствии с вашей темой расчетнографического задания. Изучите возможности среды СУБД FoxPro for Windows для создания структуры базы данных. Выполните просмотр содержимого базы данных.
23333. Сортировка и индексирование баз данных 244 KB
  Задание на лабораторную работу: Выполните сортировку по одному полю базы данных содержащей не менее 15 записей. Повторите сортировку для полей содержащих разные типы данных. Просмотрите результат сортировки в новой базе данных.
23334. Установка отношений между базами данных 233.5 KB
  Задание на лабораторную работу: Проверьте проект базы данных на предмет проектирования связей ключи первичные вторичные. В проекте базы данных предметной области выделите 2–3 связанные таблицы родственные таблицы. Просмотрите связанные базы данных на экране.