Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Екзамен. Програмування -l-.doc
Скачиваний:
7
Добавлен:
13.03.2016
Размер:
411.65 Кб
Скачать

Білет № 9

  1. Строка (string) як масив символів. Операції над строками. Структури (struct) як тип даних. Доступ до полів структури. Типи, що задаються користувачем. Підключаймо файли. Директиви. Стандартні бібліотеки.

  2. Основні відомості про матриці та вектори. Операції над матрицями та векторами. Обернена та транспонована матриця.

      1. В мові програмування C++, string є стандартним класом, який представляє текстовий рядок. Цей

клас вирішує багато проблем, що виникають при роботі з рядками Cі-стилю (string.h), помістивши важку логіку управління пам'яттю на клас string, а не на програміста, і дозволили додавати NUL байт у строку. Клас реалізує деякі типові операції з рядками такі як порівняння, пошук і заміна, і функцію для отримання підрядків. Клас може бути побудований із рядка Сі-стилю, а рядок Cі-стилю може бути отримана з нього.

Рядки складаються з окремих символів C char, які як мінімум (і майже завжди) містять 8 бітів кожен. В сьогоднішньому застосуванні це часто не є "символом", а частиною багатобайтового кодування символів, такого як UTF-8.

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

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

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

struct тег_структури {

тип_поля_1 ім’я_поля_1;

тип_поля_2 ім’я_поля_2;

тип_поля_3 ім’я_поля_3;

};

Доступ до елементів структур здійснюється за допомогою двох операцій: за допомогою операції «.» крапка і операція вказівника структури «->» стрілка. Звернення операції елементу «.» до елементу здійснюється через ім’я структури:

[тег_структури]. ім’я_поля;

операція вказівника структури «->» звертається до елементу через вказівник структури.

Усi типи даних подiляються на скалярнi (простi) та структурованi (складенi). Скалярнi типи подiляються на стандартнi та типи, якi задаються користувачем.

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

typedef тип новое_імя_типу;

typedef тип новое_імя_тіпа [розмірність] [...];

В даному випадку квадратні дужки є елементом синтаксису. Розмірність може бути відсутньою.

typedef unsigned int UINT;

typedef char Msg [100];

Введене таким чином ім'я типу можна використовувати, як і імена стандартних типів. Воно буде псевдонімом стандартного типу.

UINT i, j; // Оголошення двох змінних типу unsigned int

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

Директиви препроцесора починаються зі знака "дієз" (#), який повинен бути найпершим символом рядка. Програма, яка обробляє ці директиви, називається препроцесором (в сучасних компіляторах препроцесор зазвичай є частиною самого компілятора).

Заголовні файли включаються в код за допомогою команди препроцесора #include, наприклад

#include <stdio.h>

#include "foo.h"

При цьому, в залежності від місця розташування, використовуються або гострокутні дужки, або лапки.

Файл заголовку також може містити директиви #include. Тому іноді, важко зрозуміти, які конкретно файли заголовку вже включені в даний код і деякі файли заголовків можуть виявитись включеними декілька разів. Повторне включення файлу призводить до помилки компіляції із-за повтору імен. Уникнути цього дозволяють умовні директиви компілятора. Приклад:

#ifndef BOOKSTORE_H

...

#endif

Умовна директива #ifndef дозволяє перевірити, чи не було значення BOOKSTORE_H визначено раніше. (BOOKSTORE_H – константа препроцесора; такі константи прийнято писати великими буквами). Препроцесор дозволяє виконати наступні строки програми до самого включення директиви #endif. У випадку коли умова не виконується і константа вже була визначена, він пропускає ці строки, які знаходяться між #ifndef і #endif.

Директива

#define BOOKSTORE_H

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

      1. Матриця — математичний об'єкт, записаний у вигляді прямокутної таблиці чисел (чи елементів

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

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

Якщо дано дві матриці m-на-n A і B, можемо визначити їх суму A + B як матрицю m-на-n, що утворюється додаванням відповідних елементів, тобто, (A + B)[i, j] = A[i, j] + B[i, j]. Наприклад,

Якщо дано матрицю A і число c, можемо означити множення на скаляр cA як (cA)[i, j] = cA[i, j]. Наприклад,

Множення двох матриць має сенс лише тоді, коли число стовпчиків першої матриці дорівнює числу рядків другої матриці. Якщо A — матриця m-на-n (m рядків, n стовпчиків), а B — матриця n-на-p (n рядків, p стовпчиків), їх добуток AB є матрицею m-на-p (m рядків, p стовпчиків), що розраховується за формулою:

(AB)[i, j] = A[i, 1] * B[1, j] + A[i, 2] * B[2, j] + ... + A[i, n] * B[n, j] для кожної пари i та j.

Обернена матрицяматриця (позначається ), яка існує для кожноїневиродженої квадратної матриці, розмірності, причому:

де одинична матриця.

Транспонована матрицяматриця , що виникає з матриців результатіунарної операції транспонування: заміни її рядків на стовпчики.

Формально, транспонована матриця для матрицівизначається як

Наприклад:

та