🗊Презентация Загальні відомості про функцію system ()

Нажмите для полного просмотра!
Загальні відомості про функцію system (), слайд №1Загальні відомості про функцію system (), слайд №2Загальні відомості про функцію system (), слайд №3Загальні відомості про функцію system (), слайд №4Загальні відомості про функцію system (), слайд №5Загальні відомості про функцію system (), слайд №6Загальні відомості про функцію system (), слайд №7Загальні відомості про функцію system (), слайд №8Загальні відомості про функцію system (), слайд №9Загальні відомості про функцію system (), слайд №10Загальні відомості про функцію system (), слайд №11

Вы можете ознакомиться и скачать презентацию на тему Загальні відомості про функцію system (). Доклад-сообщение содержит 11 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Загальні відомості про функцію system ()
Функція system(char* str) передає рядок, що адресується параметром str, як команду для командного процессора операційної системи. Якщо system() викликається з вказівником NULL, то вона повертає
ненульове значення при умові доступності командного процесора та нуль у супротивному випадку. 
Тобто все, що можна зробити у  командному рядку Windows, можна виконати функцією system().
Коди кольорів:
0 = Black
1 = Blue
2 = Green
3 = Aqua
4 = Red
5 = Purple
6 = Yellow
7 = White
8 = Gray
9 = Light Blue
A = Light Green
B = Light Aqua
C = Light Red
D = Light Purple
E = Light Yellow
F = Bright White
Описание слайда:
Загальні відомості про функцію system () Функція system(char* str) передає рядок, що адресується параметром str, як команду для командного процессора операційної системи. Якщо system() викликається з вказівником NULL, то вона повертає ненульове значення при умові доступності командного процесора та нуль у супротивному випадку. Тобто все, що можна зробити у командному рядку Windows, можна виконати функцією system(). Коди кольорів: 0 = Black 1 = Blue 2 = Green 3 = Aqua 4 = Red 5 = Purple 6 = Yellow 7 = White 8 = Gray 9 = Light Blue A = Light Green B = Light Aqua C = Light Red D = Light Purple E = Light Yellow F = Bright White

Слайд 2





Адресація та вказівники в С/С++
Вказівник (або покажчик, інколи – посилання) – це змінна, яка може містити адресу деякого іншого об’єкта. Ним може бути (в найпростішому випадку) інша змінна або масив, структура, функція, клас (в С++) тощо.
Синтаксис визначення вказівника:
<тип> * <ідентифікатор_вказівника>;
Приклади.
int* p_i; //p_i – вказівник на тип int, p_i має тип int*
char* p_c;//p_c – вказівник на тип char, має тип char*
void* p; //p – аморфний («нетиповий»)вказівник, 
// його тип – void*
В цих прикладах вказівники поки що не вказують ні на які об’єкти – вони не проініціалізовані.
Проте, якщо p – вказівник на деяку існуючу змінну, то *p – це сама змінна. Тут * – є операцією розадресації вказівника (dereferencing).
Описание слайда:
Адресація та вказівники в С/С++ Вказівник (або покажчик, інколи – посилання) – це змінна, яка може містити адресу деякого іншого об’єкта. Ним може бути (в найпростішому випадку) інша змінна або масив, структура, функція, клас (в С++) тощо. Синтаксис визначення вказівника: <тип> * <ідентифікатор_вказівника>; Приклади. int* p_i; //p_i – вказівник на тип int, p_i має тип int* char* p_c;//p_c – вказівник на тип char, має тип char* void* p; //p – аморфний («нетиповий»)вказівник, // його тип – void* В цих прикладах вказівники поки що не вказують ні на які об’єкти – вони не проініціалізовані. Проте, якщо p – вказівник на деяку існуючу змінну, то *p – це сама змінна. Тут * – є операцією розадресації вказівника (dereferencing).

Слайд 3





Яке значення можна присвоїти вказівнику? Будь-який числовий літерал – це неприпустиме рішення.
Яке значення можна присвоїти вказівнику? Будь-який числовий літерал – це неприпустиме рішення.
В мові С для ініціалізації вказівника можна використати один з двох способів:
ініціалізація вказівника адресою існуючої змінної;
ініціалізація вказівника адресою динамічно виділеної пам’яті (з допомогою функції malloc(), calloc()).
В мові С++ для ініціалізації вказівника може використовуватись також операція new, яка динамічно виділяє необхідний об'єм пам'яті під змінну.
Приклади.
int i;
int *p_i = &i;  // вказівник p_i вказує на змінну i
		    // унарна операція & - взяття адреси
    *p_i = 10; // змінній i присвоєно значення 10
    ++*p_i;    // змінна i збільшена на 1
    cout << *p_i; // виводимо значення змінної i 
Зауваження. У виразі (*pi)++; дужки обов'язкові на відміну від виразу ++*p_i; – із-за порядку виконання операцій.
Зауваження. Вказівнику будь-якого типу можна присвоїти значення NULL (такий вказівник не вказує на жодну змінну)
Описание слайда:
Яке значення можна присвоїти вказівнику? Будь-який числовий літерал – це неприпустиме рішення. Яке значення можна присвоїти вказівнику? Будь-який числовий літерал – це неприпустиме рішення. В мові С для ініціалізації вказівника можна використати один з двох способів: ініціалізація вказівника адресою існуючої змінної; ініціалізація вказівника адресою динамічно виділеної пам’яті (з допомогою функції malloc(), calloc()). В мові С++ для ініціалізації вказівника може використовуватись також операція new, яка динамічно виділяє необхідний об'єм пам'яті під змінну. Приклади. int i; int *p_i = &i; // вказівник p_i вказує на змінну i // унарна операція & - взяття адреси *p_i = 10; // змінній i присвоєно значення 10 ++*p_i; // змінна i збільшена на 1 cout << *p_i; // виводимо значення змінної i Зауваження. У виразі (*pi)++; дужки обов'язкові на відміну від виразу ++*p_i; – із-за порядку виконання операцій. Зауваження. Вказівнику будь-якого типу можна присвоїти значення NULL (такий вказівник не вказує на жодну змінну)

Слайд 4





Динамічний розподіл пам'яті.
Динамічним розподілом пам'яті керують функції із файлу <stdlib.h> 
(<cstdlib> у просторі імен std):
	void*	malloc	(size_t size); 
		– виділяє size байтів пам'яті в області Heap і повертає вказівник на початок цієї області або вказівник NULL, якщо пам’ять не виділена.
	void*	calloc	(size_t n, size_t size);
		– повертає вказівник на початок області пам'яті, достатньої для збереження n об'єктів розміру size кожний або вказівник NULL, якщо пам’ять не 	виділена.
	void*	realloc	(void* p, size_t size);
		– змінює розмір пам’яті, на яку вказує вказівник p, на size 	та повертає вказівник на нову область, або вказівник NULL, 	якщо зміна неможлива. Для частини пам'яті розміру, рівному найменшому із старого та нового значень, зміст не зміниться.
	void	free	(void* p);
		– звільняє область пам'яті, на яку вказує вказівник p.
Описание слайда:
Динамічний розподіл пам'яті. Динамічним розподілом пам'яті керують функції із файлу <stdlib.h> (<cstdlib> у просторі імен std): void* malloc (size_t size); – виділяє size байтів пам'яті в області Heap і повертає вказівник на початок цієї області або вказівник NULL, якщо пам’ять не виділена. void* calloc (size_t n, size_t size); – повертає вказівник на початок області пам'яті, достатньої для збереження n об'єктів розміру size кожний або вказівник NULL, якщо пам’ять не виділена. void* realloc (void* p, size_t size); – змінює розмір пам’яті, на яку вказує вказівник p, на size та повертає вказівник на нову область, або вказівник NULL, якщо зміна неможлива. Для частини пам'яті розміру, рівному найменшому із старого та нового значень, зміст не зміниться. void free (void* p); – звільняє область пам'яті, на яку вказує вказівник p.

Слайд 5





Приклад роботи із вказівником.
Приклад роботи із вказівником.

int *p;  // визначили вказівник
// виділяємо пам’ять – необхідно привести
// вказівник до відповідного типу:
  p = (int*) malloc (sizeof (int));
	printf ("\nВведіть ціле число: ");
  scanf ("%i", p);	 // ввели ціле значення 
					 // вивели його на екран 
  printf ("\nЧисло = %i\n", *p);
	free (p);		 // звільнили пам’ять
// В стилі С++
  p = new int;
// робота із вказівником
  delete p; // звільнення пам’яті
Описание слайда:
Приклад роботи із вказівником. Приклад роботи із вказівником. int *p; // визначили вказівник // виділяємо пам’ять – необхідно привести // вказівник до відповідного типу: p = (int*) malloc (sizeof (int)); printf ("\nВведіть ціле число: "); scanf ("%i", p); // ввели ціле значення // вивели його на екран printf ("\nЧисло = %i\n", *p); free (p); // звільнили пам’ять // В стилі С++ p = new int; // робота із вказівником delete p; // звільнення пам’яті

Слайд 6





Масиви в С/С++
Синтаксис визначення масиву:
<тип> <ідентифікатор_масиву> [кількість_елементів];
Тут <тип> визначає тип елементів масиву, які індексуються від 0 до кількість_елементів-1 . 
Приклади:
int iArray [10];  //визначили масив із 10 елементів
   for (int i = 0; i < 10; i++)
   iArray [i] = i*i; //присвоїли значення елементам

Увага: ідентифікатор масиву – константний вказівник на його нульовий елемент, таким чином, *(iArray + i)– це елемент масиву iArray [i] , а  &iArray [i] – вказівник на елемент з індексом i, тобто те саме, що iArray + i. (адресна арифметика - далі)
Компілятор не контролює вихід індексу за межі масиву!
Масив можна проініціалізувати в момент визначення:
int iArray [5] = {1, 2, 3, 4, 5};
char  text [] = {'H','e','l','l','o','\0'};
Описание слайда:
Масиви в С/С++ Синтаксис визначення масиву: <тип> <ідентифікатор_масиву> [кількість_елементів]; Тут <тип> визначає тип елементів масиву, які індексуються від 0 до кількість_елементів-1 . Приклади: int iArray [10]; //визначили масив із 10 елементів for (int i = 0; i < 10; i++) iArray [i] = i*i; //присвоїли значення елементам Увага: ідентифікатор масиву – константний вказівник на його нульовий елемент, таким чином, *(iArray + i)– це елемент масиву iArray [i] , а &iArray [i] – вказівник на елемент з індексом i, тобто те саме, що iArray + i. (адресна арифметика - далі) Компілятор не контролює вихід індексу за межі масиву! Масив можна проініціалізувати в момент визначення: int iArray [5] = {1, 2, 3, 4, 5}; char text [] = {'H','e','l','l','o','\0'};

Слайд 7





Адресна арифметика
Для будь-яких вказівників на один тип допустимі перевірки на 
рівність та нерівність їх між собою та присвоєння, а також 
присвоєння та порівняння з вказівником NULL.
Якщо p1 та p2 – вказівники и на один і той самий масив, то допустимими операціями з ними додатково є такі: 
	p1 < p2	перевірка: "p1 вказує на елемент масиву з меншим індексом, ніж той, на який вказує p2";
	p1 <= p2	перевірка: "p1 вказує на елемент масиву з індексом не більшим, ніж той, на який вказує p2";
	p1 > p2	перевірка: "p1 вказує на елемент масиву з більшим індексом, ніж той, на який вказує p2";
	p1 >= p2 	перевірка: "p1 вказує на елемент масиву з індексом не меншим, ніж той, на який вказує p2";
	p2 – p1 	кількість елементів масиву між елементами, що адресуються p2 та p1;
	p1 + k	вказівник на k-ий елемент масиву, рахуючи вперед від елементу, на який вказує p1.
	p1 – k	вказівник на k-ий елемент масиву, рахуючи назад від елементу, на який вказує p1.
Описание слайда:
Адресна арифметика Для будь-яких вказівників на один тип допустимі перевірки на рівність та нерівність їх між собою та присвоєння, а також присвоєння та порівняння з вказівником NULL. Якщо p1 та p2 – вказівники и на один і той самий масив, то допустимими операціями з ними додатково є такі: p1 < p2 перевірка: "p1 вказує на елемент масиву з меншим індексом, ніж той, на який вказує p2"; p1 <= p2 перевірка: "p1 вказує на елемент масиву з індексом не більшим, ніж той, на який вказує p2"; p1 > p2 перевірка: "p1 вказує на елемент масиву з більшим індексом, ніж той, на який вказує p2"; p1 >= p2 перевірка: "p1 вказує на елемент масиву з індексом не меншим, ніж той, на який вказує p2"; p2 – p1 кількість елементів масиву між елементами, що адресуються p2 та p1; p1 + k вказівник на k-ий елемент масиву, рахуючи вперед від елементу, на який вказує p1. p1 – k вказівник на k-ий елемент масиву, рахуючи назад від елементу, на який вказує p1.

Слайд 8





Символьні масиви
Текстовий масив може бути визначеним і в такий спосіб 
(підходить лише для текстових масивів):
  char* ptext = "Приклад визначення тексту "; 
або
	char text [20] = "Інший приклад";
(Тут важливо, щоб кількість елементів в масиві не перевищувала кількість символів текстової константи).
Перший приклад дозволяє повторне визначення 
вказівника, наприклад:
	ptext = text; // так можна
	text = ptext; // а так – ні!
Описание слайда:
Символьні масиви Текстовий масив може бути визначеним і в такий спосіб (підходить лише для текстових масивів): char* ptext = "Приклад визначення тексту "; або char text [20] = "Інший приклад"; (Тут важливо, щоб кількість елементів в масиві не перевищувала кількість символів текстової константи). Перший приклад дозволяє повторне визначення вказівника, наприклад: ptext = text; // так можна text = ptext; // а так – ні!

Слайд 9





Багатовимірні масиви
Синтаксис визначення двовимірного масиву:
<тип> <ідентифікатор_масиву> [кількість_елементів1][кількість_елементів2];
Приклади:
int arr [2][3]; //визначили масив із 2*3 елементів
Елементи багатовимірних масивів розташовані в пам’яті послідовно таким чином, що найшвидше змінюється останній індекс.
 Для даного прикладу: 
arr [0][0] arr [0][1] arr [0][2] arr [1][0] arr [1][1] arr [1][2]
Для такого масиву ідентифікатор arr – це вказівник на масив вказівників на його рядки. Тому до окремого елементу можна звертатись або прямою індексацією: arr [i][j] або через вказівники:  *(*(arr + i) + j).
Описание слайда:
Багатовимірні масиви Синтаксис визначення двовимірного масиву: <тип> <ідентифікатор_масиву> [кількість_елементів1][кількість_елементів2]; Приклади: int arr [2][3]; //визначили масив із 2*3 елементів Елементи багатовимірних масивів розташовані в пам’яті послідовно таким чином, що найшвидше змінюється останній індекс. Для даного прикладу: arr [0][0] arr [0][1] arr [0][2] arr [1][0] arr [1][1] arr [1][2] Для такого масиву ідентифікатор arr – це вказівник на масив вказівників на його рядки. Тому до окремого елементу можна звертатись або прямою індексацією: arr [i][j] або через вказівники: *(*(arr + i) + j).

Слайд 10





Багатовимірні масиви
Вище наведений приклад визначення та звертання до елементів статичного масиву, тобто з фіксованими при визначенні розмірностями. А як створити динамічний двовимірний масив? 
     Одна з можливостей – двовимірний масив використовувати як ланцюжок послідовно розташованих рядків (власне, так він і зберігається в пам’яті). Наприклад, виділимо пам’ять під масив розмірностей N*M :
int *p =(int*)malloc (sizeof(int)*N*M);
Тепер звертання до елементу з індексами [i][j] виглядає так:    *(p + i*M + j)
На завершення програми необхідно звільнити пам’ять:
free (p);
Описание слайда:
Багатовимірні масиви Вище наведений приклад визначення та звертання до елементів статичного масиву, тобто з фіксованими при визначенні розмірностями. А як створити динамічний двовимірний масив? Одна з можливостей – двовимірний масив використовувати як ланцюжок послідовно розташованих рядків (власне, так він і зберігається в пам’яті). Наприклад, виділимо пам’ять під масив розмірностей N*M : int *p =(int*)malloc (sizeof(int)*N*M); Тепер звертання до елементу з індексами [i][j] виглядає так: *(p + i*M + j) На завершення програми необхідно звільнити пам’ять: free (p);

Слайд 11





Багатовимірні масиви
    Інша можливість – двовимірний масив використовувати як масив вказівників на рядки масиву (тобто масив масивів – саме так компілятор інтерпретує багатовимірні масиви). Створимо подібний динамічний масив розмірностей N*M :
int **p=(int**)malloc (sizeof(int*)*N);
Тут p – вказівник на масив із N елементів, які будуть вказівниками на рядки. Далі необхідно виділити пам’ять під кожний рядок:
   for (int i = 0; i < N; i++)
   *(p + i) = (int*) malloc (sizeof (int)*M);
Тепер звертатись до елементу з індексами [i][j] можна як до елементу двохіндексного масиву:    p[i][j] або *(*(p + i) + j). Звільнення пам'яті теж має відбутись в циклі:
for (int i = 0; i < N; i++)
   free(*(p + i));
free(p);
Описание слайда:
Багатовимірні масиви Інша можливість – двовимірний масив використовувати як масив вказівників на рядки масиву (тобто масив масивів – саме так компілятор інтерпретує багатовимірні масиви). Створимо подібний динамічний масив розмірностей N*M : int **p=(int**)malloc (sizeof(int*)*N); Тут p – вказівник на масив із N елементів, які будуть вказівниками на рядки. Далі необхідно виділити пам’ять під кожний рядок: for (int i = 0; i < N; i++) *(p + i) = (int*) malloc (sizeof (int)*M); Тепер звертатись до елементу з індексами [i][j] можна як до елементу двохіндексного масиву: p[i][j] або *(*(p + i) + j). Звільнення пам'яті теж має відбутись в циклі: for (int i = 0; i < N; i++) free(*(p + i)); free(p);



Похожие презентации
Mypresentation.ru
Загрузить презентацию