Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Цель работы Получение навыков в работе с типами данных языка C и в использовании функций стандартного выв

Работа добавлена на сайт samzan.net: 2016-03-30

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 14.5.2024

Практическая работа №4. Типы данных

1. Цель работы

Получение навыков в работе с типами данных языка C++ и в использовании функций стандартного вывода.

2. Темы для предварительной проработки

  •  Типы данных языка C++.
  •  Объявление и инициализация переменных.
  •  Функции стандартного вывода.

3. Теоретический материал

В Си++ имеется четыре базовых арифметических (числовых) типа данных. Из них два целочисленных — char, int, и два плавающих (вещественных) — float и double. Кроме того, в программах можно использовать некоторые модификации этих типов, описываемые с помощью служебных слов — модификаторов. Существуют два модификатора размера — short (короткий) и long (длинный) — и два модификатора знаков — signed (знаковый) и unsigned (беззнаковый). Знаковые модификаторы применяются только к целым типам.

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

Размер типа int и unsigned int зависит от размера слова операционной системы, в которой работает компилятор Си++. В 16-разрядных ОС (MS DOS) этим типам соответствуют 2 байта, в 32-разрядных (Windows) — 4 байта.

Типичные размеры значений и диапазоны представления

Анализируя данные таблицы, можно сделать следующие выводы:

  если не указан модификатор знаков, то по умолчанию подразумевается signed;

  с базовым типом float модификаторы не употребляются;

•    модификатор short применим только к базовому типу int.

Особенность - тип char причислен к арифметическим типам. Ведь даже его имя указывает на то, что это символьный тип! В Си/Си++ величины типа char могут рассматриваться в программе и как символы, и как целые числа. Все зависит от контекста, т.е. от способа использования этой величины. В случае интерпретации величины типа char как символа ее числовое значение является ASCII-кодом. Следующий пример иллюстрирует сказанное.

char  a=65;

printf("%с",а);     /*На   экране   появится   символ  А*/

printf("%d",a);/*На   экране   появится  число   65*/

Символы "%с" являются спецификацией формата ввода/вывода символьных данных, a "%d" — спецификацией для целых чисел.

Еще одной особенностью С++ является отсутствие среди базовых типов логического типа данных. Между тем, как мы дальше увидим, в С++ используются логические операции и логические выражения. В качестве логических величин в С++ выступают целые числа. Интерпретация их значений в логические величины происходит по правилу: равно нулю ложь, не равно нулю истина.

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

Описание переменных в программах на С++ имеет вид:

имя_типа   список_переменных;

Примеры описаний:

char  symbol, cc;

unsigned char code;

int number,row;

unsigned long long_number;

float x,X,cc3;

double e,b4;

long double max_num;

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

тип  имя_переменной  =  начальное_  значение

Например:

float  pi=3.14159, с=1.23;

unsigned  int  year=2000;

Константы. Запись целых констант. Целые десятичные числа, начинающиеся не с нуля, например: 4, 356, —128.

Целые восьмеричные числа, запись которых начинается с нуля, например: 016, 077.

Целые шестнадцатеричные числа, запись которых начинается с символов 0х, например: 0xlA, 0x253, 0xFFFF.

Тип константы компилятор определяет по следующим правилам: если значение константы лежит в диапазоне типа int, то она получает тип int; в противном случае проверяется, лежит ли константа в диапазоне типа unsigned   int, в случае положительного ответа она получает этот тип; если не подходит и он, то пробуется тип long и, наконец, unsigned  long.

Если значение числа не укладывается в диапазон типа unsigned long, то возникает ошибка компиляции.

Запись вещественных констант. Если в записи числовой константы присутствует десятичная точка (2.5) или экспоненциальное расширение (1Е-8), то компилятор рассматривает ее как вещественное число и ставит ей в соответствие тип double. Примеры вещественных констант: 44 .   3.14159  44Е0   1.5Е-4.

Использование суффиксов. Программист может явно задать тип константы, используя для этого суффиксы. Существуют три вида суффиксов: F (f) -float; U(u) —unsigned; L(l) - long (для целых и вещественных констант). Кроме того, допускается совместное использование суффиксов U и L в вариантах ul или LU.

Примеры:

3 .14159F — константа типа float, под которую выделяется 4 байта памяти;

3.14L  — константа типа long double, занимает 10 байт;

50000U — константа типа unsigned int, занимает 2 байта памяти (вместо четырех без суффикса);

0LU — константа типа unsigned long, занимает 4 байта;

24242424UL — константа типа unsigned long, занимает 4 байта.

Запись символьных и строковых констант. Символьные константы заключаются в апострофы. Например: 'А', 'а', '5', ' + '. Строковые константы, представляющие собой символьные последовательности, заключаются в двойные кавычки. Например: "rezult", "введите  исходные   данные".

Особую разновидность символьных констант представляют так называемые управляющие символы. Их назначение — управление выводом на экран. Как известно, такие символы расположены в начальной части кодовой таблицы ASCII (коды от 0 до 31) и не имеют графического представления. В программе на Си они изображаются парой символов, первый из которых ' \ '. Вот некоторые из управляющих символов:

'\n' — переход на новую строку;

'\t'   — горизонтальная табуляция;

'\а' — подача звукового сигнала.

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

Управляющие символьные последовательности являются частным случаем эскейп-последовательностей (ESC-sequence), с помощью которых можно задать символьную константу указанием ее кода. Код символа можно указать в восьмеричном или в шестнадцатеричном представлении. Формат восьмеричного представления: '\ddd'. Здесь d — восьмеричная цифра (от 0 до 7). Формат шестнадцатеричного представления: '\xhh' (или '\Xhh'), где h — шестнадцатеричная цифра (от 0 до F). Например, константа, соответствующая заглавной латинской букве А, может быть представлена тремя способами: 'А',   '\101',   '\х41'.

Именованные константы (константные переменные).

В программе на Си/Си++ могут использоваться именованные константы. Употребляемое для их определения служебное слово const принято называть квалификатором доступа. Квалификатор const указывает на то, что данная величина не может изменяться в течение всего времени работы программы. В частности, она не может располагаться в левой части оператора присваивания. Примеры описания константных переменных:

const  float pi=3.1415 9;

const   int   iMIN=l,    iMAX=1000;

Определение констант на стадии препроцессорной обработки программы. Еще одной возможностью ввести именованную константу является использование препроцессорной директивы #define в следующем формате:

#define  <имя   константы>   <значение  константы>

Например:

#define iMIN l

#define iMAX 1000

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

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

X=iMAX - iMIN;

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

Х=1000-1;

При этом идентификаторы iMAX и iMIN не требуют описания внутри программы.

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

enum   {A,B,C,D};

В результате имени А будет сопоставлена константа 0, имени B — константа 1, C — 2, D — 3. По умолчанию значение первой константы равно нулю.

Для любой константы можно явно указать значение. Например:  

enum   {A=10,B,C,D};

В результате будут установлены следующие соответствия: А=10, B=11,   С=12,    D=13.

Возможен и такой вариант определения перечисления:

enum   {A=10,B=20,C=35,D=100} ;

Если перечисляемому типу дать имя, то его можно использовать в описании переменных. Например:

enum metal   {Fe,Co,Na,Cu,Zn}; metal   Metl,Met2;

Здесь идентификатор metal становится именем типа. После такого описания в программе возможны следующие операторы:

Metl=Na;   Met2=Zn;

Определение размера памяти

sizeof   операция вычисления размера (в байтах) для объекта того типа, который имеет операнд. Разрешены два формата операции:

sizeof унарное_выражение

и

sizeof(тип).

4. Примеры программ для исследования типов данных

//podb01

#include <iostream.h>

#include <conio.h>

void main() {

clrscr();

cout << "\n sizeof 111 = " << sizeof 111;

cout << "\n sizeof 111 u = " << sizeof 111u;

cout << "\n sizeof 111L = " << sizeof 111L;

cout << "\n sizeof 111 ul = " << sizeof 111ul;

cout << "\n\t sizeof 40000 = " << sizeof 40000;

cout << "\n\t sizeof 40000u = " << sizeof 40000u;

cout << "\n\t sizeof 40000L = " << sizeof 40000L;

cout << "\n\t sizeof 40000LU = " << sizeof 40000LU;

cout<<"\n press any key one enter";

getch();

}

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

Результат выполнения программы:

sizeof 111 = 2

sizeof 111u = 2

sizeof 111L = 4

sizeof 111uL = 4

    sizeof 40000 = 4

    sizeof 40000u = 2

    sizeof 40000L = 4

    sizeof 40000LU = 4

/*ur10*/

#include <stdio.h>

#include <conio.h>

main(){

float a=3.14159f; float b,c,d,e;

clrscr();

b=50000l; c=78945L;  d=123LU;

printf("\n f   %f dlina=>%d",a,sizeof(a));

printf("\n l   %f dlina=>%d",b,sizeof(b));

printf("\n L   %f dlina=>%d",c,sizeof(c));

printf("\n LU  %f dlina=>%d",d,sizeof(d));

printf("\n LU  %4.2f dlina=>%d",d,sizeof(d));

e=2.58935E+3;

printf("\n exp  %f dlina=>%d",e,sizeof(e));

e=2.58935E-3;

printf("\n exp  %f dlina=>%d",e,sizeof(e));

e=-2.58935E+3;

printf("\n exp  %f dlina=>%d",e,sizeof(e));

 d=24242424UL;

 printf("\n 24242424  %f dlina=>%d",d,sizeof(d));

 d=1234567890UL;

 printf("\n 1234567890  %f dlina=>%d",d,sizeof(d));

printf("\n 1234567890  %10.0f dlina=>%d",d,sizeof(d));

a=3.14L;

printf("\n 3.14L  %f dlina=>%d",a,sizeof(a));

gotoxy(1,15);

printf("Press any key");

 getch();

return 0;

}

/* результат работы

f   3.141590 dlina=>4

 l   50000.000000 dlina=>4

L   78945.000000 dlina=>4

LU  123.000000 dlina=>4

LU  123.00 dlina=>4

exp  2589.350098 dlina=>4

exp  0.002589 dlina=>4

exp  -2589.350098 dlina=>4

24242424  24242424.000000 dlina=>4

1234567890  1234567936.000000 dlina=>4

1234567890  1234567936 dlina=>4

3.14L  3.140000 dlina=>4

Press any key */

5. Задание

Составить программу, демонстрирующую:

  •  Объявление данных различных типов.
  •  Моделирование ситуации переполнения для целых и плавающих типов данных.
  •  Использование операции sizeof.
  •  Особенности типа char.
  •  Особенности объявления в программе и вывода констант.
  •  Вывод на экран символов ASCII кода.

PAGE  5




1. выпускника неязыкового вуза в том числе и на иностранном языке осуществляется в различных сферах общения
2. Управление подготовкой и формированием персонала- осуществление социальнодемографической политики; оп
3. е гг. в нашей стране произошли существенные изменения
4. 70 мг. Почти 80 населения Земли имеют две пары околощитовидных желез
5. Принципы квалиметрии- 1
6. Жюль Верн, как первооткрыватель Интернета
7. Тема- Расчет схемы дробления измельчения грохочения и классификации руды и выбор оборудования Авт
8. Лабораторная работа ’2 Определение КПД короткозамкнутого асинхронного двигателя методом разделения потер
9.  Статистика капитальных вложений Инвестиции ~ это долгосрочные вложения капитала в объекты предпринима
10. Тема 1- Концептуальні засади управлінських інформаційних систем в аналізі та аудиті 2 години 1.html
11. Реферат- Пожарно-тактические занятия
12. Тема- Основные признаки присутствия на компьютере вредоносных программ
13. Тема 89. Инновационные технологии обучения 1
14. Определение расстояний до звезд и планет
15. Note ~ this one n ctul note ~ sying tht he hs to leve-
16. тематике; использовать справочный аппарат дополнительные источники и информационные технологии для о
17. то беседуют шепотом передают друг другу тайну
18. 0182 ПРИЛОЖЕНИЕ 4 ~осымша 4 Справочное НАПРАВЛЕНИЕ И СКОРОСТЬ ВЕТРА ЖЕЛДІ~ БА~ЫТЫ МЕН ЖЫЛДАМДЫ~Ы
19. Статья- Атомная энергия и человек
20. Гидрохимический индекс загрязнения воды и показатель химического загрязнения вод