Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы по программированию / Osnovy_programir_zadania.doc
Скачиваний:
38
Добавлен:
03.03.2016
Размер:
2.78 Mб
Скачать
      1. Оператор присвоєння

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

Одна з таких конструкцій – послідовність, що використовуються для задання лінійних процесів, коли операції виконуються у відповідності із послідовністю їх запису.

Програмуються лінійні алгоритми за допомогою операторів присвоєння. Даний оператор наказує обчислити заданий вираз і присвоїти отриманий результат зазначеній змінній.

У Pascal оператор присвоєння має наступний формат:

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

Наприклад,

b:=a/3+a

Формат оператора присвоєння для С++:

змінна = вираз_1 = … = вираз_n

Наприклад,

f=x/Sin(y);

a=d=v=5.

У С++ можуть також використовуватися оператори скороченого присвоєння, наведені у табл. 1.10.

Таблиця 1.10. Основні оператори скороченого присвоєння мови С++

Операція

Дія

Приклад

Особливості

+=

Присвоєння суми чисел

a+=b

a=a+b. Короткі числа перетворюються у довгі із збереженням значення, довгі у короткі – із втратою старших бітів. Дійсні числа перетворюються в цілі з відкиданням дробової частини.

-=

Присвоєння різниці чисел

a-a-=b

a= a-b

*=

Присвоєння добутку чисел

a*=b

a=a*b

/=

Присвоєння частки від ділення

a/=b

a=a/b

%=

Присвоєння остачі ділення

a%=b

a=a%b. Остача визначається тільки при діленні цілих чисел.

>>=

Присвоєння із зсувом вправо

a>>=b

<<=

Присвоєння із зсувом вліво

a<<=b

&=

Присвоєння бітової кон’юнкції

a&=b

|=

Присвоєння бітової диз'юнкції

a|=b

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

      1. Організація введення-виведення даних

Алгоритмічні мови програмування використовують концепцію поелементного введення-виведення даних. Зазвичай, введення інформації з клавіатури супроводжується "ехо-сигналом" - на екрані дисплея з'являється зображення символів, що вводяться. Виведення даних організується, починаючи з позиції розміщення курсору. При цьому пробіли між даними, що виводяться, автоматично не вставляються - їх необхідно враховувати самим.

За допомогою стандартних засобів можна вводити-виводити дані тільки певних типів.

У Pascal для введення даних служать стандартні процедури:

Read (список_елементів_введення);

ReadLn (список_елементів_введення).

Різниця між ReadLn і Read полягає у тому, що Read по закінченні введення залишає курсор у поточному рядку введення, а ReadLn переводить його на початок нового рядка. Процедура ReadLn без параметрів може використовуватися для організації пауз довільної довжини.

Виведення даних у Pascal здійснюється процедурами Write і WriteLn:

Write (список_елементів_виведення);

WriteLn (список_елементів_виведення).

Після виведення курсор може залишатися після останнього виведеного елемента (Write) або встановлюватися на початок наступного рядка (WriteLn).

При виведенні елементів списку виведення пробіли між ними автоматично не вставляються, тому їх необхідно враховувати самим.

Для кожного елемента виведення можна задавати формат виведення:

Write (елемент_виведення: [ширина [: кількість_цифр]], ...);

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

Наприклад,

x:=421.53;

WriteLn(x:7:2); { 476.53}

Оператор WriteLn без параметрів вставляє на екрані порожній рядок.

За допомогою зазначених вище процедур можна вводити-виводити тільки дані цілих, дійсних, символьного і рядкових типів.

У мові С++ для організації введення-виведення використовуються стандартні бібліотечні функції. Розрізняють наступні різновиди засобів введення-виведення.

Форматоване введення / виведення. Функції форматованого введення / виведення представлені в бібліотеці stdio.h. Їх перелік наведений в табл. 1.10.

Таблиця 1.10. Функції форматованого введення / виведення

Функція

Призначення

Формат

scanf (формат, список_ аргументів)

читання (введення) даних з потоку stdin (з клавіатури) у задані аргументи по заданому формату

%[*][ширина]тип

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

запис (виведення) даних у потік stdout (на екран монітора) по заданому формату

%[прапорець] [ширина] [.точність] тип

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

читання (введення) даних із рядка (символьного масива) у задані аргументи по заданому формату

%[*][ширина] тип

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

запис (виведення) даних у рядок по заданому формату

%[прапорець] [ширина] [.точність] тип

При описі формату використовуються наступні позначення:

% – символ початку задання формату введення-виведення чергового аргумента;

* – ігнорування поля введення; дані не зберігаються;

прапорець – специфікатор вирівнювання виведених знаків, пропусків, десяткових крапок, 8-вих і 16-вих префіксів; його можливі значення представлені в табл. 1.11.

Таблиця 1.11. Значення прапорів

Прапор

Дія

-

Вирівнювання результату перетворення по лівій межі

+

Обов'язкове зображення знака (для чисел із знаком)

Пробіл

Якщо перший символ результату перетворення має знак, відмінний від + і -, то зображення результату випереджається пробілом. Тим самим прапор + анулює дію прапора пробіл.

#

Перетворення значення до "альтернативної форми". Для перетворень c, d, i, s, u цей прапор не має значення; для o - результат зображується із збільшеною точністю (щоб перша цифра результату була нулем); для x, X - ненульовий результат буде зображуватися із префіксом 0x або 0X; для e, E, f, g, G - результат обов'язково зобразиться з десятковою крапкою, навіть якщо за нею немає цифр (зазвичай крапка в цьому випадку опускається); для g, G - не придушуються незначимі хвостові нулі (що зазвичай робиться).

ширина – загальна ширина поля виведення;

точність – максимальне число символів, які будуть надруковані після коми;

тип – специфікатор типу аргумента, можливі значення якого представлені у табл. 1.12.

Таблиця 1.12. Значення специфікаторів типу

Тип

Дія

d,D

цілі значення приводяться до десяткового числа типу int (d) або long (D)

u,U

цілі значення приводяться до беззнакового десяткового числа типу unsigned int (u) або unsigned long (U)

о,О

цілі значення приводяться до беззнакового вісімкового числа типу unsigned int (o) або unsigned long (О)

x,X

цілі значення приводяться до беззнакового шістнадцяткового числа типу unsigned int (x) або unsigned long (X); шістнадцяткові цифри при перетворенні x зображуються буквами abcdef; при перетворенні X - буквами ABCDEF

f,F

значення типів float або double перетворюється в десяткове число і зображується у вигляді [-]ddd.ddd, де число цифр після крапки визначається точністю. Якщо точність опущена, то вважається, що вона дорівнює 6; якщо точність дорівнює нулю, крапка не друкується

e,E

значення типів float або double перетворюється в десяткове число і зображується у вигляді [-]d.ddde+/-dd, де перед крапкою знаходиться рівно одна цифра, а число цифр після крапки визначається точністю; за замовчуванням точність дорівнює 6; якщо точність дорівнює нулю, крапка не друкується. Специфікація E відрізняється від e тільки позначенням порядку (E замість e). Порядок завжди містить принаймні дві цифри

g,G

значення типів float або double перетворюється в десяткове число і зображується або у форматі f, або у форматі e (або E, якщо задано специфікацію G); точність визначається числом значущих цифр. Вид зображення залежить від значення аргументу: вид e використовується тільки у тому випадку, якщо порядок менше -4 або більше значення точності. Хвостові незначимі нулі придушуються; десяткова крапка друкується, тільки якщо за нею є цифри

c

друкується значення-символ

s

значення, задане покажчиком, розглядається як ланцюжок символів, обмежений порожнім символом (“\0”); друк ланцюжка припиняється або по обмежнику, або після виведення кількості символів, рівної значенню точності. За замовчуванням точність вважається нескінченно великою; у цьому випадку ланцюжок друкується доти, поки не зустрінеться обмежник. Порожній покажчик (NULL) дає непередбачувані результати

Перед специфікатором можна вказати кваліфікатор (префікс) h, l чи L. Наприклад: %lf, %le, %hd.

Для цілих типів префікс h еквівалентний short, префікс l – long. Для дійсних типів префікс l означає, що тип аргументу не float, а double. Для префікса L – тип long double.

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

Наприклад,

printf("Площа кола: %10.3f", s);

Аргументами функцій scanf і sscanf є не імена змінних, а їхні адреси (знак & означає взяття адреси).

Наприклад,

scanf(“%d%f“,&a,&b);

Потокове введення / виведення. Потокове виведення виконується за допомогою операції зсуву вліво («помістити в потік») ”<<”. Стандартна операція ”<<” для операцій виведення перевизначається, тобто для неї визначаються нові можливості. Потокове введення аналогічне виведенню, але використовує перевизначену операцію зсуву вправо ”>>”.

Для керування потоковим введенням/виведенням можуть використовуватися маніпулятори потоків, представлені у табл. 1.13.

Таблиця 1.13. – Маніпулятори управління потоковим введенням / виведенням

Маніпулятор

Дія

dec

установка прапора форматування з десятковим перетворенням

hex/oct

установка прапора форматування із шістнадцятковим / вісімковим перетворенням

ws

виділенння пробільних символів

endl

вставка символу нового рядка і очищення потоку

ends

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

flush

скидання на диск і очищення потоку ostream

setbase(n)

установка системи числення при перетвореннях із основою n (0, 8, 10 або 16). Нуль за замовчуванням означає десяткову систему при виведенні і правила С++ для літералів цілих чисел при введенні

resetiosflags(f)

очищення форматних бітів в ins або outs, заданих аргументом f

setiosflags(f)

установка біт форматування в ins або outs, заданих аргументом f

setfill(c)

установка символу-заповнювача в c

setprecision(n)

установка точності подання чисел із плаваючою крапкою, що дорівнює n розрядам

setw(n)

установка ширини поля виведення значення рівним n

Стандартні засоби потокового введення/ виведення описані у бібліотеці iostream.h.

Наприклад,

cin >> r;

s=pi*r*r;

cout<< "\nПлоща кола: " << s << endl;

Введення / виведення символів та рядків. Для введення / виведення символів та рядків у мові С++ служать наступні основні функції (табл.1.14):

Таблиця 1.14. Основні функції введення / виведення символів та рядків

Функція

Формат

Опис

getchar

getchar()

введення символу із вхідного потоку stdin (з клавіатури)

putchar

putchar(c)

виведення символу у вихідний потік stdout (на екран)

gets

gets (s)

введення рядка із вхідного потоку stdin (з клавіатури)

puts

puts (s)

виведення у вихідний потік stdout (на екран) рядка і доповнення його символом нового рядка \n

 Після введення символу за допомогою функції getchar треба очистити буфер клавіатури, використавши функцію fflush (stdin).

Описи відповідних функцій введення / виведення містяться у бібліотеці stdio.h.

Соседние файлы в папке Лабы по программированию