Головна

Містить методичні рекомендації до виконання лабораторних робіт. Для студентів першого курсу

  1. I I I. Виконання музичної розспівки .
  2. I I I. Виконання музичної розспівки .
  3. I I I. Виконання музичної розспівки . Спів на два голоси .
  4. I I I. Виконання музичної розспівки . Теорія.
  5. I I I. Виконання музичної розспівки . Теорія.
  6. I I I. Виконання музичної розспівки . Теорія.
  7. I I I. Виконання музичної розспівки . Теорія.

Реализация пассивных методов защиты, основанных на применении экранирования и фильтрации, приводит к ослаблению уровней побочных электромагнитных излучений и наводок (опасных сигналов) ТСПИ и тем самым к уменьшению отношения опасный сигнал/шум (с/ш). Однако в ряде случаев, несмотря на применение пассивных методов защиты, на границе контролируемой зоны отношение с/ш превышает допустимое значение. В этом случае применяются активные меры защиты, основанные на создании помех средствам разведки, что также приводит к уменьшению отношения с/ш.
Для исключения перехвата побочных электромагнитных излучений по электромагнитному каналу используется пространственное зашумление (Рисунок 15.26), а для исключения съема наводок информационных сигналов с посторонних проводников и соединительных линий ВТСС- линейное зашумление (Рисунок 15.27).
К системе пространственного зашумления, применяемой для создания маскирующих электромагнитных помех, предъявляются следующие требования:
- система должна создавать электромагнитные помехи в диапазоне частот возможных побочных электромагнитных излучений ТСПИ;
- создаваемые помехи не должны иметь регулярной структуры;
- уровень создаваемых помех (как по электрической, так и по магнитной составляющей поля) должен обеспечить отношение с/ш на границе контролируемой зоны меньше допустимого значения во всем диапазоне частот возможных побочных электромагнитных излучений ТСПИ;
- система должна создавать помехи как с горизонтальной, так и с вертикальной поляризацией (поэтому выбору антенн для генераторов помех уделяется особое внимание);
- на границе контролируемой зоны уровень помех, создаваемых системой пространственного зашумления, не должен превышать требуемых норм по ЭМС.
Цель пространственного зашумления считается достигнутой, если отношение опасный сигнал/шум на границе контролируемой зоны не превышает некоторого допустимого значения, рассчитываемого по специальным методикам для каждой частоты информационного (опасного) побочного электромагнитного излучения ТСПИ .
В системах пространственного зашумления в основном используются помехи типа "белого шума" или "синфазные помехи" .
Системы, реализующие метод "синфазной помехи", в основном применяются для защиты ПЭВМ. В них в качестве помехового сигнала используются импульсы случайной амплитуды, совпадающие (синхронизированные) по форме и времени существования с импульсами полезного сигнала. Вследствие этого по своему спектральному составу помеховый сигнал аналогичен спектру побочных электромагнитных излучений ПЭВМ. То есть, система зашумления генерирует "имитационную помеху", по спектральному составу соответствующую скрываемому сигналу .
В настоящее время в основном применяются системы пространственного зашумления, использующие помехи типа "белый шум", то есть излучающие широкополосный шумовой сигнал (как правило, с равномерно распределенным энергетическим спектром во всем рабочем диапазоне частот), существенно превышающий уровни побочных электромагнитных излучений (см. Рисунок 15.28 ... 15.31) Такие системы применяются для защиты широкого класса технических средств: электронно-вычислительной техники, систем звукоусиления и звукового сопровождения, систем внутреннего телевидения и т. д.
Генераторы шума выполняются или в виде отдельного блока с питанием от сети 220 В ("Гном", "Волна", "ГШ-1000" и др.), или в виде отдельной платы, вставляемой (встраиваемой) в свободный слот системного блока ПЭВМ и питанием от общей шины компьютера ("ГШ-К-1000", "Смог" и др.).
Основные характеристики генераторов шума, используемых для пространственного зашумления, представлены в табл. 2.7 и 2.8, а внешний вид - на Рисунке 2.11 и 2.12.

Рисунок 15.26 - Характерный вид спектра одного из побочных электромагнитных излучений монитора персонального компьютера

Рисунок 15.27 - Спектрограмма маскировки побочных электромагнитных излучений персонального компьютера генератором шума «Гном-3»:

1 - спектр побочных электромагнитных излучений ПЭВМ; 2 - спектр маскирующего излучения генератора шума

Рисунок 15.28 - Генераторы шума «Гном-3» (а) и «Смог» (б)

Рисунок 15.29 - Генератор шума «ГШ - 1000»


Рисунок 15.30 - Спектрограмма маскировки побочных электромагнитных излучений монитора персонального компьютера и плоттера

генератором шума «ГШ 1000»

Рисунок 15.31 - Спектрограмма маскировки побочных электромагнитных излучений принтера генератора шума «ГШ - 1000»

Таблица 15.5 - Основные характеристики генераторов шума, используемых в системах пространственного зашумления

Наименование Тип (модель)
характеристик ГШ-1000 ГШ-К-1000 Смог Гном-3
Диапазон частот, МГц 0,1 ... 1000 0,1 ... 1000 0,00005 ... 1000 0,01 ... 1000
Спектральная плотность мощности шума, дБ 40 ... 75 40 ... 75 55 ... 80 45 ... 75
Вид антенны Рамочная жесткая Рамочная мягкая Подставки под монитор и принтер Рамочная гибкая
Конструктивное исполнение Переносной Бескорпусной, вставляется в слот ПЭВМ Бескорпусной, вставляется в слот ПЭВМ Стационарный

Генераторы, выполненные в виде отдельного блока, имеют сравнительно небольшие размеры и вес. Например, генератор шума "Гном-3" при размерах 307-95-49 мм весит 1,8 кг . Основные характеристики генераторов пространственного зашумления представлены в табл. 15.5
Диапазон рабочих частот генераторов шума от 0,01 ... 0,1 до 1000 МГц. При мощности излучения около 20 Вт обеспечивается спектральная плотность помехи 40 ... 80 дБ.
В системах пространственного зашумления в основном используются слабонаправленные рамочные жесткие и гибкие антенны. Рамочные гибкие антенны выполняются из обычного провода и разворачиваются в двух-трех плоскостях, что обеспечивает формирование помехового сигнала как с вертикальной, так и с горизонтальной поляризацией во всех плоскостях .
При использовании систем пространственного зашумления необходимо помнить, что наряду с помехами средствам разведки создаются помехи и другим радиоэлектронным средствам (например, системам телевидения, радиосвизи и т. д.). Поэтому при вводе в эксплуатацию системы пространственного зашумления необходимо проводить специальные исследования по требованиям обеспечения электромагнитной совместимости (ЭМС). Кроме того, уровни помех, создаваемые системой зашумления, должны соответствовать санитарно-гигиеническим нормам. Однако нормы на уровни электромагнитных излучений по требованиям ЭМС существенно строже санитарно-гигиенических норм. Следовательно, основное внимание необходимо уделять выполнению норм ЭМС.
Пространственное зашумление эффективно не только для закрытия электромагнитного, но и электрического каналов утечки информации, так как помеховый сигнал при излучении наводится в соединительных линиях ВТСС и посторонних проводниках, выходящих за пределы контролируемой зоны.
Системы линейного зашумления применяются для маскировки наведенных опасных сигналов в посторонних проводниках и соединительных линиях ВТСС, выходящих за пределы контролируемой зоны. Они используются в том случае, если не обеспечивается требуемый разнос этих проводников и ТСПИ (то есть не выполняется требование по Зоне № 1), однако при этом обеспечивается требование по Зоне № 2 (то есть расстояние от ТСПИ до границы контролируемой зоны больше, чем Зона № 2).
В простейшем случае система линейного зашумления представляет собой генератор шумового сигнала, формирующий шумовое маскирующее напряжение с заданными спектральными, временными и энергетическими характеристиками, который гальванически подключается в зашумляемую линию (посторонний проводник). Характеристики некоторых генераторов шума, используемых в системах линейного зашумления, представлены в табл. 2.8.
На практике наиболее часто подобные системы используются для зашумления линий электропитания (например, линий электропитания осветительной и розеточной сетей).

  Puc.15.32 - Схема установки на объекте информатизации генератора линейного зашумления цепи электропитания СВТ

К системе линейного зашумления, применяемой для создания маскирующих электромагнитных помех в цепях электропитания СВТ, предъявляются следующие требования:

- система должна создавать электромагнитные помехи в диапазоне частот возможных наводок побоч

ных электромагнитных излучении СВТ (от 150 кГц до 300 МГц);

- создаваемые помехи не должны иметь регулярной структуры (энтропийный коэффициент качества шума должен быть не менее 0,6);

- уровень создаваемых помех должен обеспечить отношение сигнал/шум в зашумляемой линии электропитания СВТ на границе контролируемой зоны не более допустимого значения (δ) во всем диапазоне частот возможных наводок побочных электромагнитных излучений СВТ;

- система должна иметь сертификат по требованиям безопасности информации ФСТЭК РФ.

В системах линейного зашумления в основном используются помехи типа «белого шума» с равномерно распределенным энергетическим спектром во всем рабочем диапазоне частот.

Генераторы шума выполняются в виде отдельного блока с питанием от сети 220 В.

К типовым генераторам шума, используемым в системах линейного зашумления, относятся генераторы шума «Гном-ЗМ» и «Соната- РС1». Их основные характеристики представлены в таблице 15.6.

Таблица 15.6 - Основные характеристики генераторов шума

Наименование характеристик Тип (модель)
  Гном - ЗМ   Соната-PC1;
Конструктивное исполнение   Стационарный
Диапазон частот, МГц   0,15-1000   0,01-1000
Количество линейных выходов, подключаемых к цепям питания (корреляционно не связанных)
Уровень шумов на линейных выходах генератора, дБ (мкВ/УкГц), не менее, в диапазоне частот: - от 0,01 до 0,15 МГц - от 0,15 до 30 МГц - от 30 до 400 МГц - от 400 до 1000 МГц   Отсутствует  
Энтропийный коэффициент качества шума, не менее   0,8
Электропитание   АС 220 В, 50 Гц
Регулирование уровня шума на линейных выходах Не регулируется Не менее 10 дБ
Максимальная электрическая мощность, потребляемая генератором, Вт     -
Габаритные размеры, мм   300x192x50   153x135x65
| Масса генератора, кг   -
' Время непрерывной работы Не ограничено Не менее 24 ч
Примечание Индикация наличия генерации и выдача сигнала «авария» при ее отсутствии Дистанционное управление

На практике наиболее часто подобные системы используются для зашумления линий электропитания (например, линий электропитания осветительной и розеточной сетей).

Містить методичні рекомендації до виконання лабораторних робіт. Для студентів першого курсу

ЗМІСТ

ВСТУП 4

Лабораторна робота 1, СТРУКТУРНИЙ ПЩХІД ДО ПРОГРАМУВАННЯ. ОБЧИСЛЮВАЛЬНИЙ ПРОЦЕСЗ РОЗГАЛУЖЕННЯМ 5

Лабораторна робота 2. ЦИКЛІЧНИЙ ОБЧИСЛЮВАЛЬНИЙ

ПРОЦЕС 9

Лабораторна робота 3. ТЕКСТОВИЙ ТА ГРАФІЧНИЙ РЕЖИМ

РОБОТИ МОНІТОРА 15

Лабораторна робота 4. МАСИВИ ТА ЇХ ОПИС. АЛГОРИТМИ

ОБРОБКИ ЕЛЕМЕНТІВ МАСИВУ 21

Лабораторна робота 5. ПОКАЖЧИКИ. ОБРОБКА МАСИВІВ ЗА

ДОПОМОГОЮ ПОКАЖЧИКІВ 27

Лабораторна робота 6. ФАЙЛИ. ОБМІН ІНФОРМАЦІЄЮ З ФАЙЛАМИ ТА МОДУЛЬНИЙ ПРИНЦИП ПРОГРАМУВАННЯ .. зО

Лабораторна робота 7. ФУНКЦІЇ 36

Лабораторна робота 8. СТРУКТУРИ 38

СПИСОК ЛІТЕРАТУРИ 44


ВСТУП

Сучасний етап науково-технічної революції характеризується підвищенням ефективності всіх сфер діяльності людини на основі комп'ютеризації.

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

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

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

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

Лабораторна робота 1

СТРУКТУРНИЙ ПІДХІД ДО ПРОГРАМУВАННЯ. ОБЧИСЛЮВАЛЬНИЙ ПРОЦЕС З РОЗГАЛУЖЕННЯМ

Мета роботи: оволодіння основами структурного підходу до програмування та ознайомлення з базовою мовою C++.

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

Структура програми, написана базовою мовою програмування C++, у межах структурного підходу має вигляд рис. 1.1.

Рис. 1.1. Структура програми мовою програмування C++

Програма мовою C++ у межах структурного підходу являє собою сукупність однієї чи декількох функцій, команд препроце- сора та зовнішніх описів. Одна з функцій має ім'я main та є головною. Функція main виконується завжди першою. Функції описують сукупність дій, які потрібно виконати. Команди препроцесора вказують на перетворення, яке треба зробити з програмою. За їх допомогою також здійснюється оголошення іменованих констант, що використовуються у всій програмі, підключення інформації про стандартну бібліотеку та ін.

Оголошення змінних може виконуватись у будь-якому місці програми. Всі змінні повинні бути описані до їх використання.

Базові операції введення та виведення забезпечуються спеціальними об'єктами (потоками), описи класів яких наведено у файлі <iostream.h>. Існують такі стандартні потоки введення/виведення: сіп- потік стандартного введення, cout - потік стандартного виведення, сеrr- потік для небуферизованого виведення інформації про помилки

char surname [128];

соunt«"Введіть ваше прізвище";

cin»surname ;

Інколи використовують універсальні функції форматовано- го введення/виведення мови С ++ print f () і scanf () : printf( stream, format) ; scanf ( £ormat, pointerr . . .) ;

Функція printf () записує аргумент у потік stream відповідно до специфікації format. Функцію print f можна використовувати для виведення будь-якої комбінації символів: цілих та дійсних чисел, довгих ці лих, беззнакових довгих цілих тощо.

Функція scanf () вводить дані зі стандартного потоку згідно з форматом format\ записуючи їх у змінні pointer.

Умовні оператори в мові C++ мають такий синтаксис: if (вираз) операторі

else оператор2

Якщо вираз набуває істинного значення, то виконується операторі та керування передається на оператор, наступний після оператор2 (операмор2 не виконується). В іншому випадку виконується опера тор 2. Умовний оператор if-else може бути багаторазово вкладений. Наприклад:

if (вираз) опера тор else

if (вираз ) опера тор else оператор Ніяких обмежень на кількість вкладених блоків if не накладається

Приклад. Створити програму для обчислення значення змінної у при довільних значеннях а і Ь:

a-2b si na

у -... ...

З a+ b cos 2b '

Найпростіша програма в рамках структурного підходу:

#include <math.h> #include <conio.h> #include <iomanip.h>

void main () {

clrscr () ;

cout «"Vvedite znachenie a:"; float a; cin »a;

cout«"Vvedite znachenie b:"; float b; cin»b;

if ( (b== (~3*a) ) M (

cos (2*b)==0) )

cout « "Nevirni danni";

else {

float y=(a-2*b) / (3*a+b) - sin (a) /cos (2*b) ;

cout«"y- "<<y«endl; }

getch () ; }

Порядок виконання роботи

L Проаналізувати умову задачі.

2. Розробити алгоритм та створити програму розв'язання задачі згідно з номером варіанта.

3. Ознайомитися з принципами відлагодження програми, освоїти використання довідки.

4. Результати роботи оформити протоколом.

Варіанти завдань

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

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

L Що таке структурний підхід до програмування?

2. Які базові типи даних вам відомі?

3. Які типи констант можна використовувати в мові C++?

4. Види операцій, пріоритет виконання операцій.

5. Стандартні потоки введення/виведення, їх призначення та синтаксис використовування.

6. Наведіть синтаксис умовної конструкції if-else.

Лабораторна робота 2 ЦИКЛІЧНИЙ ОБЧИСЛЮВАЛЬНИЙ ПРОЦЕС

Мета роботи: отримання навичок роботи з циклічними процесами.

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

У мові програмування C++ використовуються такі оператори циклу:

1. Цикл for

for (виразі; вираз2; виразЗ) { опера тори }

Виразі описує ініціалізацію циклу; вираз 2 - перевіряє умову завершення циклу, якщо він істинний, то виконується оператор ; вираз 3 - обчислюється після кожної ітерації. Цикл повторюється до тих пір, поки вираз не стане хибним. Наприклад: for(х=1; х<=7; х++) cout«pow (х, 2)«endl;

2. Цикл while:

while (вираз) {

оператори

}

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

Наприклад:

while (к<п) {

у=у*х; к++; }

3. Цикл do - while. Його синтаксис:

do

{

опера тори

}

whi1е (вираз);

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

Наприклад:

х=1 ;

do

І

cout « pow(x, 2) ;

}

while (++x<=7) ;

Оператор do - while перевіряє умову після виконання операторів циклу.

Оператор while перевіряє умову перед виконанням операторів циклу.

4. Перемикач switch має синтаксис:

switch (вираз) {

case коcтанта 1: опера тор

case константа2: case константаЗ:

 

Перемикач switch порівнює значення виразу з константами у всіх варіантах case та передає керування оператору, що відповідає значенню виразу Якщо жодна з констант не відповідає значенню виразу, то керування передається оператору з міткою defaul t. Якщо мітка defaul t відсутня, не виконується ніяких дій.

Наприклад:

switch (x)

{

case 2: case 3: y=5;

}

5. Оператор break перериває виконання найближчого вкладеного зовнішнього оператора switch, while, do або for. Керування передається наступному оператору.

Наприклад:

for (і=0; і<п; і++) if( (а [і] == Ь[і]}) break ;

6. Оператор продовження continue передає керування на початок найближчого зовнішнього оператора циклу switch, while, do або for та викликає початок наступної ітерації.

7. Оператор повернення return. Перериває виконання поточної функції та повертає керування програмі, що ії викликала.

Приклад. Знайти всі прості неспрощувані дроби між 0 та 1, знаменники яких не перевищують 7 (дріб задається двома натуральними числами - чисельником та знаменником)

#incl ude<stdio. h>

#incl ude<i omanip. h>

#i n cl ude<ma th. h>

оператор оператор

void main() {

int і, j ,l,k,il,jl,k2;

cout«"Pocha tok programі "<<endl«endl; //zavdannya cikliv for(±1=1;il<8;++il)

for (j 1=1 ;jl<i 1; ++j 1) {

if (jl==l) cout«j l«i l«endl; 1=0; i=il; j=j 1;

do {

k=i-j; k2=il%jl; if( (k==0) && (j 1=1) ) || (k2==0) ) 1-1;

i=j; j=k; }

while (k>0) ;

if (11=1) cou t«j 1 «і 1 «endl ;

}return 0; }

Порядок виконання роботи

1. Проаналізувати умову задачі.

2. Розробити алгоритм та створити програму розв'язання задачі згідно з номером варіанта.

3. Результати роботи оформити протоколом.

Варіанти завдань

1. Дано натуральне число п {п>2). Знайти всі прості числа, що не перевищують число п, використовуючи решето Ератосфена. Решетом Ератосфена називається такий метод. Випишемо підряд всі цілі числа від 2 до п . Першим простим числом є число 2. Підкреслимо його, а всі більші за нього числа, кратні числу 2, викреслимо. Першим числом у ряду чисел, що залишились, є число 3. Підкреслимо його, як просте число, а всі більші за нього числа, кратні числу З, викреслимо. Першим числом серед тих, що залишились, є число 5, оскільки 4 вже викреслене. Підкреслимо його, як просте число, а всі більші за нього числа, кратні числу 5, викреслимо і т. д.

2. Дано натуральне число п. Знайти всі числа Мерсена, що не перевищують число п. Просте число називається числом Мерсена, якщо його можна представити у вигляді 2р-1, де р теж просте число.

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

4. Дано натуральне число п. Серед чисел 1,..., п знайти такі числа, запис яких збігається з останніми цифрами запису їх квадрата. Наприклад, 6(62=36), 25(252=625) і т. д.

5. Натуральне число називається паліндромом, якщо його запис читається однаково з початку та з кінця (наприклад, 4884, 393). Знайти всі числа-паліндроми, що не перевищують 100, та при піднесенні до квадрату також дають паліндроми.

6. Натуральне число називається паліндромом, якщо його запис читається однаково з початку та з кінця (наприклад, 4884,393). Знайти всі числа-паліндроми, що не перевищують 100.

7. Дано натуральне число п. Перевірити, чи можна подати п\ у вигляді добутку трьох послідовних цілих чисел.

8. Дано матрицю розміром п на т з дійсними елементами. Побудувати послідовність b\,b2, де Ьк- це кількість від'ємних елементів к-то рядка матриці.

9. Дано матрицю розміром п на m з дійсними елементами. Побудувати послідовність Ь\, Ь2, Ьп, де Ьк~ це добуток квадратів тих елементів к-то рядка, модулі яких належать до відрізка [ІД5].

10. Дано натуральне число п та малочислова матриця порядку п. Побудувати послідовність Ь\, Ь2, ..., Ь де bk - це найменше зі значень елементів, що розташовані на початку к-то рядка матриці, включаючи елемент, що належить головній діагоналі.

11. Дано натуральне число п та цілочислова квадратна матриця порядку її. Побудувати послідовність bu b2r. де Ьк - це сума елементів, що передують останньому від'ємному елементу к-то рядка матриці (якщо всі елементи рядка невід'ємні, то вважати,

що^=-1).

12. Натуральне число, що складається з п цифр, є числом Ар- мстронга, якщо сума його цифр, піднесених до /7-го ступеня, дорівнює самому числу (наприклад, 153 = 1 + 533). Знайти всі числа Армстронга, що складаються з 2, 3 або 4 цифр.

13. Дано натуральне число п. Отримати всі прості дільники цього числа.

14. Дано натуральні числа п, bu b2, ...?bn. Знайти члени Ьк послідовності Ьі, Ь2, Ьп, що мають таку властивість: корені рівняння х + 3b к - 5 є дійсними та додатними.

15. Дано натуральне число п та дійсні числа bu Ь2, Ьп. Обчислити зворотну величину для добутку тих чисел Ьк послідовності Ьь Ь2, ..., Ь", для яких виконується умова к + 1 < b к L

16. Дано натуральне число п. Обчислити суму тих чисел виду і3-Зіп2+п (/=1,2, я), що являють собою потроєні непарні числа.

17. Дано цілочислову квадратну матрицю порядку п. Знайти номери тих рядків, елементи яких утворюють симетричні послідовності (паліндроми).

18. Дано натуральні числа п, йь Ьп. Знайти ті члени ^послідовності b\,b2,...,bn, що при діленні на 7 дають залишок 1,2 або 5.

19. Дано натуральні числа п, b\,b2, ..., ьп. Знайти члени Ьк послідовності bh b2, що є потроєними непарними числами.

20. Дано натуральні числа b\9 Ь2, ..., Ьп. Знайти кількість членів Ьк послідовності b\,b2, bn, що мають парні порядкові номери та є непарними числами.

21. Дано натуральні числа п, Ьц Ь2, Ьп. Знайти члени bk: Послідовності b\,b2, ..., bn, що є подвоєними непарними числами.

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

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

1. Що таке пуста та складна інструкції?

2. Синтаксис операторів циклу різного типу.

3. Що таке покроковий цикл?

4. Коли використовується перемикач?

5. Призначення конструкцій продовження, безумовного переходу, повернення та переривання у циклах різного типу.

Лабораторна робота З ТЕКСТОВИЙ ТА ГРАФІЧНИЙ РЕЖИМИ РОБОТИ МОНІТОРА

Мета роботи: оволодіння методами роботи в текстовому та графічному режимі.

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

і пі tgraph ()

Для виконання функцій для роботи з вікнами необхідно підключити бібліотеку сопіо. h. За допомогою функції

window(xl, yl, х2, у2), де хі, уі - лівий верхній кут вікна;

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

window (1, 1, 80, 25) - вікно на весь екран.

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

textbackground (параметр) , де параметр може набувати цілих значень від 0 до 15 відповідно до

кольору:        
0 чорний вишневий яскраво-зелений
1 синій коричневий яскраво-голубий
2 зелений білий яскраво-червоний
3 голубий сірий яскраво-вишневий
4 червоний яскраво-синій жовтий
      яскраво-білий

Функція textcolor (параметр) встановлює колір символів. Функція управління курсором у вікні gotoxy (х, у) встановлює курсор в позицію вікна, що має координати х, у. Введення/виведення за допомогою вікна виконується з тієї позиції, де міститься курсор. За замовчуванням курсор встановлюється в лівому верхньому куті вікна.


Встановлення атрибутів вікна (колір тла та колір переднього плану) виконується за допомогою функції textattr (колір тла та колір символів). Для введення даних у вікна виведення їх з вікна використовуються функції cscanf та ерг intf, аргументи яких аналогічні до функцій scanf, printf.

Приклад

#іпсіude<coniо. h>

void main () {int а;

window (2,5, 60,15) ; textcolor (14) ; textbackground(2) ; clrscr () ; gotoxy(29,5); cscanf("%d",&a); gotoxy (29, 7) ; cprintf("\na=%d", a);} window (2,17,60,23);

a);} window (2,17,60,23); textcolor(5); textbackground (7) ; clrscr () ; gotoxy(29,3);

cpruntf ("Window") ; }

Мова програмування C++ має окрему бібліотеку графічних функцій, що підтримують стилі ліній та заповнювачів, а також надають різні текстові шрифти, які можна змінювати за розміром, способом вирівнювання, а також орієнтувати їх горизонтально або вертикально. Оскільки графічні функції використовують покажчики far, то для їх використання треба переключитися в модель пам'яті, що використовує такі покажчики (моделі far, huge).

Графічні функції знаходяться в бібліотечному файлі graphi cs. lib, а їх прототипи - у файлі заголовку graphics.h. Крім цих двох файлів, у склад графічного пакета входять драйвери графічних пристроїв (файли * . Ьді) та символьні шрифти ( * . chr).

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

Для запуску графічного режиму треба перш за все викликати функцію initgraph(), що переводить систему в графічний режим. Можна вказати конкретний графічний драйвер або використати можливість автодетектування встановленого відеоадаптера та вибір відповідного драйвера під час виконання програми.

Для завершення роботи в графічному7 режимі потрібно викликати функцію closegraph () , яка встановлює початковий текстовий режим.

Графічні функції поділяються на декілька категорій:

1) керування графічною системою

detectgraph () closegraph ()

- ініціалізує графічну систему та переводить апаратне забезпечення в графічний режим;

- перевіряє апаратне забезпечення та визначає графічні драйвери, які використані, й рекомендований режим;

2) -закриває графічну систему

3)

install userdri ver () - встановлює додатковий драйвер

пристрою в таблицю драйверів пристроїв Ьді;

2) креслення та заповнення

- circle () Креслить коло/

- drawpoly ( ) креслить контур багатокутника;

- - ellipse () креслить еліптичну дугу;

line () креслить лінію;

- ber3d() креслить та заповнює тривимірний стовпчик;

setfillpattern () вибирає шаблон заповнення, визначений користувачем

3) маніпулювання екранами та графічними вікнами сі eardevi се () - очищує графічний екран;

- встановлює область перегляду для графічного виведення;

4) виведення тексту outtext ()

- посилає рядок на екран у поточну позицію;

- встановлює шрифт, стиль та коефіцієнт збільшення поточного шрифту;

textwidthQ

- повертає ширину рядка в пікселях;

5) керування кольорами;

6) оброблення помилок;

7) запит стану.

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

Приклад. Побудувати на екрані множину точок, що задовольняють нерівність х2 + у2 < 2(|х| 4-

#include <graphics.h> #include <math.h> #include <bios.h> int xOr yO;

void main () {

int x,y;

int gdri ver=DETECT , gmode , error code ; initgraph(&gdrriver,&mode,"g;\\bc31\ \bgi") ; xO=getmaxx () /2 ; yO=getmaxy () /2; setcolor(2);

line(xOr 0, xO, getmaxyO); line (0, yO, getmaxx () ,y0) ; for(x=-xO,x<=xO, x++) for(y=-yO,x<=x0, y++) if ( (x*x+y*y<=2*abs (y) ) ) putpixel (x+xO, y+yO,15); else

setviewportQ
settextstyle()

putpixel (x+xO, y+y0,0) ;

setcolor(2);

1іпе (хО, 0, xO, getmaxyO); line (0, yO,getmaxx () ,yO) ;

if (bioskey (0) ==283) closegraph () ; }

Порядок виконання роботи

L Проаналізувати умову задачі.

2. Розробити алгоритм та створити програму розв'язання задачі згідно з номером варіанта. Дослідити поведінку функцій при різних значеннях параметра.

3. Результати роботи оформити протоколом.

Варіанти завдань

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

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

1. Як реалізується ініціалізація та закриття графічного режим}7? Оброблення помилок.

2. Які функції керування кольором, палітрою, відеосторінкою ви знаєте?

3. Як визначаються координати точок на екрані?

4. Як виводиться текст у графічному режимі відеоадаптера (бітовий та сегментований типи шрифтів)?

5. У чому полягає специфіка виведення графічної інформації?

Лабораторна робота 4

МАСИВИ ТА ЇХ ОПИС. АЛГОРИТМИ ОБРОБКИ ЕЛЕМЕНТІВ МАСИВУ

Мета роботи: оволодіння навичками використання індексних виразів під час роботи з багатовимірними масивами та виведення на екран елементів псевдографіки у текстовому режимі.

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

Масив - це набір об'єктів однакового типу, розташованих один за одним у пам'яті комп'ютера. Масив можна описати так:

тип_даних ім'я масиву [розмір_масиву]

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

Доступ до окремих елементів масиву може здійснюватись за допомогою імені масиву та індексу (порядкового номера) array [і ] .

Приклад. Задано масив а[10][10]. Знайти суму елементів масиву з мінусовим значенням та їх кількість. Вхідні дані ввести в програмі, а результати вивести на екран у форматі користувача.

#include <stdlib.h> #include <stdio.h> #include <conio.h>

int main() {

int a[10][10], i, j; int summa = 0; int kolvo - 0;

random.і ze () ; clrscr () ;

for (i=0; і<Ід; i++) for (j=0; j<10; j++) a[i][j] = random (200)-100;

printf("\n\n ---

--- »).

printf ("\n Vivedennya massivu:"); printf("\n\n") ;

for (i=0; i<10; i++) {

for (j=0; j<10; j++) {

printf (":%d % a[i] [j]) ; if (a [i] [j ] < 0) {

summa = summa + a[i] [j]; kolvo++;

}

}

printf ("\n--- \n") ;

}

printf(n\n\n summa = %d", summa); printf(n\n kolichestvo otricatelnih chisel = %d", kolvo);

Порядок виконання роботи

1. Проаналізувати умову задачі.

2. Розробити алгоритм та створити програму розв'язання задачі згідно з номером варіанта.

3. Матриці, отримані в результаті виконання лабораторної роботи, вивести на екран послідовно в текстовому7 режимі.

Результати роботи оформити протоколом

Варіанти завдань

1. Дано послідовність чисел ..., Ьп. Отримати квадратну матрицю порядку я, елементами якої є числа 6], ..., Ьпп, розташовані за схемою.

2. Дано послідовність чисел bь ... , Ьп. Отримати ква

дратну матрицю порядку п, елементами якої є числа Ь ь ..., Ьпп, розташовані за схемою

.

3. Заповнити матрицю послідовністю чисел, кратних З в такому порядку.

4. Дано послідовність чисел &ь ..., Ьп. Отримати квадратну матрицю порядку п, елементами якої є числа b і, ..., bnn, що розташовані за схемою.

5. Дано послідовність чисел bь ..., Ьп. Отримати квадратну матрицю порядку п, елементами якої є числа bі, ..., розташовані за схемою.

6. Дано послідовність чисел bь ..., Ьп. Отримати квадратну матрицю порядку п, елементами якої є числа b ь ..., Ь", розташовані за схемою.

7. Дано дійсну квадратну матрицю порядку п. Знайти всі непарні елементи в заштрихованій області.

8. Дано квадратну матрицю порядку п, елементи якої є цілими числами. Знайти всі менші від 100 числа- паліндроми (див. лабораторну роботу 2) із позначеної області).

9. Дано символьну квадратну матрицю порядку п. Обчислити кількість букв а над головною діагоналлю та кількість букв в під бічною діагоналлю і замінити в матриці ці букви на символ *.

10. Дано дійсну квадратну матрицю В. Отримати цілочислову квадратну матрицю А того ж порядку, у якій елемент агу= 1, якщо відповідний елемент початкової матриці b ц більший від елемента, розташованого в тому ж рядку на головній діагоналі, в іншому випадку ajj=0.

11. Дано натуральне число п та дійсну квадратну матрицю порядку п. Побудувати послідовність b ь ..., Ьп нулів та одиниць, у якій Ьі = 1, тоді і тільки тоді, коли елементи 7-го рядка матриці утворюють послідовність, що зростає або спадає.

12. Дано натуральне число п та натуральну7 квадратну матрицю порядку п, кожний елемент якої не перевищує 9. Побудувати послідовність bі, ..., bn із нулів та одиниць, у якій 1, тоді і тільки тоді, коли елементи /-го стовпчика матриці утворюють паліндром.

13. Дано дійсну квадратну матрицю порядку 2п. Отримати нову матрицю, переставляючи її блоки розміру ПУП.

14. Дано дійсну квадратну матрицю порядку 2п. Отримати нову матрицю, переставляючи її блоки розміру пхп.

15. Побудувати квадратну матрицю порядку щ заповнюючи заштриховану частину матриці натуральним рядом чисел (решта елементів матриці повинні дорівнювати нулю).

16. Отримати квадратну матрицю порядку п

17. Дано цілочислову квадратну матрицю порядку п. Знайти значення елементів, що розташовані вище від головної діагоналі та діляться на 5 без остачі. Вивести індекси відповідних елементів.

18. Утворити квадратну матрицю порядку п, заповнюючи заштриховану частину матриці квадратами натурального ряду чисел.

19. Створиш квадратну матрицю порядку п

20. Створити квадратну матрицю порядку п

21. створити квадратну матрицю порядку п :

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

1. Що таке масиви?

2. Як описуються одно вимірні масиви? Як описуються двовимірні масиви?

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

Як здійснюється введення/виведення елементів масиву?

Лабораторна робота 5

ПОКАЖЧИКИ. ОБРОБКА МАСИВІВ ЗА ДОПОМОГОЮ

ПОКАЖЧИКІВ

Мета роботи: оволодіння навичками використання покажчиків при складанні програм мовою C++.

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

Покажчик - це змінна, яка містить адресу об'єкта. Покажчик описується так:

тип * ім'я змінної;

де тип - деякий тип мови С, що визначає тип об'єкта, на який вказує покажчик; * - показує , що наступна за нею змінна є покажчиком. Наприклад:

char *ch;

int *temp, і, *j;

float *pf,f;

де ch, temp, j, pf- покажчики; і -змінна типу int та f - змінна типу float.

З вказівниками зв'язані дві спеціальні операції: * та &. Операція & означає "е>зяти адресу", операція * відповідає словам "значення, яке міститься за адресою".

При оголошенні змінної, яка є покажчиком, дуже важливим є базовий тип. Якщо покажчик має базовий тип int, то змінна займає 2 байти пам'яті, char - 1 байт і т.ін. Над покажчиками можна виконувати арифметичні операції: складання та віднімання (операції ++ та - є частковими випадками цих операцій). Наприклад:

#include <stdio.h>

void main () {

int *p; int x;; p=&x ;

printf ("%p %p",p,++p) ; }

Нове значення покажчика вказує на адресу нового цілого, тому в результаті виконання програми значення покажчика р збільшилось не на 1, а на 2, оскільки ціле займає 2 байти. Якщо б базовий тип покажчика був не int, a double , то дані адреси відрізнялись би на 8, оскільки стільки байтів займає в пам'яті змінна типу double.

До покажчиків можна додавати чи віднімати ціле число. Загальна формула для розрахунку значення покажчика після виконання операції р=р+п буде мати вигляд р=р+п*<кількість байтів пам'яті базового типа покажчика>

У мові С існує важливий зв'язок між масивами та покажчиками. Прийнято, що ім'я масиву- це адреса пам'яті, починаючи з якої розташований масив, тобто адреса першого байта першого елемента масиву. Таким чином, якщо був оголошений масив int plus [10] ; то plus є покажчиком на перший елемент масиву. Оператори pl=plus; pl=&plus[0] ; призведуть до одного і того ж результату. Доступ до окремих елементів масиву може здійснюватись за допомогою таких еквівалентних посилань:

array [і] * (аггау+і)

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

п-2 п-\

Приклад. Обчислити Z хіУі + П

1=1 2=1

#incl ude<iomanip. h>

void main () {

int i,j,bl; float a,b; char *tab; float *el,*y;

cou t«endl« "Вв еді ть число: "«endl ; int n;cin»n; int m=8 *n;

if ( (tab-new char [m] ) ==NULL)

cerr« "He до c та тнь о пам' яті " ;

else

j і

el=(float *) tab;

for(1=1;і<=n;і++) {

cout«"Введіть х"«і«"

сіп»а;

*el=a;

el++; }

for (і=1;і<=п;і++)

г

і

cout «"Введіть у"«і«

сіп»а;

*el=a;

el++; }

a=0;el=(float *) tab; for (i=l;i<n-2;i++) { a+=(*el) * (*(el+n));

el++; }

b=l;

for (i=l ;i<=n;i++) {

b*=(*y) ;

У++; }

a+=bl; delete[] tab; coutЗнaчeння функції :

"<<a«endl ; }}

Порядок виконання роботи

L Проаналізувати умову задачі.

2. Модифікувати створену під час виконання в лабораторній роботі 4 програму згідно з номером варіанта, використовуючи доступ до елементів хмасиву через покажчики.

3. Матриці, отримані в результаті виконання лабораторної роботи, вивести на екран послідовно в текстовому режимі.

4. Результати роботи оформити протоколом.

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

1. Покажчики: оголошення, оператори & та *.

2. Як покажчики використовуються для доступу до елементів багатовимірних масивів?

3. Покажчики та аргументи функцій.

Як використовуються покажчики на функції?

Лабораторна робота 6

ФАЙЛИ. ОБМІН ІНФОРМАЦІЄЮ З ФАЙЛАМИ ТА МОДУЛЬНИЙ ПРИНЦИП ПРОГРАМУВАННЯ

Мета роботи: оволодіння навичками роботи з файлами даних та засвоєння модульного принципу програму вання.

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

У мові C++ для обміну інформацією з файлами використовуються потоки файлового введення/виведення ifstream та of stream, класи яких описано у файлі <fstream.h>.

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

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

Функції введення/виведення інформації у файл поділяються на два класи:

L Введення/виведення верхнього рівня (з використанням терміна "потік").

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

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

fopen () - відкрити потік введення/виведення; f close () - закрити відкритий потік введення/виведення; fseek () « змінити поточну позицію у файлі; rewind () - переставити покажчик поточного байта в потоці на початок файла.

Форматне введення/виведення файлів можна виконати за допомогою функцій fscanf О та fprintf () , які ідентичні функціям scanf () та printf () з тією лише різницею, що їх першим аргументом є покажчик, що посилається на файл, для якого здійснюється введення/виведення.

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

2. Введення/виведення нижнього рівня (з використанням терміна "дескриптор").

Функції введення/виведення низького рівня не виконують буферизацію та форматування даних. Вони дозволяють безпосередньо користуватися засобами введення/виведення операційної системи. Під час відкриття файла з ним зв'язується дескриптор. Дескриптор є цілим значенням, що характеризує розміщення інформації про відкритий файл у внутрішніх таблицях системи. Дескриптор використовується під час операцій з файлом.

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

Розташовані в різних файлах функції можна також об'єднати в одну програму за допомогою директиви препроцесора #incl ude:

#і п сі ude "myFi 1 е. срр

Однак такий спосіб не забезпечує відокремленої компіляції.

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

# і псі ude <stdio.h> #include <conio.h> #include <string.h> #include <iomanip.h> #include <fstream.h> #include <iostream.h> #include <process. h> struct box{ char num[10]; float sg; int ph; int pm; float v; float f; char c[5]; it

typedef struct box* ptr; int x, j;

void sort (ptr* d) ;

ptr input (char* g, float m, int k, int n,float v, float r, char* z); void main()

{

externx, j; ptr s[50] ; char Q[10]r Z[5]; int I, K,N; float M,V,R;

3=0;

cin»M; cin»K; cin»N; cin»V; cin»R; cin»Z;

clrscr () ; cout«"

«endl;

for (i=0;i<50;i++) {

gotoxy(1, 10+i*2);

if ( (fscanf ("%s",Q) ) !=EOF) {

gotoxy(10, 10+i*2) gotoxy (20, 10+i*2) gotoxy (33, 10+i*2) gotoxy (47, 10+i*2) gotoxy(61, 10+i*2) gotoxy (77, 10+i*2) s[j]=input(Q, M, N, V, R, Z);

j=j+l; }

else i=50; }

for(x=0; x<j; x++) sort(&s[x]); ofstream p("c:\\res", ios:trunc); if (p. fail () )

{cerr«"Cannot open file ...";

getch(); exit(-l); }

p« "___

"endl;

for (i=0; i<3; i++)

p«setw (8) «setfill ( 1 *)«s [I]->num«' "«setprecision (2) «setw(7) «setfill (

<<s[i] ->sg«" | "«setw (11) «set fill (л *)«s[I] ->ph«" | "«setw (10) «setfill ( * *)«s[I] >pm«" | "«setprecision (2)«setw(ll) «setfill ( 1 1) «s [1] ->v«" I "<<se tpreci -

sion (2) «setw (10) «setfill y)«s[I]->f«" | "«s [I] ->c«endl;

p. close () ; }

ptr input (char* gf float m, int k, int n,

float v, float rr char* z) {

ptr у; y=new box;

strcpy (y->num, g) ; y->ph=k ; y~>pm-n ; y->v=v;y->f=r; y->sg=m; s trcpy (y~>c,z);

return y; }

void sort (ptr* d) {

extern j, x; ptr p, *r; int h;

for(h=x+l; h<j; h++) ptr p,*r; int h;

for (h=x+l; h<j; h++) {

p=*d; d= (d+h) ; r=d+h;

*r=p; }

}

Порядок виконання роботи 4

1. Проаналізувати умову задачі.

2. Розробити алгоритм та створити програму розв'язання задачі згідно з номером варіанта. При цьому розмістити функції програми у двох (або більше) різних файлах, та об'єднати ці файли у спільну програму двома різними способами:

а) реалізувати модульний принцип програмування, створивши проект, у якому всі функції, крім головної, містяться в окремому файлі;

б) продемонструвати об'єднання декількох файлів за допомогою директиви #include.

3. Результати роботи оформити протоколом.

Варіанти завдань

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

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

1. Поясніть поняття "введення/виведення високого рівня" (потік, буферизація роботи з файлами).

2. Наведіть стандартну послідовність дій у випадку доступу до файла з використанням потоків.

3. Що таке введення/виведення низького рівня (поняття префіксно- го доступу, дескриптора)?

4. Що таке модульний принцип програмування?

5. Сформулюйте переваги модульного принципу програмування відносно об'єднання файлів за допомогою директиви # include.

Лабораторна робота 7

ФУНКЦІЇ

Мета роботи: навчитись складати та реалізовувати програми з використанням функцій.

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

Функція - це самостійна одиниця програми, спроектована для розв'язання конкретних задач.

Основна форма опису функції має вигляд

тип ім'я функції (список параметрів) {

тіло функці1 }

Наприклад:

float step (float а, int b) {

float і;

if (a<0) return (-1) ; a=l;

for(i=b; i;i-) a*=a;

return a; }

Тип визначає тип значення, яке вертає функція за допомогою оператора return. Якщо тип не вказаний, то за замовчуванням вважається, що функція вертає ціле значення (типу int). Список параметрів складається з типів та імен параметрів, розділених комами.

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

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

Приклад. Написати програму, яка містить функцію, що знаходить найменший елемент масиву та повертає його індекс.

#іпсіude<stdiо.h> #include<conio.h> int f2(int c[], int n);

void main () {

int a [10] , I;

for (i=0; i<10;i++) {

printf ("\n a[%d]=",i);

scanf ("%d",&a[i] ) ; }

printf("\n indexmin=%d" ,f2 (a[] ,10) ;

getch () ; }

int f2(int c[] r int n) {

int m,irk;

for (m=c[0] ri=l rk=0;i<n; i++) if (c[i ]>m) {m=c[i] ;

k=i ; }

return k; }

Порядок виконання роботи

1. Проаналізувати умову задачі.

2. Розробити алгоритм та створити програму розв'язання задачі згідно з номером варіанта.

3. Результати роботи оформити протоколом.

Варіанти завдань

Скласти програму з використанням функції: 1) яка знаходить у масиві два однакові елементи та повертає індекс першого з них, у разі відсутності однакових елементів повертається -1;

2) яка знаходить число, що дорівнює 2 в степені к, яке менше або дорівнює п і повертає степінь

3) яка переставляє елементи масиву відносно його середини;

4) яка визначає для кожного елементу масиву, у скільки разів він більше інших елементів, а в скільки разів менше, та при тотожності цих чисел повернути значення індексу елементу, інакше повернути -1;

5) яка знаходить найбільшу кількість однакових елементів масиву;

6) яка знаходить найбільшу кількість послідовно розташованих елементів масиву, впорядкованих за зростанням;

7) яка за заданим числом (меншим від 1000000) знаходила б значення відповідного йому перевернутого числа.

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

1. Для чого призначені функції?

2. Як опису ється заголовок фу нкції?

3. Чим відрізняються формальні та фактичні параметри?

4. Як здійснюється виклик функції?

Лабораторна робота 8 СТРУКТУРИ

Мета роботи: отримання навичок роботи із структурованими типами даних та ознайомлення з принципами динамічного розподілу пам'яті.

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

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

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

Наприклад:

struct BOOK (char name [20] ; char title[44]; int year; float price; ) ;

Поле структури може мати будь-який тип, у тому числі бути іншою (вкладеною) структурою.

Наприклад:

struct UDC( char class, subclass;

int number;); struct BOOK (struct UDC udk__ class; char name[20]; char title[44]; int year;

float price; ) first_book, child_bookf dog_book;

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

Наприклад:

struct Book* ptrbook; ptrbook->&firstbook; ptrbook->year=l992; ci n»p trbook->pri ce ;

Механізм розподілу динамічної пам'яті дозволяє динамічно (у міру виникнення потреби) запитувати з програми додаткові області оперативної пам'яті. Після використання області пам'яті її необхідно звільнити. Функції динамічного розподілу пам'яті містяться в бібліотеці alloc.h. Операція лем створює об'єкт типу7 ім'я типу до якого він застосований. Операція має такий синтаксис: new ім'я__типу [ ініціалізатор] new ім1 я_тмпу

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

Операція delete знищує об'єкт, створений операцією new. Її результат має тип void. Операнд delete повинен бути покажчиком, що повернений new.

Приклад. Дані про заводи зводяться в документ. Ввести дані про заводи. Організувати побудову переліку в напрямі надходження інформації про заводи з вхідного потоку . Впорядкувати перелік у напрямі зростання обсяг) фактично зробленої продукції.

#incl ude<coni о. h> #incl ude<i отапір. h> static struct zavod{ struct zavod *p; char name[15]; struct osn_sv { long int m3; struct kol_pr{ unsigned v; unsigned s; : k;

struct proguct { unsigned pi;

unsigned f; } p;

Jo;

char h[15]; } zrust, lift; static int і ,v;

void sort(void) {

for(v=0;v<i;v++) {

u=ust;

while((t==u->p)!=NULL) {

if (t->o.p. f>u->o.p. f) {

if (u==ust) ust=t; else z->p-t; u->p=t->p; t->p-=u;

z=t; }

else {

z=u;

u=t; }

} } }

void main() {

char c;

z=ust=new zavod; clrscr () ;

cout«"Введіть дані про заводи";

for (і=0; ;і++) {

cou t«endl«endl «"Назва заводу"«зetw (28) «setfi 11 ( * ')«""; cin»z->name ;

cou t«"Основні відомості "«endl; соиЬ«"Плоіщ "«setw (35) «setfill ( 1 y) «""; cin»o.m3 ;

cou Ь«"Кількі сть персоналу "«endl; cout«"3 вищою освітою"«зеЬю (25) «setfill ( 1 V «""; cin»z->o.k. v; cout«"3 середньою освітою"«зеЬ^ (21) «setfill ( 1 ')«""; cin»z->o. k. s;

cout«"Об* єм продукці 1 "«endl ; cout«" За ruiaHOM"«setw (25) «setfill ( 1

сі n»z ->o. p. pi;

cout«" Фактично"«setw (26) «setfill ( 1 cin»z->o.p. f;

cout«"Коментарі "«setw (31) «setfill (1 cin»z->h;

cout«" Чи є дані про заводи? (Y/N) if ((c-getche() )=='n' I I c=='N') break;

if ( (z->p=new zavod) ==NULL) {

cerr«"Немає вільної пам'яті";

return; }

z=z->p; }

z->p=NULL; sort () ;}

Порядок виконання роботи

1. Проаналізувати умову задачі.

2. Розробити алгоритм та створити програм} розв'язання задачі згідно з номером варіанта.

3. Результати роботи оформити протоколом.

Варіанти завдань

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

2. Вивести перелік ВНЗ з кількістю студентів, які працюють за спеціальністю після закінчення ВНЗ. Розташувати інформацію в порядку спадання. Визначити процентне співвідношення по всіх ВНЗ.

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

© um.co.ua - учбові матеріали та реферати
4. Вивести інформацію про Г

Пространственное и линейное зашумление | МИНИСТЕРСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ ПО ДЕЛАМ ГРАЖДАНСКОЙ ОБОРОНЫ, ЧРЕЗВЫЧАЙНЫМ СИТУАЦИЯМ И ЛИКВИДАЦИИ ПОСЛЕДСТВИЙ СТИХИЙНЫХ БЕДСТВИЙ