- •Елементи мови с.Основні символи
- •Ключові слова
- •Ідентифікатори
- •Константи
- •Лексеми
- •Коментарі
- •Умовні оператори. Логічні вирази
- •Форми оператора if
- •Оператор вибору switch
- •Перерахування типів
- •Перетворення типів
- •Оператори циклу
- •Оператор while
- •Оператор for
- •Оператор do-while
- •Оператори переходу
- •Cтруктури
- •Об'єднання (суміші)
- •Робота з структурами.
- •Ініціалізація структур
- •Робота з обєднаннями
- •Визначення об'єктів та типів
- •Методи доступу до елементів масивів
- •Покажчики на багатовимірні масиви
- •Операції з вказівниками
- •Робота з покажчиками.
- •Покажчики на структуру
- •Масиви структур
- •Динамічне розміщення масивів
- •Робота з динамічними масивами
- •Робота з непрямою адресацією
- •Робота з покажчиками як параметрами функцій
- •Використання вказівників
- •Операції з вказівниками
- •Використання вказівників в програмі
- •Робота з файлами
- •Відкриття файлу
- •Обробка відкритого файлу
- •Перевірка ознаки кінця файлу
- •Закриття файлу
- •Функції введення-виведення
- •Робота з текстовими файлами
- •Функція форматованого виведення printf ()
- •Основні формати
- •Модифікації форматів
- •Функція форматованого введення scanf ()
- •Робота функції scanf ()
- •Призначеня функцій бібліотеки введення-виведення
- •Макрокоманди
- •Потокові інтерфейси введення-виведення
- •Ближні покажчики (near)
- •Дальні покажчики (far)
- •Покажчики huge
- •Функції для роботи з рядками
- •Динамічні рядки, клас string
- •Визначення поточної робочої директорії
- •Визначення поточного каталогу диска
- •Визначення / встановленн поточного диска
- •Пошук файлу
- •Створення, видалення, зміна директорій
- •Приклад програми для роботи з директоріями
- •Перегляд каталогу диска
- •Параметри структури ffblk
- •Робота з клавіатурою
- •Робота з файлами
- •Послідовний доступ до елементів двійкових файлів
- •Організація довільного доступу до елементів двійкових файлів
- •Робота динамічних структур даних.
- •Функції управління пам'яттю
- •Атрибути файлів.
- •Параметри
- •Динамічні структури даніх
- •Лінійні списки
- •Стек. Загальні поняття.
- •Приклад використання стеку
- •Основні визначення
- •Приклад використання дерев
Оператор do-while
У циклі do-while перевірка умови проводиться після виконання тіла циклу:
do ОP while (ЛВ)
дія
виконується ОР;
якщо ЛВ істинно, повторюється виконання ОР, у противному випадку здійснюється перехід до оператора, наступного за while.
Якщо в циклі повинно виконуватися кілька операторів, вони полягають в {}. Даний цикл носить назву циклу з постусловіем, тобто при будь-якому ЛВ тіло циклу виконується хоча б один раз.
З використанням раніше записаної формули розкладання обчислимо y = sin (x) з точністю e:
# include <stdio.h>
# include <math.h>
# define EPS 0.001
int main (void)
{
float x, S = 0, U;
int i = 0;
printf ("\ n Input x →");
scanf ("% f", & x);
U = x;
do
{
S + = U;
+ + i;
U * = (-x) * x;
U / = 2 * i * (2 * i +1);
}
while (fabs (U)> EPS);
printf ("\ n sin (% 6.3f) =% 7.3f", x, S);
return 0;
}
Оператори переходу
В ряді випадків виникають ситуації, коли необхідно перервати виконання блоку операторів незалежно від будь-яких умов.
У мові C визначено чотири оператора переходу: break, continue, return і goto. Оператори break і continue можна використовувати в будь-якому з операторів циклу. Зауважимо, що вхід в тіло циклу з оператора, розташованого поза цього циклу, неможливий. Можливі вихід з циклу до його нормального завершення та обхід частині циклу при деяких умовах.
Оператор break, як зазначено раніше, можна також використовувати в операторі switch. Оператори return і goto можна використовувати в будь-якому місці всередині функції.
Оператор break
Оператор break застосовується в двох випадках. По-перше, в операторі switch з його допомогою переривається виконання послідовності case. По-друге, оператор break використовується для негайного припинення виконання циклу без перевірки його умови і передачі управління оператору, наступному після оператора циклу.
Наприклад, у програмі
# Include <stdio.h>
int main (void)
{
int num, count = 0;
for (;; count + +)
{
printf ("\ n num →");
scanf ("% d", & num);
if (num <0) break;
}
printf ("\ n count =% d", count);
return 0;
}
послідовно вводяться цілі числа, и підраховується число введень до Першого негативного числа. Після цього Введення чисел пріпіняється. Оператор break Використання в умові оператора if для виходе з циклу.
Можна сказати, що оператор continue трохи схожий на оператор break. Оператор break викликає переривання циклу, а continue - переривання поточної ітерації циклу і перехід до наступної ітерації.
Приклад програми: проводиться генерація випадкових чисел за допомогою функції rand () до тих пір, поки не буде знайдено 10 непарних чисел.
При генерації парного числа виконується оператор continue, передавальний керування на початок циклу:
# include <stdio.h>
# include <stdlib.h>
# include <time.h>
InitRoutin () / * створюємо функцію ініціалізації генератора випадкових чисел * /
{
printf ("Ініціалізація генератора випадкових чисел \ n");
srand (time (NULL)); / * оголошена в time.h * /
return 0;
}
int main (void)
{
int count = 0;
for (InitRoutin (); count <10;)
{
int val = rand (); / * rand ()-генератор випадкових чисел, оголошена в stdlib.h * /
if (val% 2 == 0) / * перевірка на парність * /
{
putchar ('.');
continue;
}
count + +;
printf ("Знайдено непарне число:% d \ n", val);
}
return 0;
}
оператор return
Завершує виконання функції, в якій він заданий, і повертає управління в зухвалу функцію. Управління передається в зухвалу функцію в точку, безпосередньо наступну за викликом.
Синтаксис: return (вираз);
Значення обчисленого в операторі return вираження повертається в зухвалу функцію в якості результату викликається функції. Якщо вираз опущено, то повертане функцією значення не визначено (функції типу void).
Якщо оператор return в викликається функції відсутнє, управління автоматично передається в зухвалу функцію після виконання останнього оператора функції. Повертане функцією значення в цьому випадку не визначено.
Отже, оператор return використовується в 2-х випадках:
якщо треба негайно вийти з функції;
якщо функція повинна повертати значення.
Наприклад, у першому випадку:
void print (char x) / * створення функції print * /
{
if (x <32)
{
printf ("Це керуючий код \ n");
return; / * return використовується для виходу з функції * /
}
printf ("Введено символ% c \ n", x);
}
у другому випадку:
int sum (int a, int b) / * створення функції sum * /
{
return (a + b); / * return використовується для повернення суми * /
}
Питання для контролю?
1.Які є оператори циклу?
2. Як стровити умову?
3. Які є оператори переходу?
4.Який синтаксис команди return?
Література:
Я. Белецкий, “ Турбо Си. Новая разработка”, Моcква, “Машиностроение”, 2004г ,с. 92-101
Урок №16
(згідно робочої навчальної програми)
Тема: Структури та об'єднання.
Питання:
1.Структури
2.Об'єднання (суміші)
