Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОГРАМУВАННЯ_FULL.docx
Скачиваний:
6
Добавлен:
18.09.2019
Размер:
112.09 Кб
Скачать

42. Введення даних

Форматне введення даних зі стандартного вхідного потоку stdin іереважно він пов'язаний з клавіатурою) виконує функція scanf ():

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

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

Рядок формату, що є обов'язковим першим параметром функції scanf (), склада­ється зі специфікацій, які визначають спосіб інтерпретації введених аних. Здебільшого рядок_формату записується як константний рядок, але його можна задавати також і через зовнішній символьний рядок. Для застосування зовнішнього рядка формату треба вказати в scanf () ім'я змінної, яка зберігає адресу цього рядка, подібно до того, як це було зроблено в наведеному вище прикладі для функції printf ().

43.Оператор виводу

  Оператор виводу зазвичай застосовується для запису на стандартний висновок cout. Наприклад, програма

  # Include <iostream>

  int main ()

  {

      cout << "плетуха Анна Лівія \ n";

  }

  друкує на терміналі рядок:

  плетуха Анна Лівія

  Є оператори, що приймають аргументи будь-якого вбудованого типу даних, включаючи const char *, а також типів string і complex із стандартної бібліотеки. Будь-яке вираження, включаючи виклик функції, може бути аргументом оператора виведення за умови, що результатом його обчислення буде тип, який приймає яких-небудь варіантом цього оператора. Наприклад, програма # include <iostream>

# include <string.h>

int main ()

{

     cout << "Длина" Улисс "равна: \ t";

     cout << strlen ("Улисс");

     cout << '\ n';

     cout << "Размер" Улисс "равен: \ t";

     cout << sizeof ("Улисс");

     cout << endl;

}

45. Структури

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

Шаблони структур. Шаблон структури оголошується наступною синтаксичною конструкцією:

struct тег_структури { типполяї ім 'я_поля1 ; тип_поля2 ім'я_поля2;

. . .

тип поляк ім'я_поляс;

} ;

тут struct - службове (ключове) слово, що специфікує структуру; тег_структури - ім'я, яким позначатимуть у програмі структури даної форми. Список полів структури охоплюється фігурними дужками {}, після правої дукки } записується Знак ; (за умови, що після шаблону структури не оголошено структурних змінних). Кожне поле структури описується як змінна - типом та іменем.

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

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

union тегоб'єднання { тип_поля1 ім'я_поля1; тип_поля2 ім 'я_поля2,

тип поляк ім 'я поля3;

} ;

Тег об'єднання ідентифікує дане об'єднання, а список полів задає перелік даних, які можна заносити в це об'єднання.

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

У декларації typedef можна сумістити оголошення шаблону об'єднання та його найменування. Наведемо приклад оголошення іменованого об'єднання:

47. Поняття про вказівники на мові Сі

Кожна змінна у програмі - це об’єкт, який володіє ім’ям і значенням. Після визначення змінної з ініціалізацією всі звернення у програмі до неї за іменем замінюються компілятором на адресу іменованої області оперативної пам’яті, в якій зберігається значення змінної (Рис. 5.1). Програміст може визначити власні змінні для збереження адрес областей пам’яті. Такі змінні називають вказівниками.

int a=10;

Вказівник визначається наступним чином:

<тип> *<шідентифікатор> <іініціалізатор>;

Приклад 1. Визначення вказівників

int* pa=&a;// вказівник ра містить значення адреси змінної а

float *ptr (NULL); // Нульовий вказівник на об’єкт типу float

char*p; // Неініціалізований вказівник на об’єкт типу char

Значення адреси змінної одержується за допомогою унарної операції ”&”.

Для доступу до комірки пам’яті, виділеної під змінну через вказівник до останнього, слід застосувати унарну операцію розіменування ”*”.