рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

ПРОГРАМУВАННЯ

ПРОГРАМУВАННЯ - раздел Философия, Міністерство Освіти, Науки, Молоді Та Спорту України   ...

МІНІСТЕРСТВО ОСВІТИ, НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ

 

Івано-Франківський національний технічний університет нафти і газу

 

 

В.М. Юрчишин, Б.В. Клим, В.Б. Кропивницька

 

 

ПРОГРАМУВАННЯ

 

НАВЧАЛЬНИЙ ПОСІБНИК

 

 

Рекомендовано методичною радою університету

 

протокол № ­­­­_______ від ____________ 2011 р.

 

 

Івано-Франківськ


ББК 22.18

УДК 004.4(075.8)

 

Юрчишин В.М., Клим Б.В., Кропивницька В.Б. Програмування. Навчальний посібник – Івано-Франківськ: ІФНТУНГ, 2011. – 124 с.

 

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

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

 

Рецензенти:

 

зав. каф. інформатики ІФНТУНГ, д.т.н., проф. Д.Ф. Тимків;

 

к.т.н., доц. каф. інформатики Прикарпатського Національного університету ім. В. Стефаника В.О. Горєлов

 

Рекомендовано методичною радою університету

протокол № ­­­­_______ від _____________ 2011 р.

 

 

© В.М. Юрчишин, Б.В. Клим, В.Б. Кропивницька, 2011

© ІФНТУНГ, 2011

  ЗМІСТ  
     
  Вступ ___________________________________________
Сортування ______________________________________
1.1 Методи сортування _______________________________
1.2 Сортування структур ______________________________
1.3 Сортування зв’язаного списку
Пошук __________________________________________
2.1 Алгоритми пошуку ________________________________
2.2 Індекси __________________________________________
Обробка літерних рядків __________________________
Дата. Час ________________________________________
4.1 Функції дати і часу ________________________________
4.2 Форми представлення дати і часу ____________________
4.3 Строкове форматування часу _______________________
4.4 Визначення часу виконання програми _______________
Класи ___________________________________________
5.1 Основні поняття __________________________________
5.2 Конструктори і деструктори ________________________
5.3 Конструктори з параметрами _______________________
5.4 Спадкування _____________________________________
5.5 Віртуальні функції ________________________________
5.6 Перевантаження функцій __________________________
5.7 Вказівники на об’єкти _____________________________
Задачі для самопідготовки _________________________
  Перелік рекомендованих джерел ____________________
  Додаток А – Зразки даних для побудови структур ______

 

 

ВСТУП

 

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

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

Історично склалося так, що комп’ютери витрачають більше часу на сортування, ніж на що-небудь інше. Четверту частину часу роботи універсальних, а в деяких випадках і спеціалізованих обчислювальних машинах займає сортування (The Art of Computer Programming, Volume 3: Sorting and Searching, DE Knuthf Addison-Wesley, Reading MA, 1973). Сортування є найбільш вивченим завданням в теорії обчислювальних машин і систем. Відомі буквально десятки різних алгоритмів, більшість з яких мають певні переваги в різних ситуаціях. Стівен Скина (Steven S. Skiena,) у книзі ”The Algorithm Design Manual“ пише, що сортування є тим базовим блоком, на підставі якого будуються багато інших алгоритмів. Засвоївши методи сортування, можна приступити до успішного вирішення багатьох інших завдань.

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

 

 

СОРТУВАННЯ

1.1 Методи сортування   Сортувати можна дані будь-якого базового типу, представлені в довільному вигляді, однак найчастіше сортувати потрібно…

ОБРОБКА ЛІТЕРНИХ РЯДКІВ

Роботу з рядками символів забезпечують стандартні функції. Всі вони описані у відповідних файлах з розширенням *.h. Розглянемо деякі найбільш… Функції перевірки і перетворенняописані в файлі ctype.h, вони такі: -isalpha(c) – перевіряє чи символ с є буквою;

ДАТА. ЧАС

  Стандартна бібліотека С містить набір функцій для обробки дати та часу, всі…  

КЛАСИ

 

5.1 Основні поняття

 

З розвитком засобів обчислювальної техніки появлялися й нові методики програмування, зокрема такі:

- програмування безпосередньо в машинних кодах. Це найбільш трудоміский вид програмування, який вимагав від програміста знання будови обчислювальної машини та особливостей машинних команд. Такі програми найважче налагоджувати, бо їхній текст містить усього два символи: 0 і 1;

- програмування мовою асемблер. Робота програміста стала продуктивнішою, команди замінювалися більш зрозумілими словами, застосовувалися ідентифікатори змінних, автоматично розподілялася пам’ять комп’ютера;

- програмування мовами високого рівня, таких, наприклад, як Фортран;

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

- об’єктно-орієнтоване програмування (С++).

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

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

Поняття об’єкта тісно пов’язано з поняттям класу. Клас – це тип, він являє собою подальший розвиток поняття структури (мовою С – struct), головною його особливістю є наявність функцій. Об’єкт – це представник певного класу. Візьмемо, наприклад, клас “собака”, який моделює поведінку (бігає, подає голос) та властивості (колір, вага), загальні для всіх собак. Якщо такий клас доповнити відомостями про конкретного собаку (певну реакцію на подразники, білий колір, вага 10 кг), то одержимо об’єкт класу “собака”. Як видно з цього прикладу, класом можна назвати модель деякого абстрактного об’єкта.

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

Оголошення класу має такий вигляд:

 

class ім’я класу

{перелік закритих функцій і змінних;

public: перелік відкритих функцій і змінних;

}список об’єктів; //не обов’язковий

 

Дані, доступні для використання лише всередині об’єкта (закриті) оголошуються як private (прийнято за замовчуванням), а дані доступні ззовні – public. Закриті функції і змінні доступні тільки для інших членів цього класу. Відкриті функції і змінні доступні для будь-якої частини програми, яка має клас. Функції, оголошені всередині опису класу, називаються функціями-членами (member functions). Їх визначення має такий вигляд:

 

тип ім'я класу:: ім'я функції-члена (параметри)

{ тіло функції;

}

 

Дві двокрапки після імені класу називаються операцією розширення області видимості (scope resolution operator).

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

Складемо програму (приклад 5.1), яка буде підносити до квадрату число 3.

 

Приклад 5.1. – Опис та використання класу klac

 

# include <iostream.h>

class klac { //оголошення класу klaс

int a; // змінна а, доступна лише для функції kwadrat( )

public:

int kwadrat(int); // функція kwadrat( ), доступна ззовні

};

 

int klac::kwadrat(int b) //визначення функції kwadrat( )

{

a = b*b;

return a;

}

 

int main(void)

{

klac cob; // створення об’єкта сob типу klac

cout<<"n"<<cob.kwadrat(3)<<"n"; //використання функції kwadrat( )

return 0;

}

 

У цій програмі застосовується файл iostream.h, в якому знаходяться операції потокового вводу – cin та виводу – cout. Вони призначені для потокового вводу-виводу даних, тому працюють швидше, ніж відомі функції, такі, наприклад, як scanf( ) і printf( ). Нижче, після цієї директиви оголошено клас klaс, який має два члени: закрита змінна a та відкрита функція kwadrat( ) – обидва цілого типу. За цим оголошенням слідує визначення функції kwadrat( ), яка має один вхідний параметр – змінну b цілого типу. В тілі функції змінній a, закритій для інших, але доступній для функції kwadrat( ), присвоюється значення квадрату вхідного параметра. Результат виконання функції повертається в ту програму, яка її викликає (в даному випадку – в головну, main).

Наприкінці прикладу подано сам текст програми main. На її початку оголошено об’єкт cob типу klac та відбувається звернення до функції kwadrat( ) з параметром 3.

Під час виконання головної програми буде створено об’єкт cob типу klac, після чого виконається операція cout, яка містить звернення до функції kwadrat( ) та буде виведено на екран результат її виконання – число 9. Звернемо увагу на те, що при зверненні до функції kwadrat( ) в головній програмі вказано ім’я об’єкта cob, яке відділяється від імені функції символом крапка. Однак, при зверненні до змінної a всередині функції kwadrat( ) не вживається ні ім’я об’єкта, ні крапка.

 

5.2 Конструктори і деструктори

 

Мова С++ надає можливість використовувати дві спеціальні функції: конструктор та деструктор. Вони включається в опис класу і мають те ж ім’я, що й клас, лише перед описом деструктора ставиться значок ~ (тільда). Ці функції виконуються автоматично і не повертають ніякого значення. Конструктор виконується під час створення об’єкта, а деструктор – при закінченні головної програми. Їх, зокрема, можна використати, першу – для ініціалізації змінних, другу – для вилучення об’єкта з пам’яті.

Конструктор показаний у прикладі 5.2.

 

Приклад 5.2 – Застосування конструктора

 

# include <iostream.h>

// Оголошення класу klac

class klac

{

int a;

public:

klac(); // Конструктор

void kwadrat( );

};

 

// Ініціалізація а = 3 конструктором при створенні об'єкта cob

klac::klac( )

{

a = 3;

}

 

// Функція kwadrat( ), піднесення числа a до квадрату і виводу результату

void klac::kwadrat( )

{

cout << a*a;

return;

}

 

int main(void) // Головна програма

{

klac cob; // Створення об'єкта cob

cob.kwadrat(); // Виклик функції kwadrat( )

return 0;

}

 

Як видно з цього прикладу, конструктор викликається при створенні об’єкта cob.

Функція деструктор може виконувати будь-яку роботу. Крім того, вона застосовується для вилучення об’єкта, створеного тим класом, де вона описана. Тоді звільняються зайняті ним ресурси: пам’ять та ін. Вона теж включається в оголошення класу, в програмі прикладу 5.3 показано її застосування.

 

Приклад 5.3 – Застосування деструктора

 

# include <iostream.h>

// Оголошення класу klac:

class klac

{

int a;

public:

klac(void ); // Конструктор

~klac(void); // Деструктор

void kwadrat(void);

};

 

// Визначення конструктора:

klac::klac(void)

{

a = 3; // Ініціалізація змінної a

}

// Визначення деструктора:

klac::~klac(void)

{

cout << "Звільнення ресурсівn";

}

 

// Визначення функції kwadrat( ):

void klac::kwadrat(void)

{

cout << a*a << "n"; // Піднесення до квадрату і вивід

return;

}

 

int main(void) // Головна програма:

{

klac cob; // Створення об'єкта cob

cob.kwadrat( ); // Виклик функції kwadrat( )

return 0;

}

 

Тут деструктор викликається для вилучення об’єкта cob при закінченні виконання програми.

 

5.3 Конструктор з параметрами

 

Конструктору можна передати параметри. Для цього потрібно додати необхідні параметри в оголошення і визначення конструктора. Потім під час оголошення об’єкта параметри задаються як аргументи. Це показано в прикладі 5.4

 

Приклад 5.4 – Конструктор з параметрами

 

# include <iostream.h>

class myclass

{

int a;

public:

myclass(int x); // конструктор

void show( );

};

 

myclass::myclass(int x)

{

cout << "У конструкторіn";

a = x;

}

 

void myclass::show( )

{

cout << a << "n";

return;

}

 

int main(void)

{

myclass ob(4);

ob.show( );

return 0;

}

 

Тут конструктор myclass() має один параметр. Значення, передане в myclass( ) використовується для ініціалізації змінної а. Аргумент 4 передається об’єкту ob(4) в якості аргумента. Деструктор, на відміну від конструктора, параметрів не має.

У цій програмі конструктору передавалися константи, але так само можна передавати й змінні. Це показано в прикладі 5.5.

 

Приклад 5.5 – Передача параметрів конструктору

 

# include <iostream.h>

class myclass

{

int i, j;

public:

myclass(int a, int b);

void show( );

};

 

myclass::myclass(int a, int b)

{

i = a;

j = b;

}

 

void myclass::show( )

{

cout << i << ' ' << j << "n";

}

 

void main(void)

{

int x, y;

cout << "Введіть два цілі числа: ";

cin >> x >> y;

// використання змінних для створення ob

myclass ob(x, y);

ob.show( );

return 0;

}

У цьому прикладі розкрита важлива властивість об’єктів: вони можуть створюватися в міру необхідності.

 

5.4 Спадкування

 

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

 

Приклад 5.6 – Демонстрація похідного класу

 

//Базовий клас

class B

{

int i;

public:

void set_i(int n);

int get_i( );

};

 

//Похідний клас D

class D : public B

{

int j;

public:

void set_j(int n);

int mul( );

};

 

Після імені класу D стоїть двокрапка, за якою є ключове слово public та ім’я класу B. Це означає, що клас D буде успадковувати всі компоненти класу B. Саме ключове слово public інформує компілятор про те, що, оскільки B буде успадковуватися, то всі відкриті елементи базового класу будуть відкритими елементами похідного класу. Проте всі закриті елементи базового класу залишаються закритими. Механізм спадкування подано в прикладі 5.7.

 

 

Приклад 5.7 – Спадкування

 

// Приклад спадкування

# include <iostream.h>

// Визначення базового класу

class base

{

int i;

public:

void set_i(int n);

int get_i( );

};

 

// Визначення похідного класу

class derived : public base

{

int j;

public:

void set_j(int n);

int mul( );

};

 

// Визначення i у базовому класі

void base::set_i(int n)

{

i = n;

}

 

// Повернення значення i у базовому класі

int base::get_i( )

{

return i;

}

 

// Визначення j у похідному класі

void derived::set_j(int n)

{

j = n;

}

 

// Повернення значення i із base та j – із derived

int derived::mul( )

{

// похідний клас може викликати функції-члени базового класу

return j * get_i( );

}

 

int main(void)

{

derived ob;

ob.set_i(10); // завантаження i у base

ob.set_j(4); // завантаження j у derived

cout << ob.mul( ; // вивід числа 40

return 0;

}

 

У визначенні mul( ) викликається функція get_i( ) базового класу B, а не похідного D, це означає, що відкриті члени базового класу стають відкритими членами похідного. Але у функції mul() замість прямого доступу до i необхідно викликати get_i( ) тому, що закриті члени базового класу (змінна i) залишаються закритими для похідних класів.

 

5.5 Віртуальні функції

 

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

 

Приклад 5.7 – Віртуальні функції

 

# include <stdio.h>

class base

{

public:

int i;

base(int x); // конструктор

void func(void)

{

printf("Базова функція %d", i);

return;

}

};

 

//текст конструктора

base::base(int x)

{

i = x;

return;

};

class der1: public base

{

public:

der1(int x) :base(x) { }; //конструктор

void func()

{

printf("Функція з похідного класу %d", i*i);

return;

}

};

 

int main(void)

{

base * pc; // вказівник на базовий клас

base ob(2); // створити примірник об'єкта базового класу

der1 ob1(2); // створити примірник об'єкта похідного класу

pc=&ob; // вказівник на об'єкт базового класу

pc->func( ); // виклик функції базового класу

pc=&ob1; // вказівник на об'єкт похідного класу

pc->func( ); // спроба виклику функції похідного класу

return 0;

}

 

На перший погляд здається, що в першому випадку буде викликатися функція базового класу, а в другому – похідного. Проте, і у тому, і в іншому випадку буде викликана функція базового класу. Справа в тому, що компілятору важко визначити яку реально функцію ми маємо на увазі і він на стадії компілювання підставляє у всіх тих випадках, де зустрічається ім’я func( ), адресу функції базового класу. Такий процес установки адрес називається “раннім зв’язуванням”. Іноді вживається термін “статичне зв’язування”. Якщо ж потрібно, щоб у другому випадку, тобто коли покажчик pc указує на похідний клас, викликалася функція цього класу, її ще в базовому класі варто зазначити як віртуальну. У нашому випадку замість рядка void func( ) варто написати virtual void func( ). Після цього програма прикладу буде працювати задовільно.

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

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

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

 

Приклад 5.8 – Властивості віртуальних функцій

 

# include <stdio.h>

class base

{

public:

int i;

base(int x); //конструктор

virtual void func( )

{

printf("Базова функція %dn", i);

return;

};

};

//текст конструктора

base::base(int x)

{

i = x;

return;

};

class der1: public base

{

public:

der1(int x) :base(x) { }; //конструктор

void func( )

{

printf("Функція з похідного класу %dn", i*i);

return;

}

};

class der2: public base {

public:

der2(int x) :base(x) { }; //конструктор

};

 

int main(void)

{

base * pc; // вказівник на базовий клас

base ob(2); // створити примірник об'єкта базового класу

der1 ob1(2); // створити примірник об'єкта похідного класу 1

der2 ob2(2); // створити примірник об'єкта похідного класу 2

pc=&ob; // вказівник на об'єкт базового класу

pc->func( ); // виклик функції базового класу

pc=&ob1; // вказівник на об'єкт похідного класу 1

pc->func( ); // спроба виклику функції похідного класу

pc=&ob2; // вказівник на об'єкт похідного класу 2

pc->func( ); // спроба виклику функції похідного класу

return 0;

}

 

Тут введено ще один похідний клас. У ньому функція func( ) не визначена. У цьому випадку буде викликатися функція класу батька, тобто з’явиться рядок: Базова функція 2. Якщо потрібно, щоб викликалася функція батьківського класу, не слід визначати її в похідному. А, якщо потрібно, щоб для класу об’єктів der2 викликалася функція класу der1, треба зробити клас der2 спадкоємцем не класу base, а класу der1.

Отже, якщо потрібно, щоб у всіх похідних класах обов’язково була визначена віртуальна функція, то в базовому класі її треба визначити так :

 

virtual void func() = 0;

 

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

 

5.6 Перевантаження функцій

 

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

 

Приклад 5.9 – Перевантаження функцій

 

# include <iostream.h>

void k(int a); // прототип першої функції

void k(int a, float b); // прототип другої функції

 

void k(int a) // опис першої функції

{

cout << a <<"n";

}

 

void k(int a, float b) // опис другої функції

{

cout <<a<<"n"<< b <<"n";

}

 

int main(void)

{

k(4); // виклик першої функції

k(5, 10.2); // виклик другої функції

return 0;

}

 

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

 

5.7 Вказівники на об’єкти

 

Доступ до члена об’єкта можливий не тільки через точку (.), але й через вказівник на об’єкт. У цьому випадку застосовують стрілку (мінус-більше: ->), що показано в прикладі 5.10.

 

Приклад 5.10 – Використання вказівника на об’єкт

 

# include <iostream.h>

class myclass

{

int a;

public:

myclass(int x); // конструктор

int get( );

};

 

myclass::myclass(int x)

{

a = x;

}

 

int myclass::get( )

{

return a;

}

 

int main(void)

{

myclass ob(120); // створення об'єкта

myclass *p; // створення покажчика на об'єкт

p = &ob; // передача адреси ob у p

cout << "Значення, одержуване при використанні об'єкта:" << ob.get();

cout << "n";

cout << "Значення, одержуване при використанні покажчика:" << p->get();

return 0;

}

 

У цій програмі оголошення myclass *p створює вказівник на об’єкт myclass (але – не сам об’єкт). Передача адреси об’єкта ob змінній p відбувається у виразі p = &ob. Для одержання доступу до об’єкта через вказівник p використовується вираз:

 

p->get( ).

 

 

6 ВАРІАНТИ ЗАВДАНЬ ДЛЯ ВИКОНАННЯ ПРАКТИЧНИХ РОБІТ

 

Варіант 1. Екологiчний стан атмосферного повiтря за даними газохроматографiчного аналiзу

 

Задача 1. Утворити масиви структур на основі інформації, зразки якої подані в таблиці А.1 додатка А. Вона містить такі дані про екологiчний стан атмосферного повiтря за даними газохроматографiчного аналiзу:

 

1 – назва області України;

2 – назва населеного пункту;

3 – геоморфологічна прив’язка місця відбору проби;

4 – дата відбору проби;

5 – вміст вуглекислого газу, мг/м3;

6 – вміст СО, мг/м3;

7 – вміст SO2, мг/м3;

8 – вміст бензину, мг/м3;

9 – вміст HCl, мг/м3.

 

Рекомендації до створення структур:

 

1 – Області: код області, назва області;

2 – Населені пункти: код населеного пункту, код області, назва населеного пункту, геоморфологічна прив’язка місця відбору проби;

3 – Дані відбору проб: код населеного пункту, дата відбору проби, вміст вуглекислого газу, вміст СО, вміст SO2, вміст бензину, вміст HCl;

 

Задача 2. Підготувати і занести в структури контрольні дані.

Задача 3. Створити зв’язані списки із масивів структур.

Задача 4. Виготовити звіт про розподіл максимальних значень вмісту SO2 у атмосферному повітрі кожного населеного пункту по кварталах поточного року. Навпроти назв областей і населених пунктів установити максимальні значення вмісту речовини за кожний квартал. Передбачити вивід підсумкових максимальних значень по вертикалі для областей і по горизонталі. До заголовка звіту додати слова “станом на” і встановити поточну дату.

Задача 5. Виготовити звіт у якому відобразити усереднений вміст речовин у атмосферному повітрі кожного населеного пункту протягом поточного року. У звіт внести назви областей, населених пунктів та геоморфологічну прив’язку місця відбору проб. Підвести підсумки (середні значення) для кожної області. Завдання виконати у двох варіантах: використати масиви структур та зв’язані списки.

Задача 6. Скласти програму мовою С для сортування зв’язаних списків.

Задача 7. Виготовити два індекси, один для числових даних, другий – для літерних. Дані вибрати самостійно.

Задача 8. Скласти програму для пошуку даних за допомогою індексів. Зразки даних для пошуку підібрати самостійно.

 

Варіант 2. Реалізація продукції хлібозаводу

 

Задача 1. Утворити масиви структур на основі інформації, зразки якої подані в таблиці А.2 додатка А. Вона містить такі дані про реалізацію продукції хлібозаводу:

 

1 – назва виробу;

2 – постачальник сировини;

3 – дата реалізації виробу;

4 – торгова точка;

5 – кількість, шт;

6 – ціна за одну булку, грн;

7 – наявність п’ятивідсоткової націнки за поставку.

 

Рекомендації до створення структур:

 

1 – Хлібовироби: код виробу, назва виробу, ціна за одиницю виробу;

2 – Постачальник: код постачальника, назва постачальника сировини;

3 – Торгова точка: код торгової точки, назва торгової точки, наявність п’ятивідсоткової націнки за поставку;

4 – Збут: код виробу, код постачальника, код торгової точки, кількість, дата.

 

Задача 2. Підготувати і занести в структури контрольні дані.

Задача 3. Створити зв’язані списки із масивів структур.

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

Задача 5. Виготовити звіт, вказати назви виробів, назви торгових точок та сумарну кількість кожного проданого товару в поточному році в тих торгових точках, де відсутня торгова націнка. До заголовка звіту додати слова “станом на” і встановити поточну дату. Завдання виконати у двох варіантах: використати масиви структур та зв’язані списки.

Задача 6. Скласти програму мовою С для сортування зв’язаних списків.

Задача 7. Виготовити два індекси, один для числових даних, другий – для літерних. Дані вибрати самостійно.

Задача 8. Скласти програму для пошуку даних за допомогою індексів. Зразки даних для пошуку підібрати самостійно.

 

Варіант 3. Нафтогазоносні родовища України

 

Задача 1. Утворити масиви структур на основі інформації, зразки якої подані в таблиці А.3 додатка А. Вона містить такі дані про нафтогазоносні родовища України:

 

1 – назва регіону;

2 – назва області України;

3 – назва родовища;

4 – місце розташування родовища;

5 – тип родовища;

6 – розміри за покладами нафти;

7 – розміри за покладами газу;

8 – рік відкриття;

9 – рік введення в розробку.

Рекомендації до створення структур:

 

1 – Регіон: код регіону, назва регіону;

2 – Область: код регіону, код області, назва області України;

3 – Родовище: код області України, код родовища, назва родовища, місце розташування родовища, код типу родовища, код розміру за покладами нафти, код розміру за покладами газу, рік відкриття, рік введення в розробку;

4 – Тип родовища: код типу родовища, тип родовища;

5 – Розміри родовища: код розміру родовища, розміри родовища.

 

Задача 2. Підготувати і занести в структури контрольні дані.

Задача 3. Створити зв’язані списки із масивів структур.

Задача 4. Виготовити звіт про розподіл кількості родовищ в областях за типом родовища. Навпроти назв регіонів і областей, розділених комами, установити значення кількості для кожного типу родовища. Передбачити підсумки по вертикалі і по горизонталі. До заголовка звіту додати слова “станом на” і встановити поточну дату.

Задача 5. Виготовити звіт з відомостями про родовища, куди внести назви регіонів, назви родовищ та різницю в роках між моментом відкриття і введення в розробку. Відібрати лише нафтогазові родовища. До заголовка звіту додати слова “станом на” і встановити поточну дату. Підсумувати різницю в роках для регіонів і для всього звіту. Завдання виконати у двох варіантах: використати масиви структур та зв’язані списки.

Задача 6. Скласти програму мовою С для сортування зв’язаних списків.

Задача 7. Виготовити два індекси, один для числових даних, другий – для літерних. Дані вибрати самостійно.

Задача 8. Скласти програму для пошуку даних за допомогою індексів. Зразки даних для пошуку підібрати самостійно.

 

Варіант 4. Запаси нафти у родовищах України

 

Задача 1. Утворити масиви структур на основі інформації, зразки якої подані в таблиці А.4 додатка А. Вона містить такі дані про запаси нафтопродуктів у родовищах України:

1 – назва регіону;

2 – назва області України;

3 – назва родовища;

4 – місце розташування родовища;

5 – розміри за покладами нафти;

6 – розміри за вмістом газу;

7 – рік відкриття;

8 – рік введення в розробку.

 

Рекомендації до створення структур:

 

1 – Регіон: код регіону, назва регіону;

2 – Область: код регіону, код області, назва області України;

3 – Родовище: код родовища, код області України, назва родовища, місце розташування родовища, код розміру за покладами нафти, код розміру за покладами газу, рік відкриття, рік введення в розробку;

4 – Розміри родовища: код розміру родовища, розміри родовища.

 

Задача 2. Підготувати і занести в структури контрольні дані.

Задача 3. Створити зв’язані списки із масивів структур.

Задача 4. Виготовити звіт про розподіл кількості родовищ за розмірами за покладами нафти по областях. Навпроти назв областей установити значення кількості родовищ для кожного розміру за покладами нафти. Передбачити підсумки по вертикалі і по горизонталі.

Задача 5. Виготовити звіт, куди внести назви регіонів і родовищ, відкритих протягом останніх 10 років, рік відкриття та розміри за покладами нафти. Відібрати лише великі та середні родовища за покладами нафти. До заголовка звіту додати слова “станом на” і встановити поточну дату. Завдання виконати у двох варіантах: використати масиви структур та зв’язані списки.

Задача 6. Скласти програму мовою С для сортування зв’язаних списків.

Задача 7. Виготовити два індекси, один для числових даних, другий – для літерних. Дані вибрати самостійно.

Задача 8. Скласти програму для пошуку даних за допомогою індексів. Зразки даних для пошуку підібрати самостійно.

 

Варіант 5. Газосховища України

 

Задача 1. Утворити масиви структур на основі інформації, зразки якої подані в таблиці А.5 додатка А. Вона містить такі дані про газосховища України:

 

1 – назва комплексу;

2 – назва газового сховища;

3 – об’єм газового сховища, млн м3;

4 – кількість свердловин;

5 – добова продуктивність свердловин;

6 – кількість запомпованого газу, млн. м3;

7 – кількість вибраного газу, млн. м3;

8 – дата занесення даних.

 

Рекомендації до створення структур:

 

1 – Комплекс: код комплексу, назва комплексу;

2 – Сховище: код комплексу, код газового сховища, назва газового сховища, об’єм газового сховища, кількість свердловин, добова продуктивність свердловин;

3 – Рух газу: код газового сховища, кількість запомпованого газу, кількість вибраного газу, дата занесення даних.

 

Задача 2. Підготувати і занести в структури контрольні дані.

Задача 3. Створити зв’язані списки із масивів структур.

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

Задача 5. Виготовити звіт для взятого з форми комплексу про кількість запомпованого газу для кожного сховища на поточну дату. До заголовка звіту додати слова “станом на” і покласти поточну дату. Завдання виконати у двох варіантах: використати масиви структур та зв’язані списки.

Задача 6. Скласти програму мовою С для сортування зв’язаних списків.

Задача 7. Виготовити два індекси, один для числових даних, другий – для літерних. Дані вибрати самостійно.

Задача 8. Скласти програму для пошуку даних за допомогою індексів. Зразки даних для пошуку підібрати самостійно.

 

Варіант 6. Нафтобази України

 

Задача 1. Утворити масиви структур на основі інформації, зразки якої подані в таблиці А.6 додатка А. Вона містить такі дані про нафтобази України:

 

1 – назва регіону;

2 – назва області;

3 – назва нафтобази;

4 – кількість резервуарів;

5 – сумарний об’єм резервуарів, м3;

6 – кількість нафтопродукту, тис. тон;

7 – дата обліку.

 

Рекомендації до створення структур:

 

1 – Регіон: код регіону, назва регіону;

2 – Область: код регіону, код області, назва області ;

3 – Нафтобаза: код області, код нафтобази, назва нафтобази, кількість резервуарів, об’єм резервуарів;

4 – Нафтопродукти: код нафтобази, кількість нафтопродукту, дата обліку.

 

Задача 2. Підготувати і занести в структури контрольні дані.

Задача 3. Створити зв’язані списки із масивів структур.

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

Задача 5. Виготовити звіт для введеного під час виконання програми регіону про поточний вміст нафтопродуктів. До його заголовка додати слова “станом на” і встановити поточну дату. Врахувати, що дані в базу поступають нерегулярно, тому в звіт необхідно внести останні дані. Завдання виконати у двох варіантах: використати масиви структур та зв’язані списки.

Задача 6. Скласти програму мовою С для сортування зв’язаних списків.

Задача 7. Виготовити два індекси, один для числових даних, другий – для літерних. Дані вибрати самостійно.

Задача 8. Скласти програму для пошуку даних за допомогою індексів. Зразки даних для пошуку підібрати самостійно.

 

Варіант 7. Транспортування газу по території України

 

Задача 1. Утворити масиви структур на основі інформації, зразки якої подані в таблиці А.7 додатка А. Вона містить такі дані про транспортування газу по території України:

 

1 – назва газопроводу;

2 – кількість ниток газопроводу;

3 – діаметр однієї нитки, мм;

4 – назва підприємства, яке експлуатує газопровід;

5 – добова кількість запомпованого газу, м3;

6 – дата представлення даних;

 

Рекомендації до створення структур:

 

1 – Підприємство: код підприємства, назва підприємства, яке експлуатує газопроводи, логотип підприємства;

2 – Газопровід: код газопроводу, назва газопроводу, кількість ниток газопроводу, діаметр однієї нитки;

3 – Облік газу: код газопроводу, код підприємства, поточна кількість перепомпованого газу за добу, м3, дата представлення даних.

 

Задача 2. Підготувати і занести в структури контрольні дані.

Задача 3. Створити зв’язані списки із масивів структур.

Задача 4. Виготовити звіт про сумарний об’єм транспортованого газу за поточний рік по кожному газопроводу для підприємства, показаного на відкритій для перегляду формі. До заголовка звіту додати назву газопроводу, слова “станом на” і встановити поточну дату.

Задача 5. Виготовити звіт про розподіл кількості транспортованого газу на кожному підприємстві по газопроводах у поточному році. Навпроти назв підприємств установити значення кількості для кожного газопроводу. Передбачити підсумки по вертикалі і по горизонталі. Завдання виконати у двох варіантах: використати масиви структур та зв’язані списки.

Задача 6. Скласти програму мовою С для сортування зв’язаних списків.

Задача 7. Виготовити два індекси, один для числових даних, другий – для літерних. Дані вибрати самостійно.

Задача 8. Скласти програму для пошуку даних за допомогою індексів. Зразки даних для пошуку підібрати самостійно.

 

Варіант 8. Забезпеченість України паливно-мастильними

матеріалами

 

Задача 1. Утворити масиви структур на основі інформації, зразки якої подані в таблиці А.8 додатка А. Вона містить такі дані про забезпеченість паливно-мастильними матеріалами:

 

1 – назва регіону;

2 – назва області;

3 – назва нафтобази;

4 – дата представлення даних;

5 – кількість бензину, тис. т;

6 – кількість дизпалива, тис. т;

Кількість машинного масла, тис. т.

Рекомендації до створення структур:   1 – Регіон: код регіону, назва регіону;

Запаси: код родовища, видобувні запаси, дата представлення даних.

Задача 2. Підготувати і занести в структури контрольні дані. Задача 3. Створити зв’язані списки із масивів структур. Задача 4. Виготовити звіт про розподіл кількості родовищ областей по категоріях. Навпроти назв регіонів і областей,…

Видобування: код родовища, дата представлення даних, видобуток нафти за добу.

Задача 2. Підготувати і занести в структури контрольні дані. Задача 3. Створити зв’язані списки із масивів структур. Задача 4. Виготовити звіт про розподіл сумарного видобутку нафти в областях по кварталах з дня відкриття родовищ.…

ПЕРЕЛІК РЕКОМЕНДОВАНИХ ДЖЕРЕЛ

1. Кочан, Стефан. Программирование на языке С, 3-е издание. : Пер. с англ.–М.: ООО “И.Д.Вильямс”, 2007 2. Хэзфилд Ричард, Кирби Лоуренс и др. Искусство программирования на С.… 3. Шилдт, Герберт. Полный справочник по С, 4-е издание. : Пер. с англ. – М. : Издательский дом “Вильямс”, 2010

– Конец работы –

Используемые теги: програмування0.038

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: ПРОГРАМУВАННЯ

Что будем делать с полученным материалом:

Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Еще рефераты, курсовые, дипломные работы на эту тему:

ЛІНІЙНЕ ПРОГРАМУВАННЯ. Транспортна задача. ЦІЛОЧИСЛОВЕ ПРОГРАМУВАННЯ
Криворізький технічний університет... Кафедра економіки організації та управління підприємствами... МЕТОДИЧНІ ВКАЗІВКИ Кривий Ріг...

Середовище програмування Delphi
Масиви... Масив це обмежена впорядкована сукупність однотипних величин Кожна окрема... Рядки...

Конспект лекцій СИСТЕМНЕ ПРОГРАМУВАННЯ
Конспект лекцій... по дисциплiні СИСТЕМНЕ ПРОГРАМУВАННЯ...

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

ЗВІТ з лабораторної роботи № 1 з дисципліни “Об’єктно-орієнтоване програмування”
Промислово економічний коледж... Національного авіаційного університету... З В І Т...

ЗАГАЛЬНА ХАРАКТЕРИСТИКА ДИНАМІЧНОГО ПРОГРАМУВАННЯ
ЗАГАЛЬНА ХАРАКТЕРИСТИКА ДИНАМІЧНОГО ПРОГРАМУВАННЯ... Геометрична інтерпретація задач ДП... Приклад багатоетапної операції...

МЕТОДИЧНІ ВКАЗІВКИ ДО ВИКОНАННЯ КУРСОВИХ РОБІТ З ДИСЦИПЛІНИ « ПРОГРАМУВАННЯ»
Міністерство освіти і науки молоді та спорту України... Дніпропетровський національний університет ім Олеся Гончара...

Курс Основи програмування Тема Простейшие операции и операторы языка С
ЛАБОРАТОРНАЯ РАБОТА... Тема Простейшие операции и операторы языка С... Цель закрепить знания о простейших операциях и операторах языка С в частности операторах if if else switch cin cout gt gt lt lt...

Навчальної дисципліни Основи програмування та алгоритмічні мови
ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ ЕКОНОМІЧНИЙ УНІВЕРСИТЕТ... Методичні рекомендації до лабораторних робіт з навчальної дисципліни...

Математичне формулювання задачі лінійного програмування
ВСТУП... ЛАБОРАТОРНА РОБОТА РІШЕННЯ ЗАДАЧ ЛІНІЙНОГО ПРОГРАМУВАННЯ ГРАФІЧНИМ... Теоретичні зведення Математичне формулювання задачі лінійного програмування...

0.026
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам