- •О.Ф.Тарасов, о.В.Алтухов
- •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
- •Контрольні питання для підготовки і самостійної роботи
- •Віртуальні базові класи
- •Віртуальні деструктори
- •Хід роботи
Приклад
double*dp;
d = (double*) malloc (sizeof (double)); //Функція malloc ( ) виділяє пам'ять
*dp = 22 / 7.0;
free (dp); //Звільнення динамічно виділеної у «купі» пам'яті
В даному випадку при використанні функції malloc ( ) забезпечується перетворення значення, що повертається, з покажчика на тип void у покажчик на тип double, який має покажчик dp.
Приклад
/* ЗАНЯТТЯ N 8
Виконав студент групи ......... Петров П.В.
Застосування покажчиків при роботі з перемінними
різних типів, зміна значень перемінних за адресою
і за посиланням. Приклади операцій з покажчиками */
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <alloc.h>
int a; //Оголошення глобальної перемінної типу int (а = 0)
int main( void )
{char c1, c2, buf[20]; //buf – ім’я масиву є покажчиком на тип char
char *pc = NULL; //Ініціалізація покажчика константою NULL
char *pst = " \"slovo\" "; //Оголошення покажчиків на тип char
int *pi = &a;
float *pf, f = 26.6; //Оголошення покажчика на тип float
double *pd, d; //Оголошення покажчика на тип double
double &sd = d; //Оголошення посилання на тип double
void *pv; //Оголошення покажчика на тип void
char *pchar = (char *) malloc( 20 ); //Виділення пам'яті у “купі”
clrscr( );
pc = &c1; pf = &f; pd = &d; //Взяття адрес перемінних
printf(" Введення перемінної c1 типу char: ");
scanf("%c", pc); //Функція введення даних, & - операція узяття
//адреси для покажчика pc відсутня
printf(" Виведення перемінної c1 типу char: ");
printf("%c\n", *pc);
fflush( stdin );
pc = &c2;
printf(" Введення перемінної c2 типу char: ");
scanf("%c", pc); //Функція введення даних, & - операція узяття
//адреси для покажчика pc відсутня
printf(" Виведення перемінної c2 типу char: ");
printf("%c\n", *pc);
printf("\n Введення перемінної (a) типу int: ");
scanf("%d", pi);
a += 5; //Зміна а = а+5
++ *pi; //Зміна а = а+1 за допомогою покажчика pі
printf(" \t Виведення (a) після зміни а=а+5+1\n");
printf(" Формат виведення (int): +6d #6o #8x\n");
printf("\t\t |%+6d| %#6o| %#8x| \n ", a, *pi, *pi);
printf("\n Виведення вихідного рядка: %s\n", pst);
pc = pst;
printf(" Виведення рядка в циклі: \n");
while(*pc!='\0') { printf(" %s",pc); pc++; }
printf("\n Введення рядка до масиву: ");
scanf("%s", buf);
pv = buf; //Використання покажчика (pv) на тип void
printf(" Виведення рядка з масиву: %s \n", (char *)pv); //pv - став char *
printf(" Введення рядка до динамічної пам'яті: ");
scanf("%s", pchar);
printf(" Виведення рядка з динамічної пам'яті: %s\n", pchar);
printf(" Введення перемінних типу float і double (через пробіл): \n");
printf("\t\t ");
scanf("%f %lf", pf, pd);
pv = pf; //Використання покажчика (pv) на тип void
*pf = *(float *)pv * 10; //Аналогічно f = 10, або f = f * 10
*pd = sd + *(float *)pv; //Використання посилання (sd) на тип double
//аналогічно d = d + f або d += f
pv = pd;
printf("\t Виведення результатів розрахунку f *= 10 d += f \n");
printf(" Формат виведення (float): 10.6f 10.6e +10.6g\n");
printf("\t\t |%10.6f| %10.6e| %+10.6g| \n", f, *pf, *pf);
printf(" Формат виведення (double): 10.8lf 10.8e 10.8g\n");
printf("\t\t |%10.8lf| %10.8e| %+10.8g| \n ", *pd, *(double *)pv, sd);
getche( );
return 0;
}
/* Введення перемінної c1 типу char: w
Виведення перемінної c1 типу char: w
Введення перемінної c2 типу char: t
Виведення перемінної c2 типу char: t
Введення перемінної (a) типу int: 40
Виведення (a) після зміни а=а+5+1
Формат виведення (int): +6d #6o #8x
| +46| 056| 0x2e|
Виведення вихідного рядка: "slovo"
Виведення рядка в циклі:
"slovo" slovo" lovo" ovo" vo" o" "
Введення рядка до масиву: unsigned
Виведення рядка з масиву: unsigned
Введення рядка до динамічної пам'яті: dinamo
Виведення рядка з динамічної пам'яті: dinamo
Введення перемінних типу float and double (через пробіл):
1.5 20.4
Виведення результатів розрахунку *pf = *pf * 10; *pd = *pd + f;
Формат виведення (float): 10.6f 10.6e +10.6g
| 15.000000| 1.500000e+01| +15|
Формат виведення (double): 10.8lf 10.8e 10.8g
|35.40000000| 3.54000000e+01| +35.4| */