Оператори введення і виведення в мові програмування Сі

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Лабораторна № 1 "Оператори введення і виведення в мові програмування Сі + +"

1. Теоретичні відомості

1.1 Структура програми

Мета роботи: вивчити оператори введення і виведення, формати, що використовуються в цих операторах. Оформити закінчену програму із застосуванням цих операторів.

У мові СІ будь-яка програма складається з однієї або більше функцій, що задають дії, які потрібно виконати. Виконання будь-якої програми починається з функції main. Далі йде текст програми, укладений у фігурні дужки. Таким чином, структура програми має вигляд:

main ()

{

Тіло програми

}

У самому простому випадку функція main не має аргументів, тому в дужках нічого не міститься. Для роботи програми, що забезпечує введення і виведення інформації, перед функцією main необхідно помістити рядок:

# Include <stdio.h>

1.2 Алфавіт мови і типи даних

Алфавіт мови включає латинські великі / малі літери, цифри та спеціальні знаки. До останніх відносяться:. (Крапка),, (кома), '(апостроф),: (двокрапка) та ін

Важливим поняттям мови є ідентифікатор, який використовується в якості імені об'єкта, наприклад, змінної, функції і т.п. Ідентифікатор може містити до 32 символів і складається з букв і цифр, але починається обов'язково з літери. Малі букви відрізняються від прописних, тому ідентифікатори SIGMA та sigma вважаються різними.

У мові СІ існує кілька типів даних. Кожен тип даних визначається одним з таких ключових слів:

  1. int (цілий) - задає значення, до яких відносяться всі цілі числа. Діапазон можливих цілих значень лежить в межах від -32768 до 32767, змінна типу int займає 16 біт;

  2. short (короткий цілий) - відповідні об'єкти не можуть бути більше, ніж int, змінні цього типу займають 16 біт;

  3. long (довгий цілий) - відповідні об'єкти не можуть бути менше, ніж int. Змінна типу long займає 32 біта і дозволяє представити цілі числа від -2147483648 до 2147483647;

  4. char (символьний) - задає значення, які представляють різні символи;

  5. unsigned (беззнакових) - у мові ЗІ можна оголошувати деякі типи (char, short, int, long) беззнаковими за допомогою модифікатора unsigned (наприклад, unsigned short). Це означає, що відповідні змінні не будуть мати негативних значень. У результаті вони можуть приймати великі позитивні значення, ніж змінні знакових типів. У випадку типу int оголошення виду «unsigned int a;» можна записати «unsigned a;»;

  6. float (речовий) - задає значення, до яких належать дійсні числа, що мають дробову частину, відокремлювану точкою. Дійсні числа можуть бути записані також у експоненційної формі. Наприклад,-1.58е +2 (що дорівнює -1,58 · 10 2). У мові СІ змінна типу float займає 32 біта. Вона може приймати значення в діапазоні від +3.4 е-38 до +3.4 е +38;

  7. double (подвійна точність) - визначає речові змінні, що займають у два рази більше місця, ніж змінна типу float. Змінна типу double займає 64 біта. Вона може приймати значення в діапазоні від +1.7 е-308 до +1.7 е +308.

1.3 Введення і виведення інформації

1.3.1 Форматний висновок

Спочатку розглянемо функцію, що визначає форматний висновок:

printf ("керуюча рядок", аргумент1, аргумент2, ...);

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

Кожна специфікація перетворення починається зі знака% і закінчується деяким символом, що задає перетворення.

Символ перетворення пов'язаний з типом змінних. наведемо символи перетворення:

  1. d - значенням аргументу є десяткове ціле число;

  2. o - значенням аргументу є вісімкове ціле число;

  3. x - значенням аргументу є шістнадцяткове ціле число;

  4. c - значенням аргументу є символ;

  5. s - значенням аргументу є рядок символів;

  6. e - значенням аргументу є дійсне число в експоненційної формі;

  7. f - значенням аргументу є речовий десяткове число з плаваючою точкою;

  8. u - значенням аргументу є беззнаковое ціле число;

  9. p - значенням аргументу є покажчик (адреса).

Якщо після знака% записаний не символ, то він виводиться на екран. Функція printf використовує управляючу рядок, щоб визначити, скільки всього аргументів і які їх типи.

Наприклад, в результаті роботи програми отримані мінлива i, що має значення 100, і змінна j, що має значення 25. Обидві змінні цілого типу. Для виведення цих змінних на екран у вигляді

i = 100 j = 25

необхідно застосувати функцію

printf ("i =% dj =% d", i, j);

Як було описано вище, в лапках задається формат виводу. перед знаком% записуються символи, які будуть безпосередньо видані на екран. Після знака% застосована специфікація d, тому що змінні i і j мають цілий тип. Самі i і j наведені через кому в списку аргументів. Якщо результат повинен бути представлений у вигляді

i = 100; j = 25

необхідно застосувати функцію

printf ("i =% d; j =% d, i, j);

Якщо після знака% стоїть цифра, то вона задає поле, в якому буде виконаний висновок числа. Наведемо кілька функцій printf, які будуть забезпечувати виведення однієї і тієї ж змінної S цілого типу, що має значення 336.

Функція printf ("% 2d", S); видає на екран:

336

У цьому прикладі ширина поля (вона дорівнює двом) менше, ніж кількість цифр у числі 336, тому поле автоматично розширюється до необхідного розміру.

Функція printf ("% 6d", S);

видасть на екран:

_ _ _336

(6 позицій)

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

Функція printf ("%-6d", S);

видасть на екран:

336_ _ _

(6 позицій)

Знак «мінус» перед специфікацією призводить до зрушення числа до лівого краю поля.

Розглянемо висновок дійсних чисел.

Якщо перед специфікацією f нічого не вказано, то виводиться число з шістьма знаками після коми. при друку числа з плаваючою крапкою перед специфікацією f теж можуть перебувати цифри.

Розглянемо на конкретному прикладі три можливі ситуації:

% 6f - друк числа з плаваючою точкою в полі з шести позицій;

% .2 F - друк числа з плаваючою точкою з двома цифрами після десяткової точки;

% 6.2f - друк числа з плаваючою точкою в полі з шести позицій і двома цифрами після десяткової точки.

Наприклад, в результаті роботи програми отримані змінні дійсного типу а = 3,687 і b = 10,17.

Якщо для виведення значень використана функція

printf ("% 7f% 8f", a, b);

то результат буде представлений у вигляді рядка:

_ _ _ _ _ 3.687 _10.17

(7 поз.) (8 позицій)

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

printf ("% .2 f% / 2f", a, b);

то результатом буде стрічка:

3.69 10.17,

з якої випливає, що в першому числі третя цифра після десяткової точки відкинута з округленням, тому що зазначений формат числа з двома цифрами після десяткової точки.

Якщо для виведення значень використана функція

printf ("% 7.2fe", a, b);

то буде виведено рядок:

_ _ _ 3.681.010000е +01

(7 позицій)

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

Як було зазначено вище, в управляючій рядку можуть міститися керуючі символьні константи. Серед керуючих символьних констант найбільш часто використовуються наступні:

  1. \ A - для короткочасної подачі звукового сигналу;

  2. \ B - для переведення курсору вліво на одну позицію;

  1. \ N - для переходу на новий рядок;

  2. \ R - для переведення курсора в початок поточного рядка;

  3. \ T - для горизонтальної табуляції;

  4. \ V - для вертикальної табуляції.

Припустимо, в результаті роботи програми мінлива i отримала значення 50. У результаті запису інструкції виклику функції

printf ("\ t ЕОМ \ n% d \ n", i);

спочатку виконається горизонтальна табуляція (\ t), тобто курсор зміститься від краю екрана на 8 позицій, потім на екран буде виведено слово "ЕОМ", після цього курсор переміститься на початок наступного рядка (\ n), потім буде виведено ціле значення i за форматом d, і остаточно курсор перейде в початок нового рядка (\ n). Таким чином, результат роботи цієї функції на екрані буде мати вигляд:

_ _ _ _ _ _ _ _ ЕОМ

50

1.3.2 Введення даних

Для форматного введення даних використовується функція

scanf («керуюча рядок», аргумент1, аргумент2 ,...);

Якщо в якості аргументу використовується змінна, то перед її ім'ям записується символ &.

Управляюча рядок містить специфікації перетворення і використовується для встановлення кількості і типів аргументів. специфікації для визначення типів аргументів такі ж, як і для функції printf. Перед символами d, o, x, f може стояти літера l. У перших трьох випадках відповідні змінні повинні мати тип long, а в останньому double.

Розглянемо приклад. Потрібно вказати значення для змінних i (цілого типу) і a (дійсного типу). Це завдання виконає функція:

scanf ("% d% f", & i, & a);

У керуючій рядку специфікації трьох типів можуть бути відокремлені один від одного різними знаками, в тому числі і пробілом. Отже, при занесенні значень змінних необхідно використовувати вказаний роздільник. Якщо специфікації не відділені одна від одної ніякими значеннями, то значення змінних заносяться через пробіл.

У мові СІ є дві дуже зручні функції puts і gets, що дозволяють вводити і виводити рядок символів. Приклад їх використання показаний нижче:

# Include <stdio.h>

main ()

{

char q [40]; / * оголошення рядка символів * /

puts ("Введіть рядок символів");

gets (q) / * введення рядка символів * /

puts (q) / * висновок рядка символів * /

}

У результаті роботи програми спочатку на екрані з'явиться текст:

Введіть послідовність символів,

після чого слід ввести яку-небудь рядок символів. Ця інформація за допомогою оператора gets буде привласнена елементам символьного масиву q. Оператор puts виведе рядок символів.

    1. Оператори та вирази

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

змінна = вираз;

У мові СІ може бути використаний модифікатор const, що забороняє які б то не було перевизначення константи: її зменшення, збільшення і т.п. Модифікатор const, використовуваний окремо, еквівалентний const int. Наведемо приклади:

const float a = 3.5;

const j = 47;

У таблиці 1 наведені арифметичні операції, використовувані в мові СІ.

Таблиця 1

Знак операції

Виконання дії

+

Додавання

-

Віднімання

*

Множення

/

Розподіл

%

Розподіл по модулю

Результатом розподілу по модулю є залишок від ділення. Наприклад, якщо b = 5, c = 2, то при виконанні операції

а = b% c,

змінна а отримає значення 1.

Широке поширення знаходять також вирази з ще однією нетрадиційної терпарной операцією?:. У вираженні

у = х? а: b,

у = а, якщо х не дорівнює нулю, і в = b, якщо х дорівнює нулю. Наступне вираз

у = (а> b)? a: b;

дозволяє привласнити змінній y значення більшою змінної (а чи b), тобто y = max (a, b).

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

Таблиця 2

Математичний запис

Запис на мові СІ

| X |

int abs (int X)

| X |

float fabs (float X)

arccos X

double acos (double X)

arcsin X

double asin (double X)

arctg X

double atan (double X)

cos X

double cos (double X)

sin X

double sin (double X)

tg X

double tan (double X)

e X

double exp (double X)

ln X

double log (double X)

log X

double log10 (double X)

√ X

double sqrt (double X)

X Y

double pow (double X, double Y)

Перед аргументом і функцією вказаний допустимий тип (при програмуванні цей запис типу опускається).

У програмах на мові СІ важлива роль відводиться коментарям, які підвищують наочність і зручність читання програм. Вони можуть бути записані в будь-якому місці програми і обрамляються символами / * і * /.

Розглянемо приклад програми мовою СІ.


Потрібно обчислити:

Для роботи з математичними функціями необхідно перед функцією main помістити рядок:

# Include <math.h>

Програма на СІ має вигляд:

# Include <stdio.h>

# Include <math.h>

main ()

{

float z, f, k; / * оголошення дійсних змінних z, f, k * /

double y, a, b, c, d, x; / * оголошення змінних y, a, b, c, d, x змінними подвійної точності * /

scanf ("% f% f% f% lf% lf", & z, & f, & k, & d, & x) / * введення з клавіатури змінних z, f, k, d, x * /

a = log (x) + (z + f) / k;

b = sin (x) + tan (x);

c = pow (d + exp (x), 1. / 5);

y = (a + b) / c;

printf ("% lf% lf% ef% lf", a, b, c, y) / * висновок на екран значень змінних a, b, c, y * /

}

Слід звернути увагу на те, що при обчисленні змінної с, вираз, що стоїть в правій частині, представлено як 5 √ (d + e x), тому застосована функція pow. Ще одне зауваження. Слід обережно підходити до поділу цілих чисел. Якщо обидва операнди цілі, то результат теж буде цілим, а дробова частина відкидається. таким чином, при виконанні операції 1 / 5, результат буде дорівнює нулю. Для того щоб зберегти дробову частину, хоча б один з операндів має бути речовим. Це умова виконана при обчисленні 1. / 5.

З таблиці 3 взяти завдання за варіантом і написати програму для обчислення виразу мовою СІ.

Таблиця 3

№ варіанту

Завдання


Вихідні дані



x = 4,5

y = 8,5

i = 3

j = 6


n = 10,2

x = 4,3

i = 5

m = 2


m = 8,1

w = 4,2

x = 10

y = 4



t = 4,7

z = 0,8

p = 6,2

k = - 4

m = 6


t = 4,1

p = 3,2

w = 8,7

j = 3

i = 7


x = 5,7

y = 1,9

k = 8

m = 2


m = 5,6

n = 9,4

i = 4

j = 9


q = 1,7

p = 2,3

i = 9

j = 4


n = 2,6

m = 3,7

p = 6

k = 2


t = 1,1

p = 2,4

k = 4

i = 5


x = 3,7

y = 2,1

i = 3

j = 4



t = 1,5

p = 4,8

i = 2

m = 6


z = 2,4

m = 5,8

n = 4

j = 5


x = 9,5

y = 3,6

j = 2

i = 5


x = 6,4

y = 1,7

k = 5

m = 7

Література

  1. Подбельський В.В. Мова Cu + +: Навчальний посібник. - М.: Фінанси і статистика, 1995, - 560 с.

  2. Страуструп Б. Мова програмування Сг + +. - М.: Радіо і зв'язок, 1991. - 352 стор

  3. Собоцінскій В.В. Практичний курс Turbo Cu + +. Основи об'ктно-орієнтованого програмування. - М.: Світ, 1993. - 236 с.

  4. Романов В.Ю. Програмування на мові Cu + +. Практичний підхід. - М.: компьтер, 1993. - 160 с.

  5. Уінер Р. Мова турбо Cu. - М.: Світ, 1991. - 384 с.

  6. Юлін В.А., Булатова І.Р. Запрошення до Cu. - Мн.: Вищ. Шк., 1990, - 224 с.

  7. Котлинського Г.П., Галиновський О.І. Програмування на мові Cu. -Мн.: Вищ. Шк., 1991. - 156 с.



Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Лабораторна робота
54.7кб. | скачати


Схожі роботи:
Оператори циклу у мові програмування Сі
Умовні та безумовні оператори у мові програмування Сі
Пристрій введення-виведення
Засоби введення виведення в Сі
Пристрої введення виведення інформації
Пристрої введення-виведення інформації
Пристрої введення-виведення інформації
Базова система введення-виведення BIOS
Периферійні пристрої введення і виведення інформації
© Усі права захищені
написати до нас