Контрольні запитання

1. Чим відрізняється визначення шаблона структури від визначення структури?

2. Запишіть (у виді прикладів) способи доступу до членів структури, до елементів масиву ‑ члена структури, до членів структури, що є елементом масиву.

3. Що означає код (*str).alphaі як його ще можна записати?

4. Як ініціалізувати елементи структури?

5. Напишіть код, що визначає розмір масиву структур.

6. Чи правильний запис struct x{int x,y;double z[2];}x;?

7. Схематично показати розподіл пам'яті для структури

struct{int alfa;

int a : 5;

int b : 3;

char ch;}record;

8. Наведіть приклад використання структури в іншій структурі. Привласніть значення одному елементу цієї структури.

9. Що таке об'єднання (union)? Як створити шаблон об'єднання і саме об'єднання?

10. Схематично показати розподіл пам'яті для об'єднання

union{long word;

char delta;

int number;

char gamma[4];}UN;

11. Як ініціалізувати об'єднання?

12. Чим структура відрізняється від об'єднання?

13. Для чого можна використовувати бітові поля?

14. Як задається розмір бітового поля при описі його в структурі?

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

16. Чи може до бітового поля застосовуватися операція "одержати адресу" &?


Література

 

1. Абрамов С.А. Задачи по программированию. – М.:Наука, 1988.с.

2. Архангельский А.Я. Библиотека С++ Builder 5: 70 компонентов ввода/вывода информации. – М.: ЗАО «Издательство Бином», 2004, - 288с.

3. Бен-Ари М. Языки программирования. Практический сравнительный анализ: Пер. с англ. – М.: Мир, 2002. – 366с.

4. Березин Б.И., Березин С.Б. Начальный курс С и С++: Учеб. пособие. – М.: Диалог – МИФИ, 2000. – 288с.

5. Браунси Кэн. Основные концепции структур данных и реализация в С++: Пер. с англ. – М.: Изд. Дом «Вильямс», 2002. – 320с.

6. Глинський Я.М. С++ Builder: Навч. посіб./ Я.М. Глинський, В.Є. Анохін, В.А. Ряжська. – Л.: Дсол., 2003. – 192с.

7. Глумаков С.В., Коваль А.В., Смирнов С.В. Язык программирования С++: Учеб. курс. – Х.: Фолио; М.: ООО «Издательство АСТ», 2001. – 500с.

8. Дворжецкий А. Программирование на С и С++. – М. Познавательная книга плюс, 2001. – 416с.

9. Дейтел Х.М. Дейтел П.Дж. Как программировать на С++: Пер с англ. – М.: Бином, 1999. – 1022с.

10. Демидович Е.М. Основы алгоритмизации и программирования. Язык С: Учеб. пособие, - СПб.: БХВ – Петербург, 2006. – 440с.

11. Ишкова Э.А. С++. Начала программирования. 2-е изд. перераб. и доп. – М.: ЗАО «Изд-во Бином», 2001. – 479с.

12. Карпов Б., Баранова Т. С++: Специальный справочник. – СПб.: Питер, 2001. – 479с.

13. Керниган Б. Язык программирования С: Пер. с англ./Б. Керниган, Д. Ритчи. – 2-е изд., перераб. И доп. – М.: Вильямс, 2006. – 304с.

14. Крупник А. Изучаем С. – СПб: Питер, 2001. – 256с.

15. Крячков А.В., Сухинина И.В., Томшин В.К. Программирование на С и С++: Учеб. Пособие для вузов/ Пер. ред. В.К. Томшина. – 2-е изд., испр. – М.: Горячая линия – Телеком, 2006. – 344с.

16. Культин М.Б. С/С++ в задачах и примерах. – СПб.: БХВ – Петербург, 2005. – 288с.

17. Либерти Д. Освой самостоятельно С++: 10 минут на урок. 2-е изд. – М.: Издат. Дом «Вильямс», 2004. – 352с.

18. Лоуден К. С++. Карманный справочник. – СПб.: Питер, 2004. – 220с.

19. Павловская Т.А. Структурное программирование: Учеб. пособие/ Т.А. Павловская, Ю.А. Щупак. – СПб.: Питер, 2002. – 240с.

20. Подбельский В.В. Практикум по программированию на языке С: Учеб. пособие. - М.: Финансы и статистика, 2004. – 576с.

21. Подбельский В.В. Язык С++: Учеб пособие для вузов. – 5-е издание – М.: Ф и С, 2001. – 560с.

22. Программирование на языке С++: Учеб. пособие/ под ред. А.Д. Хомоненко. – СПб.: Корона принт, 1999. – 256с.

23. Савитч У. Язык С++: Курс ООП: Пер. с англ. – 3-е изд. – М.: Изд. дом «Вильямс», 2001. – 704с.

24. Скляров В.А. Язык С++ и ООП: Спр. пособие. – Минск.: ВШ, 1997. – 480с.

25. Франка П. С++: Учеб. курс. – СПб.: Питер, 1999. – 522с.

26. Фридман А.Л. Основы ООП на языке С++. – 2-е изд. Перераб. И доп. – М.: Горячая линия, – Телеком, 2001. – 232с.

27. Шилдт Г. Искусство программирования на С++. СПб.: БХВ – Петербург, 2006. – 496с.

28. Шилдт Г. Справочник программиста по С/С++: Пер с анг. – 2-е изд. – М.: ВШ, 2000. – 447с.

29. Элдтер Дж. С++: Библиотека программиста. – СПб.: Питер, 2000. – 320с.


Додаток А
Титульний аркуш

 

Міністерство освіти і науки, молоді та спорту України

Запорізький національний технічний університет

 

 

кафедра програмних засобів

 

Звіт

з лабораторної роботи № 1

Програмування лінійних процесів

з дисципліни «Основи програмування»

 

Викоконав(ла)

ст. гр. ІОТ-714 В.В. Іванов

 

 

Прийняв

 

доцент Е.Н. Сидоров

ст. викл. В.В. Воробьов

ас. В.Д. Петров

 

 


Додаток Б
Схеми алгоритмів. Графічні символи.


Додаток В
Основні типи даних. Модифікатори

 

Усі типи, що використовуються у С++, поділяються на 3 вида:

- вбудовані (базові),

- похідні (покажчики та посилання),

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

До базових типів відносять: int, char, bool, float, double.

Модифікатори типу: signed, unsigned, long, short

Таблиця Б.1 – Діапазони значень для змінних базових типів мови С++

Тип Розмір біт Мінімальний діапазон
char -127-127 чи 0-255
unsigned char 0-255
int -32767-32767
unsigned int 0-65 535
signed int   Аналогічний типу int
short int Аналогічний типу int
unsigned short int   0-65 535
signed short int   Аналогічний типу short int
long int -2 147 483 647-2 147 483 647
signed long int   Аналогічний типу long int
unsigned long int 0-4 294 967 295
long long int   -(263-1)-263-1(тільки в С99)
signed long long int   Аналогічний типу long long Int (тільки в С99)
unsigned long long int   0-264-1(тільки в С99)
float 6 значимих цифр
double 10 значимих цифр
long double 10 значимих цифр

 


Додаток Д
Схема компіляції програми

 


Додаток Е
Використання потоків у С-системі

введення/виведення

 

С-орієнтована система введення/виведення посилається на поняття потоку. В початку роботи програми автоматично відкриваються три текстові потоки, що визначені заздалегідь: stdin, stdout, stderr. Вони називаються стандартними потоками введення даних (вхідний поток), виведення даних (вихідний поток) та помилок відповідно. За замовчанням вони пов’язані з системними пристроями (дивись таблицю Д.1).

 

Таблиця Д.1 – Пристрої та пов’язані з ними потоки

Потік Пристрій
stdin клавіатура
stdout екран
stderr екран

 

Дві найпопулярніші С-функції введення/виведення є printf() та scanf(). Функція printf() записуєдані у стандартний пристрій введення (консоль), а функція scanf() , її доповнення, зчитує дані з клавіатури.

Д.1. Функція printf()

Функція printf() має наступний прототип:

int printf(const char *fmt_string, …);

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

Команди формата можуть мати модифікатори, що задають ширину поля, точність (кількість десятичних розрядів) та признак рівняння по лівому краю. Ціле значення, розміщене між % та командою форматування, виконує роль специфікатора мінімальної ширини поля. Наявність цього специфікатора приведе до того, що результат буде заповнений пробілами чи нулями, щоб гарантовано забезпечити для виводимого значення задану мінімальну довжину. Якщо виводиме значення (рядок чи число) більше цього мінімума, воно буде виведено повністю. По замовченню в якості заповнювача використовується пробіл. Для заповнення нулями необхідно помістити 0 перед специфікатором ширини поля. Наприклад, рядок форматування %0.5d додасть виводиму кільсть нулями (їх буде менше п’яти), щоб загальна довжина дорівнювала п’яти символам.

 

Таблиця Д.2 – Специфікатори формата функції printf()

Код Формат
Символ
%d Десятичне ціле зі знаком
%i Десятичне ціле зі знаком
%e Експоненціальне представлення (рядкова буква e)
%E Експоненціальне представлення (прописна буква E)
%f Значення з плаваючою точкою
%g Використовує більш короткий із двох форматів: %e чи %f (якщо %e, використовує рядкову букву e)
%G Використовує більш короткий із двох форматів: %E чи %F (якщо %e, використовує рядкову букву E)
%o Восьмирічне ціле без знаку
%s Рядок символ
%u Десятичне ціле без знаку
%x Шістнадцятирічне ціле без знаку (рядкові букви)
%X Шістнадцятирічне ціле без знаку (прописны букви)
%p Покажчик
%n Має бути покажчиком на ціле. Він зберігає в цьому цілому число символів, що виведені до вихідного потоку ( до виявлення специфікатора %n)
%% Виводить символ %

 

Точне значення модифікатора точності залежить від кода формату, до якого він застосовується. Щоб добавити модифікатор точності, поставте за специфікатором ширини поля десятичну крапку, а після неї – значення специфікатора точності. Для форматів a, A, e, E, f та Fмодифікатор точності визначає кількість виводимих десятичних знаків. Наприклад, рядок форматування %10.4f забезпечить виведення числа, ширина якого буде складати не менше десяти символів, із чотирма десятичними знаками. Щодо цілих та рядків, число, яке наступне після крапки, задає максимальну довжину поля. Наприклад, рядок фйорматування %5.7s відобразить рядок довжиною не менше п’яти, але не більш семи символів. Якщо рядок, що виводиться, буде довший за максимальну довжину поля, кінцеві символи будуть відкинуті.

Д.2. Функція scanf()

Функція scanf() – це С-функція загального призначення введення даних із консольного пристрою. Вона може зчитувати дані всіх вбудованих типів та автоматично перетворює числа в потрібний внутрішній формат. Її поведінка в багатьох випадках цілком зворотня до функції printf().Загальний формат функції scanf() такий:

int scanf (const char *fmt_string, …)

Управляючий рядок, що задається параметром fmt_string, складається з символів трьох категорій:

– специфікатори формату;

– „пробільні” символи (пробіли, символи табуляції та пустого рядка);

– символів, які відрізняються від „пробільних”.

Функція scanf() повертає кількість введених полів, а при виникненні помилки – значення EOF (воно визначене у заголовку stdio.h).

Специфікатори формату – % – повідомляють, якого типу дане буде зчитане наступним. Наприклад, специфікатор %s прочитає рядок, а %d – ціле значення. Ці коди приведені в табл. Д.3.

 


Таблиця Д.3 – Специфікатори формата функції scanf()

Код Значення
%c Зчитує один символ
%d Зчитує десятичне ціле
%i Зчитує ціле в любому форматі (десятичне, восьмирічне, шістнадцятирічне)
%e Зчитує дійсне число
%f Зчитує дійсне число
%F Як і %f (тільки С++)
%g Зчитує істотне число
%o Зчитує восьмирічне чмло
%s Зчитує рядок
%x Зчитує шістнадцятирічне число
%p Зчитує покажчик
%n Приймає ціле значення, яке дорівнює кількості символів, зчитаних на той час
%u Зчитує десятичне ціле без знаку
%[] Продивляється набір символів
%% Зчитує знак відсотка

 


Додаток Ж
Таблиця символів

 

Таблиця Ж.1 – Символи ASCII з кодами 0-127

Код Символ Код Символ Код Символ Код Символ
NUL SP @ `
SOH ! A a
STX B b
ETX # C c
EOT $ D d
ENQ % E e
ACK & F f
BEL G g
BS ( H h
HT ) I i
LF * J j
VT + K k
FF , L l
CR - M m
SO . N n
SI / O o
DLE P p
DC1 Q q
DC2 R r
DC3 S s
DC4 T t
NAK U u
SYN V v
ETB W w
CAN X x
EM Y y
SUB : Z z
ESC ; [ {
FS < \ |
GS = ] }
RS > ^ ~
US ? _ Del