Основные типы данных в СИ. Консольный ввод-вывод данных.

Справочная информация

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

<спецификатор типа> <описатель> [=<инициализатор>];

<спецификатор типа> - одно или несколько ключевых слов, определяющих тип объекта;

<описатель> - элемент описания, по которому устанавливаются имя и структура объекта (при описании простой переменной описатель представляет собой идентификатор, при описании массива за его именем указываются открывающая и закрывающая квадратные скобки и т.д.);

<инициализатор> - начальное значение (список начальных значений), присваиваемых объекту при его объявлении.

Наиболее часто используемые простейшие типы данных приведены в таблице.

Таблица

Обозначение (ключевое слово) Наименование Значение объекта
int Целый Целое число
float С плавающей точкой одинарной точности Вещественное число
double С плавающей точкой двойной точности
char Символьный Символ

При организации ввода информации с клавиатуры и вывода ее на дисплей (консольного ввода-вывода данных) в Си-программах используются стандартные библиотечные функции. Для обеспечения возможности обращения к ним в программе обязательно должна указываться директива препроцессора Include<stdio.h>

Различают два вида консольного ввода-вывода: форматированный и неформатированный.

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

printf (“<строка формата>” [,<аргументы>]); где:

строка формата - совокупность необязательных символов, задаваемых программистом, и спецификаций формата преобразования данных;

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

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

%[<флаг>][<ширина>][.<точность>]<тип преобразования > где:

<флаг> - символ, устанавливающий форму вывода (“-“ - выравнивание влево, “+” – вывод знака числа и т.д.);

<ширина> - число, устанавливающее максимальную ширину поля вывода;

<точность> - число, устанавливающее максимальное количество позиций после десятичной точки, предназначенных для вывода данных;

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

Используются следующие символы для задания типа преобразования данных при их выводе:

c – вывод одного символа;

d - вывод десятичного целого числа;

f - вывод десятичного вещественного числа в естественной форме представления;

e - вывод десятичного вещественного числа в экспоненциальной форме представления;

s - вывод строки символов.

Три первых элемента записи спецификации формата преобразования в функции printf (флаг, ширина, точность) являются необязательными

Запись оператора обращения к стандартной функции форматного консольного ввода имеет вид

scanf (“<строка формата>” [,<адреса аргументов>]); где:

<строка формата> - совокупность спецификаций формата преобразования данных, разделяемых между собой пробельными символами;

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

В отличие от функции printf в функции scanf в качестве аргументов используются не имена объектов, а их адреса. Для того чтобы указать адрес объекта нужно перед его именем записать символ “&” (символ амперсанд).

Спецификация формата преобразования данных в функции scanf имеет общий вид записи

%[<ширина>]<тип преобразования >, где:

<ширина> - необязательное число, устанавливающее максимальную ширину поля ввода;

<тип преобразования> - обязательный символ, указывающий как должны трактоваться дан­ные, вводимые с клавиатуры, при помещении их в память компьютера.

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

c – ввод одного символа;

d - ввод десятичного целого числа;

g - ввод десятичного вещественного числа;

s - ввод строки символов.

Неформатированный ввод-вывод обеспечивает за одно обращение к библиотечной функции обработку только одного объекта данных, значениями которых могут быть одиночные символы и их последовательности. Для ввода одиночного символа используется функция getchar. Пример записи оператора обращения к ней имеет вид

Sy = getchar( );

По этому оператору функция getchar считывает введенный с клавиатуры символ и помещает его в оперативную память компьютера по адресу переменной Sy.

Кроме функции getchar имеется аналогичная ей функция getch. Она осуществляет ввод одиночного символа с клавиатуры компьютера без копирования на экран. Это делает ее очень удобной для организации паузы при исполнении программы. Как только встретиться оператор

Getch( );

компьютер переходит в режим ожидания ввода символа и никаких действий не производится до тех пор, пока не будет нажата какая-либо клавиша.

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

putchar (<аргумент>); где:

<аргумент> - имя выводимого объекта (аргументом может быть символьная константа).

Неформатированный ввод-вывод символьных строк выполняют соответственно функции

gets(<имя строки>) и puts(<имя строки>)

В них имя <имя строки> - область памяти, в которой хранится символьная строка.

Задание.

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

Имя объекта Значение объекта
   
   
   
   

Перед завершением работы программы организовать паузу для просмотра результатов.

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

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

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