
- •1 Основні елементи мови с
- •1.1 Алфавіт мови програмування
- •1.2 Лексеми
- •1.3 Ключові слова
- •1.4 Ідентифікатори
- •1.5 Класифікація типів даних
- •1.6 Літерали
- •1.7 Оператори
- •1.8 Коментарі
- •1.9 Директиви препроцесора
- •1.10 Організація програми
- •2 Операції та вирази
- •2.1 Загальні відомості
- •2.2 Арифметичні операції
- •2.3 Операції приведення типів
- •2.4 Операції присвоєння
- •2.5 Операції інкремента і декремента
- •2.6 Операції порівняння
- •2.7 Операції зсуву
- •2.8 Порозрядні операції
- •2.9 Логічні операції
- •2.10 Операція sizeof
- •2.11 Операція послідовного обчислення
- •2.12 Операція умови (?:)
- •2.13 Адресні операції
- •3 Прості типи даних
- •3.1 Оголошення змінних
- •3.2 Час існування та область видимості змінних
- •3.3 Цілі типи даних
- •3.4 Дійсні типи даних
- •4 Оператори керування
- •4.1 Оператор розгалуження if
- •4.2 Оператор розгалуження if-else
- •4.3 Оператор множинного розгалуження switch
- •4.4 Оператор циклу for
- •4.5 Оператор циклу while
- •4.6 Оператор циклу do while
- •4.7 Оператор break
- •4.8 Оператор continue
- •5 Функції
- •5.1 Основні поняття
- •5.2 Види виклику функцій
- •5.3 Область видимості
- •5.4 Порожній тип void
- •5.5 Передача аргументів у функцію
- •5.6 Рекурсивні функції
- •5.7 Прототипи функцій
- •6 Покажчики
- •6.1 Визначення та ініціалізація покажчиків
- •6.2 Визначення покажчиків
- •6.3 Масиви
- •6.4 Операції порівняння
- •6.5 Копіювання рядка
- •6.6 Покажчики на функцію
- •6.7 Покажчики на void
- •6.8 Арифметика покажчиків
- •7 Масиви
- •7.1 Загальні поняття
- •7.2 Одновимірні масиви
- •7.3 Багатовимірні масиви
- •8 Рядки в с
- •8.1 Рядки
- •8.2.Створення рядків
- •8.3 Прототипи
- •8.3 Функції перетворення буферів
- •8.4 Функції перевірки літер
- •8.5 Операції з рядками
- •9 Структури, об’єднання, перерахування
- •9.1 Структури
- •9.2 Бітові поля
- •9.3 Ключове слово typedef
- •9.4 Об’єднання
- •9.5 Перераховуваний тип
- •10 Введення та виведення даних
- •10.1 Функція виведення printf
- •10.2Функція введення scanf
- •10.3 Введення та виведення у файл
- •11 Динамічне виділення пам'яті
2.9 Логічні операції
До логічних операцій відносяться операція логічного «І» (&&) та операція логічного «АБО» (||). В кожній операції можуть брати участь операнди різних типів. Результатом логічної операції є 0 чи 1, тип результату int.
Результатом застосування операції логічного «І» (&&) до операндів, що мають нульові значення, є 0. Якщо один з операндів дорівнює 0, то результатом операції є 0. Якщо обидва операнда мають ненульове значення результат операції дорівнює 1.
Результатом застосування операції логічного «АБО» (||) до операндів, що мають нульові значення, є 0. У випадку якщо один з операндів має не нульове значення результат операції дорівнює 1.
Таблиці істинності логічних операцій зображенні у таблиці 2.6.
Таблиця 2.6 – Таблиці істинності логічних операцій «І» та «АБО»
A |
B |
A && B |
A || B |
0 |
0 |
0 |
0 |
0 |
не «0» |
0 |
1 |
не «0» |
0 |
0 |
1 |
не «0» |
не «0» |
1 |
1 |
Приклад 2.14. Логічні операції.
int A = 10, B = 0, C = 4, D;
D = A && B; /* D = 0*/
D = A || B; /*D = 1*/
D = A && C; /* D = 1*/
D = A || C; /* D = 1*/
За допомогою логічних операцій «І» та «АБО» та операторів порівняння можна конструювати вирази, для перевірки входження в діапазон (діапазони) значень змінних. Такі вирази як правило використовують в операторах керування для конструювання складних умов. Приклад таких виразів представлений у таблиці 2.7.
У першому пункті табл. 2.7 представлений вираз який повертає 1 у випадку якщо значення змінної x входить у діапазон (a,b). У другому пункті таблиці представлений вираз який повертає 1 якщо значення змінної x входить у один з діапазонів (-∞,a) чи (b,+∞). У третьому пункті таблиці представлений вираз який повертає 1, якщо значення змінної x входить у один з діапазонів (-∞,a] або (b,c). У четвертому пункті таблиці представлений вираз який повертає 1, якщо значення змінної x входить у один з діапазонів (a,b) або [c,d].
Таблиця 2.7 – Приклади виразів представлення діапазону значень
№ |
Графічне представлення |
Математичне представлення |
Представлення в мові С |
1 |
|
|
x<a && x>b |
2 |
|
|
x>a || x<b |
3 |
|
|
x<=a || x>b && x<c |
4 |
|
|
x>a && x<b || x>=c && x<=d |
Задача 1.
Написати програму, яка буде зчитувати з клавіатури символ і виводити на екран 1 якщо цей символ мала буква англійського алфавіту, і 0 в протилежному випадку.
Для рішення задачі потрібно скористатися таблицею кодів ASCII, в якій малі букви англійського алфавіту кодуються числами, а саме в діапазоні чисел від 97 до 122 закодовані літери від a до z. Для задання виразу який буде приймати значення 1 у випадку попадання значення введеного символу в потрібний діапазон доцільно використати вираз з пункту 1 таблиці 2.4.
#include <stdlib.h>
#include <stdio.h>
int main()
{
char x;
scanf("%c", &x);
printf("%i \n", x>= 97 && x<= 122);
system("PAUSE");
return 0;
}
Результат роботи програми, при введенні символу “r”:
Результат роботи програми, при введенні символу “R”:
Задача 2.
Написати програму, яка буде зчитувати з клавіатури символ і виводити на екран 1 якщо цей символ мала чи велика буква англійського алфавіту, і 0 в протилежному випадку.
Для задання виразу який буде приймати значення 1 у випадку попадання значення введеного символу в потрібні діапазони доцільно використати вираз з пункту 4 таблиці 2.4.
#include <stdlib.h>
#include <stdio.h>
int main()
{
char x;
scanf("%c", &x);
printf("%i \n", x>= 65 && x<= 90 || x>=97 && x<= 122);
system("PAUSE");
return 0;
}
Результат роботи програми, при введенні символу “a”:
Результат роботи програми, при введенні символу “A”: