Void main()
{ char x;
char *s1 = "Key y was pressed";
char *s2 = "Key n was pressed";
char *s3 = "Key Esc was pressed";
for (;;) { x=getkey();
switch (x) { case 'y': puts(s1); break;
case 'n': puts(s2); break;
case 27: puts(s3); exit(0);
}
}
}
На початку функції main() оголошується символьна змінна x, значення якої присвоюється оператором x=getkey(). Наступні рядки програми містять оголошення символьних рядків s1 і s2, які виводяться на екран за допомогою функції puts. Оператор break здійснює вихід з тіла оператора switch .
Для програмування циклів ми маємо оператори циклу трьох видів. Оператор циклу while найбільш простий, він має такий формат:
while (ЛВ) оператор;
Так само, як і в операторі if, ЛВ може бути логічним або цілочисловим виразом. Робота оператора - тіла циклу наступним разом повторюється, якщо ЛВ має логічне значення true або еквівалентне йому ціле значення. Тіло циклу повинно бути єдиним оператором. Якщо треба, щоб тіло циклу включало більше, ніж один оператор, застосовуємо фігурні дужки (тобто створюємо складений оператор).
Зверніть увагу на таке: якщо початкове значення ЛВ дорівнює false, оператор тіла циклу, не буде виконаний жодного разу.
Нижче наводиться приклад використання оператора while для визначення найбільшого загального дільника двох цілих чисел. Наведений текст є реалізацією відомого алгоритму Евкліда:
int a=125, b=2500, r;
while (r = a%b) { a=b; b=r; }
printf("НЗД = %d \n", b);
Зверніть увагу на те, що перевірка завершення циклу while у цьому прикладі реалізована не зовсім звичайним способом. Вираз r = a%b у другому рядку має подвійне призначення: з одного боку, він обчислює залишок від ділення (і є однієї з операцій, передбачених алгоритмом Евкліда), з іншого, він же контролює завершення циклу while. Цикл завершується, якщо залишок від ділення дорівнює нулю (нагадаємо, що число нуль діє так само, як і логічне значення false).
Ще один різновид оператора циклу (цикл do-while) має такий формат:
do оператор;
while (ЛВ);
Оператор, що становить тіло циклу, виконується ще раз, якщо значення ЛВ є true. Різниця між циклами while і do-while полягає у наступному. Якщо з самого початку ЛВ = false, то тіло циклу while не виконується ні разу (цикл з передумовою). Тіло циклу do-while у цьому випадку буде виконано 1 раз (цикл з постумовою).
Нижче наведено фрагмент програми, у якому для знаходження найбільшого загального дільника двох цілих чисел використовується оператор do-while.
int a=125, b=2500, r=a%b;
do { a=b; b=r; }
while (r = a%b);
printf("НЗД = %d \n", b);
Наступний приклад використання циклу do-while являє собою програму, що повертає код натиснутої клавіші. При натисканні клавіші з розширеним (двобайтовим) кодом програма виводить на екран другий, не нульовий байт. Завершення роботи програми відбувається при натисканні клавіші Esc. У програмі використовується функція отримання символу натиснутої клавіші getkey з модулю syst.h.
// Приклад 4
#include <syst.h>
Yandex.RTB R-A-252273-3- Запоріжжя знту 2008
- Глава 1
- 1.1. Історія та сучасність
- 1.2. Загальна структура програми. Два простих приклади
- Void main()
- Void main()
- Глава 2 Об’єкти та ідентифікатори
- 2.1. Об'єкти та їхні атрибути
- 2.2. Алфавіт мови та лексеми
- 2.3. Ідентифікатори
- Void main() // (рівень 0)
- 2.4. Вправи
- Глава 3
- 3.1. Поняття виразу. Вирази Lvalue та Rvalue
- 3.2. Операції. Пріоритети та асоціативність
- Void main()
- Void main()
- Void main()
- 3.3. Вправи
- Глава 4
- 4.1. Види операторів
- 4.2. Стандартні оператори
- If (лв) опер_1; [ else опер_2; ]
- Void main()
- If (лв1) опер_1;
- Void main()
- Void main()
- Void main()
- Void main()
- Void main()
- 4.3. Оголошення змінних та ініціалізація
- Int number(125);
- Int number(125);
- 4.4. Константи і константні об'єкти
- Void main()
- 4.5. Вправи
- Глава 5
- 5.1. Типи та їхні різновиди
- 5.2. Службове слово void
- Int a[small], a[large];
- 5.4. Перетворення типів
- 5.5. Вправи
- Void main()
- Глава 6 покажчики і посилання
- 6.1. Покажчики
- Void main()
- Void strcpy(char* s1, char* s2)
- Void* pv;
- 6.2. Посилання
- 6.3 Вправи
- Void main()
- Глава 7 масиви і динамічні об'єкти
- 7.1. Масиви
- Void main()
- 7.2. Рядки символів
- Int strlen(char* s);
- Int strcmp(char* s1, char* s2);
- Int len(char *s)
- 7.3. Динамічні об'єкти й масиви
- Void main()
- Void main()
- Void main()
- Void main()
- 7.4. Вправи
- Глава 8 функції та процедури
- 8.1. Загальні відомості
- Void main()
- Void c_mul(double a_re, double a_im,
- Void swap1(long *px, long *py)
- Void swap2(long &X, long &y)
- Void main()
- Int fun(int, float*, double&);
- Void fun(int n)
- Void main()
- Void swap(int& a, int& b)
- 8.2. Функція main
- Void або int main(int n, char** p, char** q);
- Void main(int n, char** p, char** q)
- 8.3. Функції зі змінною кількістю параметрів
- Void main()
- 8.4. Покажчики на функції
- Int (*pf[3])(float X, float y);
- Void main()
- 8.5. Функції з шаблонами
- Void swap(string& s1, string& s2)
- Void main()
- Inline t abs(t X)
- Void create(type* &a, int n)
- Void del(type* &a)
- 8.6. Вправи
- Глава 9 консольне вВедення / вИведення
- 9.1. Засоби бібліотеки с
- Void main()
- Void main()
- Void main()
- 9.2. Використання потоків
- Void main()
- Void main()
- 9.3. Вправи
- Глава 10 операції з файлами
- 10.1. Види файлів і режими роботи з ними
- 10.2. Бібліотека с
- Void fprint(file* f, &X)
- Void rewind(file* f);
- Void main()
- Void main(int n, char** f)
- Void main(int n, char** fnam)
- 10.3. Застосування потоків
- Ifstream fin;
- Void open(char* filename, int mode, int access);
- Ifstream fin("a.Dat");
- Void main()
- Ifstream fa("a.Dat");
- If (fa.Eof()) break;
- Void main(int n, char** fnam)
- Void main(int n, char** f)
- Ifstream fa(f[1]);
- Void main(int n, char** fnam)
- Void main()
- Ifstream in("example.Cpp");
- Void main()
- Ifstream in("name.Dat",ios::binary);
- Void main()
- Ifstream fa("a.Dat");
- Int descr(fstr& f)
- Void main()
- Ifstream ina(infa);
- Ifstream inb(infb);
- 10.4. Вправи
- Глава 11 компіляція програми. Директиви і макроси
- 11.1. Фази компіляції
- 11.2. Директиви режиму компіляції
- 11.3. Директиви препроцесора
- 11.4. Вправи
- Глава 12 змішане програмування. Використання ассемблерного коду
- 12.1. Засоби використання асемблера
- Void main()
- 12.2. Вправи
- Глава 13 програмна реалізація алгоритмів
- 13.1. Алгоритм Евкліда пошуку найбільшого загального дільника двох цілих чисел
- 13.2. Обчислення факторіала
- 13.3. Пошук простих чисел. Решето Ератосфена
- Void main()
- 13.4. Генерація підмножин
- Void main()
- 13.5. Сортування масивів
- Void main()
- Void main()
- Int flag;
- 13.6. Пошук у масиві
- Void main()
- Void main()
- 13.7. Операції з матрицями
- Void ObrMatr (double** a, double** b, unsigned n )
- Void Minv(double** a, double** b, unsigned n )
- Void Gauss(double** a, double* b, double* X, unsigned n)
- 13.8. Лінійна інтерполяція даних
- 13.9. Лінійна апроксимація
- Void linappr(int n, double* X, double* y, double& a0, double& a1)
- 13.10. Розв’язування нелінійних рівнянь
- Void Bisec(funx f, double a, double b, double eps, double& X)
- Void Bisec(funx f, double a, double b,
- Void main()
- 13.11. Пошук заданої послідовності символів у файлі
- Void push(char* s, int n, char X)
- Void main()
- 13.12. Вправи
- Глава 14 створення й використання бібліотечних модулів. Модуль syst.H
- 14.1. Створення бібліотечних модулів
- 14.2. Модуль syst.H
- 14.3. Системні функції та макрооперації
- Void runtimer();
- Void main()
- Void runstimer();
- Void main()
- Void swp(Type& a, Type& b);
- Void main()
- Int cmp(int nx, int ny, Type* X, Type* y);
- Void errhalt(bool ex, char* mes);
- Void errhalt(bool ex, char* mes, file* f);
- 14.4. Операції введення/виведення
- Void flushkey();
- Void main()
- Int getyes();
- Void main()
- Void main()
- Int weight(type X);
- Void main()
- Int hamdist(Type a, Type b)
- 14.6. Спеціальні класи. Клас Spline для інтерполяції даних сплайнами
- Void main()
- 14.7. Вправи
- Глава 15 графІчне виведення. Модуль rgraph.H
- 15.1. Модуль rgraph.H. Загальні відомості
- 15.2. Глобальні змінні й константи
- 15.3. Класи й покажчики на функції
- 15.4. Функції й процедури класів
- Void main()
- Void main()
- Void main()
- Void main()
- 15.7. Вправи
- Глава 16 Життєвий цикл програмного продукту. Питання стилю запису програм
- 16.1. Життєвий цикл програми
- Int n, alfa, col;
- Void draw();
- Void rotate(int delta);
- 16.3. Вправи
- Література