68975

Ввід, вивід на консоль. Модифікатори

Лекция

Информатика, кибернетика и программирование

Достатньо часто для виводу інформації з ЕОМ в програмах використовується функція printf(). Вона переводить дані з внутрішнього коду в символьне уявлення і виводить отримані зображення символів результатів на екран дисплея. При цьому у програміста є можливість форматувати дані, тобто впливати на їх уявлення на екрані дисплея.

Украинкский

2014-09-28

46 KB

0 чел.

Лекція № 2

Тема: Ввід, вивід на консоль. Модифікатори.

План заняття:

  1.  Функція фор матованого виводу
  2.  Функція фор матованого вводу
  3.  Початкова програма

Функція форматованого виводу

Достатньо часто для виводу інформації з ЕОМ в програмах використовується функція printf(). Вона переводить дані з внутрішнього коду в символьне уявлення і виводить отримані зображення символів результатів на екран дисплея. При цьому у програміста є можливість форматувати дані, тобто впливати на їх уявлення на екрані дисплея.

Можливість форматування умовно відзначена в самому імені функції за допомогою літери f в кінці її назви {print formatted). Оператор виклику функції printf( ) можна представити так:

printf (рядок формату, список аргументів);

Рядок формату обмежений подвійними лапками і може включати довільний текст, управляючі символи і специфікації перетворення даних. Список аргументів (з попередньою комою) може бути відсутній. Наприклад:

#include <stdio.h>

void main( )

{

printf ("\n Привіт світ!\n");

}

Директива #include <stdio.h> включає в текст програми опис (прототип) бібліотечної функції printf(). (Якщо видалити з тексту програми цю препроцесорну директиву, то з'являться повідомлення про помилки і виконуваний код програмы не буде створений.

Серед параметрів функції printf() є в даному прикладі тільки рядок формату (список аргументів відсутній). В рядку формату два управляючих символа '\n' - "перевід рядка".

Управляючі символи (переклад рядка, табуляція і т.д.) дозволяють впливати на розміщення інформації, що виводиться, на екрані дисплея.

Специфікатори функції

Специфікації перетворення даних призначені для управління формою зовнішнього представлення значень аргументів функції printf(). Узагальнений формат специфікації перетворення має вигляд:

%прапорці ширина_поля.точність модифікатор специфікатор.

Серед елементів специфікації перетворення обов'язкові є тільки два - символ '% ' і специфікатор. В задачах обчислювального характеру використовуються специфікатори:

d - для цілих десяткових чисел (тип int);

і - для цілих десяткових чисел без знака (тип unsigned);

f - для дійсних чисел у формі з фіксованою крапкою (типи float і double);

е - для дійсних чисел у формі з плаваючою крапкою (з мантисою і порядком) - для типів double і float.

В список аргументів функції printf() включають об'єкти, значення яких повинні бути виведені з програми. Це вирази і їх окремі випадки - змінні і константи. Кількість аргументів і їх типи повинні відповідати послідовності специфікацій перетворення в рядку формату. Наприклад, якщо дійсна змінна summa має значення 2102.3, то при такому виклику функції

printf("\n summa=%f", summa);

на екран з нового рядка буде виведений: summa=2102.3

Після виконання операторів

float  с, е;

int  k;

с=48.3;   к=-83;   е=16.33;

printf   ("\nc=%f\tk=%d\te=%e",   з,   до,   е);

на екрані вийде такий рядок:

с=48.299999        к=-83          е=1.б3300е+01

Для виведення числових значень в специфікації перетворення корисні "ширина_поля" і "точність".

Ширина_поля - ціле позитивне число, яке визначає довжину (в позиціях на екрані) представлення значення яке виводиться.

Точність - ціле позитивне число, яке визначає кількість цифр в дробовій частині зовнішнього представлення дійсного числа (з фіксованою крапкою) або його мантиси (при використанні форми з плаваючою крапкою).

Приклад з тими ж змінними:

printf   ("\nc=%5.2\tk=%5d\te=%8.2f\te=%11.4e",   с, k,e,е);

Результат на екрані:

с=48.30       к= -83       e= 6.33       е=  1.6330e+01

Модифікатори функції

Як модифікатори в специфікації перетворення використовуються символи:

h - для виведення значень типу short int;

1 - для виведення значень типу long;

L - для виведення значень типу long double.

При необхідності вивести на екран (на друк) парні лапки або апострофи їх представляють за допомогою відповідних послідовностей: \" або \', тобто замінюють парами літер. Зворотня коса межа '\'  для однократного виводу на екран повинна бути двічі включена в рядок формату. При необхідності вивести символ % його в рядок формату включають двічі: % %.

Функція форматованого вводу

Для введення даних з клавіатури ЕОМ в програмі використовують функцію (описана в заголовочному файлі stdio.h): scanf (рядок формату, список_аргументів);

Функція scanf() виконує "читання" кодів, які вводяться з клавіатури. Це можуть бути як коди видимих символів, так і управляючі коди, що поступають від допоміжних клавіш і від їх поєднань. Функція scanf( ) сприймає коди, перетворюя їх у внутрішній формат і передає програмі. При цьому програміст може впливати на правила інтерпретації вхідних кодів за допомогою специфікацій рядка формату. (Можливість форматування умовно відзначена в назві функції за допомогою літери f в кінці імені.) рядок формату, і список аргументів для функції scanf( ) обов'язкові. Рядок формату для функції scanf() формуватимемо із специфікацій перетворення вигляду:

% * ширина_поля модифікатор специфікатор

Специфікатори

Серед елементів специфікації перетворення обов'язкові тільки % і специфікатор. Для введення числових даних використовують  специфікатори:

d - для цілих десяткових чисел (тип int);

і - для цілих десяткових чисел без знака (тип unsigned int);

f- для дійсних чисел (тип float);

е - для дійсних чисел (тип float).

Ширина_поля - ціле позитивне число, яке дозволяє визначити, яка кількість байтів (символів) з вхідного потоку відповідає значенню, яке вводиться.

Зірочка '*' в специфікації перетворення дозволяє пропустити у вхідному потоці байти відповідного значення, які вводяться.

Модифікатори

Як модифікатори використовуються символи:

h - для введення значень типу short int (hd);

1 - для введення значень типу long int (ld) або double (lf, le);

L - для введення значень типу long double (Lf, Le).

На відміну від функції printf() аргументами для функції scanf( ) можуть бути тільки адреси об'єктів програми, в частному випадку - адреси її змінних. В мові Сі є спеціальна унарна операція & отримання адреси об'єкту:

& ім'я_об'єкту

Вираз для отримання адреси змінної буде таким:

& ім'я_змінної

Отже, для позначення адреси перед ім'ям змінної записують символ &. Якщо name - ім'я змінної, то &name — її адреса. Наприклад, для введення з клавіатури значень змінних n, z, х можна записати оператор:

scanf   ("%d%f%f",&n,&z,&x);

В даному прикладі специфікації перетворення у форматному рядку не містять відомостей про розміри полів і точність значень, що вводяться. Це дозволено і дуже зручно при введенні даних, діапазон значень яких визначений не строго. Якщо змінна n описана як ціла, z і х - як дійсні типу float, то після читання з клавіатури послідовності символов 18  18   -0.431 змінна n отримає значення 18, z-значение 18.0, х - значення -0.431.

При читанні вхідних даних функція scanf() (в якій специфікації не містять відомостей про довжини вводимих значень) сприймає як роздільники полів даних "узагальнені  пробільні  символи"  -  власне  пропуски, символи табуляції, символи нових рядків. Зображення цих символів на екрані відсутні, але у них є коди, які "вміє" розпізнавати функція scanf( ). При наборі вхідної інформації на клавіатурі функція scanf() починає введення даних після натиснкання клавіші <Enter> (перехід на новий рядок). До цього набираючі на клавіатурі символи поміщаються в спеціально виділену операційною системою область пам'яті—в буфер клавіатури і одночасно відображаються на екрані у вигляді рядка введення. До натискання клавіші <Enter> дозволено редагувати (виправляти) дані, підготовлені в рядку введення.

Початкова програма

Початкова програма є сукупністю наступних елементів: директив препроцесора, вказівок компілятору, оголошень і визначень. Директиви препроцесора специфікують дії препроцесора по перетворенню тексту програми перед компіляцією. Вказівки компілятору— це спеціальні інструкції, яким компілятор мови Сі слідує під час компіляції. Оголошення змінної задає ім'я і атрибути змінної. Визначення змінної, крім завдання її імені і атрибутів, приводить до виділення для неї пам'яті. Крім того, визначення задає початкове значення змінної (явно або неявно). Оголошення функції задає її ім'я, тип значення, яке повертається, і може задавати атрибути її формальних параметрів.

Визначення функції специфікує тіло функції, яке є складовий оператор (блок), який містить оголошення і оператори. Визначення функції також задає ім'я функції, тип значення, яке повертається, і атрибути її формальних параметрів. Оголошення типу дозволяє програмісту створити власний тип даних. Воно полягає в присвоєнні імені деякому базовому або складовому типу мови Сі. Для типу поняття оголошення і визначення співпадають.

Початкова програма може містити довільне число директив, вказівок компілятору, оголошень і визначень. Порядок появлення цих елементів в програмі дуже важливий; в якості, він впливає на можливість використання змінних, функцій і типів в різних частинах програми

Для того, щоб програма на мові Сі могла бути скомпільована і виконана, вона повинна містити по крайній мірі одне визначення—визначення функції. Ця функція визначає дії, які виконуються програмою. Якщо ж програма містить декілька функцій, то серед них виділяється одна головна функція, яка повинна мати ім'я main. З неї починається виконання програми; вона визначає дії, які виконуються програмою, і викликає інші функції. Порядок проходження визначень функцій в початковій програмі не є суттєвим. Якщо програма містить тільки одну функцію, то вона і є головною (і повинна мати ім'я main). В наступному прикладі приведена проста програма на мові Сі:

int х = 1;       /* визначення змінних */

int у = 2;

extern int printf(char * ...);   /* оголошення функції */

main()     /* визначення головної функції */

{

int z;        /* обьявления змінних */

int w;

z = у + х;       /* виконувані оператори */

w = у-х;

printf('z = %d\nw = %d\n", z, w);

}

Ця початкова програма визначає функцію з ім'ям main і оголошує функцію printf. Змінні х і у визначаються на зовнішньому рівні, а змінні z і w оголошуються всередині функції.


 

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

30694. «Отцы и дети» в одноименном романе И.С. Тургенева 14.14 KB
  Все эти новомодные веяния вызывают у Кирсанова возмущение и гнев. Все слова Кирсанова – лишь слова так как не подкреплены никаким действием. Базарову человеку стремительному деятельному претит все из чего состоит Кирсанов.В финале романа мы узнаем что Кирсанов переехал в Германию и что сами немцы принимают его за англичанина.
30695. Типы носителей информации и их особенности 109.15 KB
  В современном обществе, где информация проблема носителей информации встала очень остро, так как объемы информации, генерируемые пользователями, возрастают в геометрической прогрессии.
30696. Мотив дороги в произведениях отечественной классики 19 века 25.31 KB
  Есенина Мотив дороги звучит в двух значительнейших произведениях 19 века. Образ дороги в этом произведении не выходит на первый план. Образ дороги здесь – традиционный символ жизненного пути.
30697. Стихотворное новаторство В.В. Маяковского. Чтение наизусть и анализ стихотворения «А вы могли бы?» 12.76 KB
  Чтение наизусть и анализ стихотворения А вы могли бы. Тема этого стихотворения – желание и способность лирического героя изменить в корне обыденную ни чем не примечательную жизнь причем сделать это так как никто другой и не подумал бы. Идея же заключается в названии стихотворения и в последних строках:А вы ноктюрн сыграть могли быНа флейте водосточных трубКаждая строка этого стихотворения – вызов каждое слово – экспрессивно и ярко; при своей лаконичности стихотворение оставляет более глубокое впечатление чем многие более длинные...
30698. Психологизм изображения внутреннего мира личности в лирике А.А.Ахматовой (на примере 3–4 стихотворений по выбору экзаменуемого). Земное и вечное в стихотворении «Приморский сонет» 15.95 KB
  Облик героини поэзии Ахматовой предстает в житейской простоте но в нем заключается пафос сильной личности. Ее лирическая героиня не отражает персональной судьбы Ахматовой а отражает проявление женской доли женского голоса. Предметный мир воспринимается уже в ином виде: три ступеньки кажутся вечностью любимый прием Ахматовой – оксюморон темный дом свечи горевшие равнодушножелтым огнем. То в образе лирической героини проступают черты самой Ахматовой которая не верит что все происходит именно с ней – насмешницей любимицей всех...
30699. Стихотворение А. Блока «Незнакомка» 12.25 KB
  Блока Незнакомка Тема страшного мира звучит в третьем томе стихотворений А. Это лишь внешняя видимая сторона страшного мира. При этом все зримые образы материального мира у Блока обретают символический подтекст. Повествование о ресторанной встрече превращается в рассказ о человеке угнетенном пошлостью окружающего мира его стремлении освободиться от этого.
30700. АНАЛИЗ 1 ГЛАВЫ 1 ЧАСТИ «МАСТЕРА И МАРГАРИТЫ» 20.62 KB
  Патриавшие пруды это центр Москвы давно пользующийся дурной славой Время года месяц: Весна май Время суток: Небывало жаркий закат странности возникающие в это время на Патриарших: одновременная икота литераторов; отсутствие в жаркое время отдыхающих под липами; появление прозрачного человека в клетчатом пиджаке; чувство необоснованного страха появившегося у Берлиоза...
30701. Анализ романа Замятина Мы 19.86 KB
  Солженицын1 История создания и смысл названия романа: Роман создавался вскоре после возвращения автора из Англии в революционную Россию в 1920 году по некоторым сведениям работа над текстом продолжалась и в 1921 году. Первая публикация романа состоялась за границей в 1924 году. В случае с названием романа Мы и с героем романа это утверждение особенно справедливо.
30702. Приём антитезы в произведениях русской литературы 2-й половины XIX века. Ф.М. Достоевский «Преступление и наказание» 132.77 KB
  I антитеза ос6новное идейно композиционный принцип романа Преступление и наказание II функции антитезы. Приём антитезы при создании образа главного героя: А замечательная внешность Раскольникова и одежда нищего; Б описание каморки и страшная теория Раскольникова; В бесчеловечность теории и её неприятие сердцем сны Раскольникова. Приём антитезы в основе системы персонажей: А двойники Раскольникова Лужин и Свидригайлов; Б правда Сони Мармеладовой и правда Раскольникова.