- •О.Ф.Тарасов, о.В.Алтухов
- •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 12
Розробив Петров О.Д.
Використання бібліотечних функцій для обробки символьних даних.
Виконати сортування елементів масиву list[N][4], з використанням функцій: strcpy( ), qsort( ), strcmp( ), stricmp( ). Розробити функцію
порівняння рядків з урахуванням і без урахування регістра - sort_function(). */
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define N 8
int sort_function( const void *a, const void *b);
char list[N][4]={"1a3", "d34", "1c4", "235", "2h5", "012", "135", "102"};
//list[N][4] - глобальний масив
int registr = 1; //Глобальна перемінна для керування режимом
//роботи функції sort_function(): 0 - з урахуванням регістра, 1-без
int main(void)
{ clrscr( );
int i, j;
char *pch = NULL;
printf("\n\t Вихідний (глобальний) масив char list[N][4]:\n");
for (і = 0; і < N; і ++) printf("%s ", list[ і ] );
printf("\n");
for (і = 0; і < N; і ++) //Сортування масиву
for (int j1 = і + 1; j1 < N; j1++)
{j = sort_function((void *)list[ і ], (void *)list[ j1 ] );
if(j > 0) //Заміна рядків: char *strcpy(char *dest,
{ strcpy(pch, list[ i ] ); // const char *src);
strcpy(list[ i ], list[ j1] );
strcpy(list[ j1 ], pch);
}
}
printf("\n\t Результат сортування: \n");
for (і = 0; і < N; і ++) printf("%s ", list[ і ] );
printf("\n");
printf("\n\t Вихідний (локальний) масив char list[N][4]:\n");
char list[N][4] = {"abc", "cad", "tre", "Cab", "abb", "Abc", "cam", "Cap"};
for (i = 0; i < N; i ++) printf("%s ", list[ i ] );
printf("\n");
qsort((void *)list, N, sizeof(list[0]), sort_function);
//Функція використовує для сортування алгоритм quicksort
//void qsort(void *base, size_t nelem, size_t width,
//int (*fcmp)(const void *, const void *));
printf("\n\t Результат сортування без урахування регістра: \n");
registr = 1;
for (i = 0; i < N; i ++) printf("%s ", list[ i ] );
printf("\n");
registr = 0;
qsort((void *)list, N, sizeof(list[0] ), sort_function);
printf("\n\t Результат сортування c урахуванням регістра :\n");
for (і = 0; і < N; і ++) printf("%s ", list[ і ] );
printf("\n");
// Функції strrev( ) strcat( )
char *s = "Герой ";
char *m = "- Gerakl";
char *t = "retro";
char *sapr = "cae";
printf("\t Вихідний рядок : %s \n", t);
char *g = strrev( t );
printf("\t Перевернений рядок: %s \n", g);
s = strcat(s, m); //char *strcat(char *dest, const char *src);
printf("\t Конкатенація рядків : %s\n", s);
getch( );
return 0;
}
int sort_function(const void *a, const void *b)
{ if (registr = = 0) //З урахуванням регістра
return( strcmp((const char *)a,(const char *)b ));
//int strcmp(const char *s1, const char*s2); Повертає:
// (< 0) якщо s1< s; (= = 0) якщо s1= = s2; (> 0) якщо s1 > s2
else //Без урахування регістра
return( stricmp((const char *)a, (const char *)b ));
}
/* Вихідний (глобальний) масив char list[N][4]:
1a3 d34 1c4 235 2h5 012 135 102
Результат сортування:
012 102 135 1a3 1c4 235 2h5 d34
Вихідний (локальний) масив char list[N][4]:
Abc cad tre Cab abb Abc Cap cam
Результат сортування без урахування регістра:
abb Abc abc Cab cad cam Cap tre
Результат сортування з урахуванням регістра:
Abc Cab Cap abb abc cad cam tre
Вихідний рядок : retro
Перевернений рядок: orter
Конкатенація рядків : Герой - Gerakl */