- •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”:
