Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Разработка программ со скалярными типами данных

Поиск

(2 часа)

Цель работы: Рассмотреть и изучить скалярные типы данных С (int, char, float и др.) и их использование.

Теоретические сведения

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

Объявления переменных могут быть глобальными с классами памяти extern и static (вне функции main(), по умолчанию extern), и локальными с классами памяти auto, register (внутри блока, функции, например, внутри функции main(), по умолчанию auto).

Глобальные переменные инициализируются нулевым значением по умолчанию.

По умолчанию предполагается, что переменные являются знаковыми. Беззнаковые переменные описываются явно при помощи спецификатора insigned

Например:

int n1, n2, n3, n4; // множественное объявление переменных

n1=15; float weight =23.56; // объявление переменных и их инициализация

unsignid int exam; char ch =’+’, c=’A’;

char slash=’/’,Slash=’\’; // регистр у переменных различается slash не Slash

char str[ ]=’’строка символов’’; // инициализация строковой константой

char *pstr=’’строка символов’’;

В первом объявлении имеется список переменных, содержащих несколько имен (n1,n2,...). Все они имеют тип (int) (целое). Переменная exam целого типа, беззнаковая и объявлена отдельно. Если используются спецификаторы unsigned, long, short то спецификатор int можно опускать, так как переменные имеют тип int по умолчанию.

В С имеется множество предопределенных типов данных, включая несколько видов целых, указателей, переменных с плавающей точкой, массивов, объединений, структур и тип void (пустой). Слово void означает, например, что указатель может указывать на любой тип, функция не получает параметров или не возвращает значение. Скалярные типы включают символьные типы, целые, плавающие типы, указатели, ссылки и перечисления. Целые типы включают несколько разновидностей целых и символьных данных. Арифметические типы объединяют целые и вещественные (плавающие). Символьные типы: отдельные символы, литеральные строковые константы (символьные строки, символические константы). Строковые константы всегда заканчиваются нулем. В строковых константах могут быть управляющие последовательности (\n, \t, \\ и др.), которые допускаются везде, где могут быть печатные символы.

’’c:\\bc\\test\\f.c ’’

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

Каждый объект заданного типа занимает определенное число единиц памяти. За единицу принимается один байт. Число единиц памяти, требуемое для размещения элемента данного типа, может быть вычислено с использованием операции sizeof(<тип>) или sizeof(<объект_типа>). Ниже приведена таблица, показывающая основные типы данных, их размер и диапазон значений.

 

Таблица 3.1 - Размер и диапазон значений переменных различных типов

Тип Размер в байтах Диапазон значений
signed char   128...127
unsigned char   0...255
signed int   -32768...32767
unsigned int   0...65535
signed short   аналогично int
unsigned short   аналогично unsigned int
signed long   2147483648…2147483647
unsigned long   0...4294967295
float   -3.4е38...3.4e38
double   -1.7е308...1.7е308
long double   -1.7е308...1.7е308

Пользователь имеет возможность связать объявление типа данных с более простым и наглядным новым именем для этого типа данных (назначить псевдоним), используя средство # typedef с форматом typedef <объявление типа> <псевдоним>.

Например, определим новое имя для типа unsigned int

typedef unsigned int NATUR; // unsigned int с вязывается с именем –

// псевдонимом NATUR

NATUR i; // объявляем переменную i типа insigned int

Для запрета изменения значений переменных используется ключевое слово-модификатор const .

сonst int value16 = 0xf9ac; сonst unsignid int value8 = 0234; // переменные в

// шестнадцатеричном (ÆXddd ) и восьмеричном (Æddd) виде.

Для определения именованных констант и макроопределений (макросов) используют директиву препроцессора:

#define <ИМЯ> (argument 1[, argument 2…]) <подставляемый текст>

Директива создает временные имена (именованные константы), которые препроцессор заменяет на подставляемый текст, поэтому имена не являются объявлениями переменных.

#define STRING ’’\a\’’Hello, Wold! \’’\n’’

#define HEX 0x9b

#define DECIMAL 155

Глобальные переменные (extern, static) инициализируются нулевым значением по умолчанию.

Локальные переменные (auto, register) не инициализируются по умолчанию.

Пример

/* ЗАНЯТИЕ N 3

Разработал...........

Выполнить объявления типов, переменных с различными классами

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

вычислить значения переменных и вывести результаты расчетов.

Использовать макроопределение для выбора наибольшего значения*/

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<math.h>

enum en {NACH=0, N=10, MIN=1000};//Вместо следующих директив:

//(#define NACH 0) (#define N 10) (#define MIN 1000)

typedef int norm; //Объявление типа norm -синонима int

float x; //Объявление глобальной переменной (extern)

void main(void)

{clrscr();

norm i=NACH,j=NACH; //i,j-переменные типа int (norm)

static float min=MIN; //Объявление глобальной переменной (static)

auto float y=N, k=0; //Множественное объявление переменных (auto)

float a,b,c,d; //Множественное объявление переменных (auto)

printf("Значения переменных после инициализации:\

\n\t x\t y\t min\t k\t i\t j\n");

printf("%8.5f %8.5f %8.5e %8.5f %3d %3i\n",x,y,min,k,i,j);

printf("Введите значения переменных типа float:\n\ta, b, c, d:\n\t");

scanf("%f %f %f %f",&a,&b,&c,&d);

printf("Значения переменных после ввода с клавиатуры,\n\t a\t \

b\t c\t d\n");

printf("%8.5f %8.5f %8.5e %8.5f\n",a,b,c,d);

x=NACH+N;

y=a*x*x*x+b*x*x+c*x+d;

min=y+i*pow(y,2); //функция Y^2

k=x*sin(j);

x+= 0.1; //x=x+0.1;

printf("\n ЗHАЧЕHИЕ Y=%f",y);

printf("\n ЗHАЧЕHИЕ min=%10.5e",min);

printf("\n ЗHАЧЕHИЕ x=%10.5f",x);

printf("\n ЗHАЧЕHИЕ k=%3.1f\n ",k);

//-------------------------------------------

#define MAX(x,y) ((x)<(y)?(y):(x)); //Макроопределение MAX

//если (x)<(y), то значение результата -у, если (x)>(y), то -x

float af,bf,rez; //Множественное объявление переменных (auto)

printf(" Введите через пробел 2 числа:");

scanf("%f %f",&a,&bf);

rez=MAX(af,bf); //af, bf-фактические параметры

printf("Максимальное число: %4.2f ",rez);

getche();

}

/*Значения переменных после инициализации:

x y min k i j

0.00000 10.00000 1.00000e+05 0.00000 0 0

Введите значения переменных типа float:

a, b, c, d:

3 4 5 6

Значения переменных после ввода с клавиатуры,

a b c d

3.00000 4.00000 5.00000e+00 6.00000

ЗHАЧЕHИЕ Y=3456.000000

ЗHАЧЕHИЕ min=3.45600e+03

ЗHАЧЕHИЕ x= 10.10000

ЗHАЧЕHИЕ k=0.0

Введите через пробел 2 числа: 23.4 56.89

Максимальное число: 56.89 */

Ход работы

1 Изучить основные типы данных языка С, директивы процессора.

2 Разработать программу с использованием переменных различных типов. Индивидуальное задание приведено в табл.2. При объявлении переменных использовать typedef. Создать и использовать именованные константы. Для ввода и вывода значений использовать функции форматированного ввода-вывода scanf() и printf() с представлением значений в десятичном, шестнадцатеричном и восьмеричном виде, атакже getchar(), getche(), putchar() и др.

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

4 Использовать управляющие последовательности (эскейп последовательности) различного типа при выводе сообщений на экран.

5 К переменным, указанным в индивидуальном задании, добавить переменные других типов.

6 Оформить отчет и сделать выводы о проделанной работе, изучив контрольные вопросы по теме.

 

Индивидуальное задание к лабораторной работе №3

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

Таблица 3.2 - Индивидуальное задание

Вариант   Номер и содержание данных
               
  ФИО Рост Вес Год рождения Пол Рейтинг
  Название ЭВМ Тип процессора Объем памяти Тип дисплея Количество дисководов Стоимость
  Тип автомобиля Цвет Количество колес Количество мест Грузоподъемность Стоимость
  Тип автобуса Количество мест Грузоподъемность Номер маршрута Пункт назначения Время отправления
  ФИО Номер школы Класс Средний бал аттестата Любимый предмет Нелюбимый предмет
  Название магазина Вид товара Адрес Время работы Количество продавцов Номер магазина
  ФИО Вид спорта Личный рекорд Иностранный язык Срок занятий Количество знакомых слов
  Название фирмы Объем годового оборота ФИО директора Штат Стаж работы Возраст директора
  ФИО Наличие братьев и сестер Число Месяц Год рождения Вес
  Название книги Автор Издательство Дата издания Страна Количество страниц
  ФИО Номер в группе Название группы Курс Оценки Рейтинг
  Название велосипеда Количество колес Диаметр колес Цвет Грузоподъемность Скорость
  Название программного продукта Область применения Объем занимаемой памяти Операционная система Режим: текстовый или графический Стоимость
  Название рок группы Дата создания Стиль Состав группы Количество альбомов Стоимость билета
  ФИО Номер зачетной книжки Любимый предмет Оценки по математике средний бал Язык программирования
  Название журнала Возраст читателей Количество страниц Начало издания Тираж Подписной индекс
  Название самолета Дальность полета Количество мест Количество двигателей Время вылета Время в воздухе
  Название утюга Цена Страна производитель Вес Температура Наличие регулятора
  Город Страна Область Почтовый индекс Число жителей Площадь
  Операционная система Многозадачность Объем памяти Версия Фирма разработчик Стоимость

Требования к содержанию отчёта приведены в лабораторной работе №1.

Контрольные вопросы для подготовки и самостоятельной работы

1 Что означают символы: ’\r’, ’\f ’, ’\b’, ’\a’, ’\n’, ’\\’, ’\’’ ’, ’\’ ’, ’\000’, ’\0x00’, ’\0x0a’, ’\0x5c’?

2 Какие переменные относятся к скалярным, арифметическим, составным, символьным?

3 Почему в строке ’’c:\\bc\\test\\f.c’’ знак \ повторяется два раза?

4 Что означает ключевое слово signed?

5 Что означает ключевое слово #define, для чего используется?

6 Что означает ключевое слово const, для чего используется?

7 Что означает ключевое слово typedef, для чего используется?

8 Что означает ключевое слово #include, для чего используется?

9 Правильно ли выражение #include ’’c:\bc\test\my.h’’?

10 Что означают записи: 1254L, 34l, 0xf9ac, 0875, 76678UL?

11 Какой размер в байтах имеют базовые типы Си?

12 Где можно объявить переменную? Какой тип имеет переменная по умолчанию?

13 Что означает множественное объявление переменных?

14 Как определить размер типа в байтах?

15 Происходит ли инициализация переменной по умолчанию? В каких случаях?

16 Назовите класс памяти переменной по умолчанию. Зависит ли он от места объявления?

Лабораторная работа №4



Поделиться:


Последнее изменение этой страницы: 2016-04-26; просмотров: 355; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.80.121 (0.009 с.)