- •О.Ф.Тарасов, о.В.Алтухов
- •1 Заняття № 1 Вивчення інтегрованого середовища с
- •1.1 Теоретичні відомості
- •1.2 Хід роботи
- •1.3 Вимоги до звітів
- •1.4 Питання для контролю і самостійної роботи
- •2 Заняття № 2 Функції введення/виведення даних printf( ), scanf( ). Лінійні обчислювальні процеси
- •2.1 Теоретичні відомості
- •2.2 Хід роботи
- •2.3 Індивідуальне завдання до заняття №2
- •2.4 Питання для контролю і самостійної роботи
- •3 Заняття № 3 Розробка програм зі скалярними типами даних
- •3.1 Теоретичні відомості
- •Приклад
- •3.2 Хід роботи
- •3.3 Індивідуальне завдання до заняття № 3
- •3.4 Питання для контролю і самостійної роботи
- •4 Заняття № 4 Розробка програм з циклічними обчислювальними процесами
- •4.1 Теоретичні відомості
- •Алгоритм роботи оператора циклу for ( )
- •4.2 Хід роботи
- •4.3 Індивідуальне завдання до заняття № 4
- •4.4 Питання для контролю і самостійної роботи
- •5 Заняття № 5
- •Розгалуження обчислювального процесу.
- •Оператори, які реалізують розгалуження: if... Else, switch,
- •Умовна операція ( ? : )
- •5.1 Теоретичні відомості
- •Умовна тернарна операція ( ? : )
- •Оператор варіанта switch
- •Приклад
- •5.2 Хід роботи
- •5.3 Індивідуальне завдання до заняття № 5
- •5.4 Питання для контролю і самостійної роботи
- •6 Заняття № 6 Операції с, їхні пріоритети і використання. Перетворення типів
- •Пріоритет операцій і порядок виконання (асоційованість)
- •(Новий_тип) Операнд
- •Приклад
- •6.2 Хід роботи
- •6.3 Індивідуальне завдання до заняття № 6
- •6.4 Питання для контролю і самостійної роботи
- •7 Заняття № 7
- •7.1 Теоретичні відомості
- •Оголошення функцій (створення прототипів)
- •([ Список_типів_параметрів ])
- •Синтаксис визначення функцій
- •[ Return Значення_типу_що_повертається ]
- •Використання локальних і глобальних перемінних у функціях. Виклик функції
- •Приклад
- •7.2 Хід роботи
- •7.3 Індивідуальне завдання до заняття № 7
- •7.4 Питання для контролю і самостійної роботи
- •8 Заняття № 8
- •8.1 Теоретичні відомості
- •Основні операції з покажчиками
- •Покажчики і цілі величини
- •Динамічне розміщення покажчиків у пам'яті
- •Приклад
- •Приклад
- •8.2 Хід роботи
- •8.3 Індивідуальне завдання до заняття № 8
- •8.4 Питання для контролю і самостійної роботи
- •9 Заняття № 9
- •9.1 Теоретичні відомості
- •Приклад
- •9.2 Хід роботи
- •9.3 Індивідуальне завдання до заняття №9
- •9.4 Питання для контролю і самостійної роботи
- •10 Заняття № 10
- •10.1 Теоретичні відомості
- •Приклад
- •10.2 Хід роботи
- •10.3 Індивідуальне завдання до заняття № 10
- •10.4 Питання для контролю і самостійної роботи
- •Заняття №11 Обробка символьних даних
- •Теоретичні відомості
- •Індивідуальне завдання до заняття №11
- •Питання для контролю і самостійної роботи
- •Приклад
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •Теоретичні відомості
- •Приклад
- •Індивідуальне завдання до завдання №13
- •Питання для контролю і самостійної роботи
- •Заняття № 14 Розробка програм зі складеними типами даних
- •Структури
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •Заняття № 15 Використання покажчиків для роботи зі складеними типами даних (2години)
- •Теоретичні відомості
- •Приклад
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •Використання покажчиків для роботи з функціями
- •Покажчики як параметри функції
- •[Const ] Тип * Ім'я_покажчика
- •Приклад
- •Хід роботи
- •Індивідуальне завдання до заняття №16
- •Питання для контролю і самостійної роботи
- •Використання функцій високого і низького рівня для роботи з потоками (файлами)
- •Функції для роботи з файлами
- •Хід роботи
- •Індивідуальне завдання до заняття №17
- •Питання для контролю і самостійної роботи
- •Розробка програм із багатофайловою структурою. Заголовочні файли. Класи пам'яті перемінних і функцій
- •Керування многофайловими проектами
- •Використання адміністратора проектів
- •Приклад
- •Основний файл проекту
- •Заголовний файл
- •Хід роботи
- •Індивідуальне завдання до заняття №18
- •Питання для контролю і самостійної роботи
- •Графічні функції
- •Графічні примітиви
- •Хід роботи
- •Індивідуальне завдання до заняття №19
- •Питання для контролю і самостійної роботи
- •Заняття№20 Розробка програм з використанням класів
- •Теоретичні відомості
- •Оголошення і визначення класу
- •Тіло класу
- •Інкапсуляція. Керування доступом до членів класу
- •Використання даних-членів класу
- •Хід роботи
- •Індивідуальне завдання до заняття №20
- •Питання для контролю і самостійної роботи
- •Заняття№21 Використання конструкторів і деструкторів у класах
- •Теоретичні відомості
- •Ініціалізація об'єктів класу
- •Деструктори
- •Виклик деструкторів
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •"Друзі" класів (friend)
- •Хід роботи
- •Індивідуальне завдання до заняття №22
- •Контрольні питання для підготовки і самостійної роботи
- •Віртуальні базові класи
- •Віртуальні деструктори
- •Хід роботи
Приклад
/* ЗАНЯТТЯ N 16
Розробив Петров О.Д.
Оголосити задані функції і покажчик на функцію цього типу,
виконати визначення функцій. Оголосити масиви і покажчики
на них, виконати їх ініціалізацію відповідно до заданих
залежностей і з використанням покажчиків. Для одного з
масивів виділити пам'ять у купі. Вивести значення елементів
масивів на екран. Здійснити виклик функцій із застосуванням
покажчика. Вивести результати роботи функцій на екран. */
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <iostream.h>
const int kx = 6, ky = 6, kw = 8, a1 = 3, a2 = 9,\
b1 = 6, b2 = 5, c1 = 6, c2 = 10;
//Функція обчислює суму негативних елементів масиву
float summa ( int, float *);
//Функція обчислює добуток позитивних елементів масиву
float prois ( int, float *);
float ( *ps)( int, float *); //Оголошення покажчика на функцію
void main ( )
{ int і;
float y[ ky + 2 ]; //+2 елементи масиву для збереження
// результатів роботи функцій
float *px = new float [ kx + 2]; //Виділення пам'яті для масиву в "купі"
float *xptr;
clrscr( );
printf("Масив x[ ]\n");
for ( і = 0; і < kx; і ++)
{ *px = a1 * і * і - a2 * (5 - i); //Ініціалізація динамічного масиву
printf("x[%d] = %6.2f %p \n", i, *px, px);
px ++;
}
xptr = y;
gotoxy(25, 1); printf("Масив y[ ]\n");
for ( і = 0; і < ky; і ++)
{ *xptr = b1 * sin( 2 * і ) + b2 * exp( і - 5); //Ініціалізація масиву y[ ]
gotoxy(30, i + 2);
printf("y[%d] = %6.2f\n", i, *xptr);
xptr ++;
}
px - = kx; //Установка покажчика на нульовий елемент масиву
printf("Покажчик на дин. масив містить адресу рх = %p\n ", px );
ps = summa; //Зв'язування покажчика з функцією summa( )
printf("Покажчик на функцію містить адресу рs = %p\n ", ps );
printf("Сума: x[%d] = %6.2f ", kx, ( *ps )(kx, px) );
printf("Сума: y[%d] = %6.2f\n ", ky, ( *ps)(ky, y) );
ps = prois; //Зв'язування покажчика з функцією prois( )
printf("Покажчик на функцію містить адресу рs = %p\n ", ps );
printf("Добуток: x[%d] = %8.2f ", kx+1, ( *ps)(kx, px) );
printf("Добуток: y[%d] = %8.2f\n ", ky+1, ( *ps)(ky, y) );
delete [ ] px; //Звільнення пам'яті, виділеної в "купі" для масиву
getch( );
}
float summa( int kol, float *Arr ) //Визначення функції
{ float s = 0;
for ( int i = 0; i < kol; i ++ ) if (Arr[ i ] < 0) s += Arr[ i ];
return s;
}
float prois( int kol, float *Arr ) //Визначення функції
{ float s = 1;
for ( int i = 0; i < kol; i ++ ) if (Arr[ i ] > 0) s *= Arr[ i ];
return s;
}
/* Масив x[ ] Масив y[ ]
x[0] = -45.00 0AD0 y[0] = 0.03
x[1] = -33.00 0AD4 y[1] = 5.55
x[2] = -15.00 0AD8 y[2] = -4.29
x[3] = 9.00 0ADC y[3] = -1.00
x[4] = 39.00 0AE0 y[4] = 7.78
x[5] = 75.00 0AE4 y[5] = 1.74
Покажчик на дин. масив містить адресу рх = 0AD0
Покажчик на функцію містить адресу рs = 049C
Сума: x[6] = -93.00 Сума: y[6] = -5.29
Покажчик на функцію містить адресу рs = 04F3
Добуток: x[7] = 26325.00 Добуток: y[7] = 2.52 */