- •О.Ф.Тарасов, о.В.Алтухов
- •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 15
Розробив Петров О.В.
Оголосити структури і покажчики на них, виконати ініціалізацію.
Оголосити масив покажчиків на структурний тип з виділенням
пам'яті для нього в купі, виконати його ініціалізацію.
Одержати доступ до елементів структур з використанням
покажчиків, змінити ці елементи. Вивести значення елементів
масиву структур на екран із застосуванням функції. Структура
містить прізвище і дату народження (число, місяць, рік) студента.
Ввести інформацію про студентів і знайти дані про першого
у масиві структур студента, що народився заданого числа. */
#include <stdio.h>
#include <conio.h>
#define N 3
#define M 20
struct stud
{ char name[M];
int day, month, year;
};
stud data[N]; //Глобальний масив з N структур типу stud
//Функція пошуку даних у глобальному масиві data[ і ].day = = j
int poisk( int j );
//print_st( ) - функція виведення елементів структури з глобального
//масиву, num - кількість структур для виведення
void print_st(int num);
//init_loc( ) - функція для ініціалізації структури типу stud
stud *init_ptr( void );
void print_ptr(stud *); //Функція виведення елементів структури
void main( )
{ int i = 0, j, a;
clrscr( );
stud arrloc[N]; //Масив з N структур
stud *dloc[N]; //Масив покажчиків на структурний тип stud
stud *pstr; //Покажчик на структурний тип stud
pstr = arrloc; //Аналогічно pstr = &arrloc[ 0 ];
while (a && і < N) //Введення елементів масиву структур arrloc[N]
{ printf("Введіть прізвище студента : ");
scanf("%s", pstr -> name); fflush(stdin);
printf("Введіть дату народження (чч мм рр) : ");
scanf("%d %d %d", &pstr -> day, &pstr -> month, &pstr -> year);
fflush(stdin);
// printf("%-15s - %2d.%2d. %4d\n", pstr -> name, pstr -> day,
// pstr -> month, pstr -> year); //Контроль значень при введенні
printf("t\t Продовжити введення ? y/n ");
char c = getche( ); printf("\n");
if (c = = 'n' || c = = 'N') a = 0;
pstr ++; //Перехід до наступної структурі в масиві arrloc[N]
і ++;
} //end while
printf("Виведення значень елементів масиву структур arrloc[ і ] \n ");
printf("з використанням покажчика \n ");
j = i;
pstr = &arrloc[ 0 ]; //Покажчик адресує масив структур arrloc[ ]
for(i = 0; i < j; i ++)
{ print_ptr( pstr );
dloc[ і ] = new stud; //Виділення пам'яті для структури в "купі"
dloc[ і ] = pstr; //Ініціалізація елементів локального масиву покажчиків
pstr ++;
}
printf("Введення відсутніх значень елементів масиву структур \n ");
printf("з використанням масиву покажчиків \n ");
for ( і = j; і < N; і ++)
dloc[ і ] = init_ptr( ); //Виділення пам'яті для структури у функції
printf("Виведення значень елементів масиву структур \n ");
printf("з використанням масиву покажчиків \n ");
for ( і = 0; і < N; і ++)
{ print_ptr(dloc[ і ] );
data[ і ] = *dloc[ і ]; //Ініціалізація елементів глобального
} //масиву структур
printf("Виведення (N - 2) перших значень елементів глобального \
масиву структур \n ");
print_st(N - 2);
printf("Введіть день для пошуку в масиві структур \
першого студента : ");
scanf("%d", &j); fflush(stdin);
a = poisk( j );
if (a!= - 1) print_ptr( &data[ a ] );
else printf("Немає таких студентів ");
for ( і = 0; і < N; і ++) delete dloc[ і ]; //Звільнення пам'яті в "купі"
getch( );
} //End main( )
int poisk(int j) //Функція пошуку даних (data[ і ].day = = j)
{int a = - 1; //у глобальному масиві структур data[ і ]
for (int i = 0; i < N; i ++)
if (data[ i ].day = = j) {a = i; return a;}
return a;
} //End poisk( )
//print_st( ) - функція виведення елементів структури з глобального
void print_st(int num) //масиву, num –кількість структур для виведення
{ for (int і = 0; і < num; і ++)
printf("%-15s - %2d %2d %4d \n", data[ i ].name, data[ i ].day,\
data[ i ].month, data[ i ].year);
} //End print_st( )
//init_loc( ) - функція для ініціалізації структури типу stud
stud *init_ptr( void )
{ stud *pst = new stud; //Виділення пам'яті в "купі"
printf("Введіть прізвище студента : ");
scanf("%s", &pst -> name);
printf("Введіть дату народження(чч мм рр) : ");
scanf("%d .%d .%d", &pst -> day, &pst -> month, &pst -> year);
return pst;
} //End init_loc( )
void print_ptr(stud *pdt) //Функція виведення елементів структури
{ printf("%-15s - %2d .%2d .%4d\n", pdt -> name, pdt -> day,\
pdt -> month, pdt -> year);
} //End print_ptr( )
/* Введіть прізвище студента : Petrov
Введіть дату народження (чч мм рр) : 12 7 1980
Продовжити введення ? y/n y
Введіть прізвище студента : Sidorov
Введіть дату народження (чч мм рр) : 24 8 1983
Продовжити введення ? y/n n
Виведення значень елементів масиву структур arrloc[ і ]
з використанням покажчика
Petrov - 12. 7. 1980
Sidorov - 24. 8. 1983
Введення відсутніх значень елементів масиву структур
з використанням масиву покажчиків
Введіть прізвище студента : Ivanov
Введіть дату народження (чч мм рр) : 24 5 1982
Виведення значень елементів масиву структур
з використанням масиву покажчиків
Petrov - 12. 7. 1980
Sidorov - 24. 8. 1983
Ivanov - 24. 5. 1982
Виведення (N - 2) перших значень елементів глобального масиву структур
Petrov - 12. 7. 1980
Sidorov - 24. 8. 1983
Введіть день для пошуку в масиві структур першого студента : 24
Sidorov - 24. 8. 1983 */