
- •Структура программы на языке Си. Этапы выполнения программы
- •1.1. Алфавит языка Си
- •1.2. Лексемы
- •1.3. Идентификаторы и ключевые слова
- •1.4. Знаки операций
- •1.5. Литералы (константы)
- •1.6. Комментарии
- •1.7. Общая структура программы на языке Си.
- •1.8. Функциональная и модульная декомпозиции
- •1.9. Этапы обработки программы.
- •1.10. Роль препроцессора.
- •1.11. Ошибки
- •2. Переменные и константы. Типы данных
- •2.1. Основные типы данных
- •2.2. Декларация (объявление) объектов
- •2.3. Константы в программах
- •2.4. Целочисленные константы
- •2.5. Константы вещественного типа
- •2.6. Символьные константы
- •2.7. Строковые константы
- •3. Обзор операций
- •3.1. Операции, выражения
- •3.2. Арифметические операции
- •3.3. Операции сравнения
- •3.4. Логические операции
- •4. Операции (продолжение).
- •4.1. Операция присваивания
- •Примеры недопустимых выражений:
- •4.2. Сокращенная запись операции присваивания
- •4.3. Преобразование типов операндов бинарных операций
- •4.4. Преобразование типов при присваивании.
- •4.5. Операция явного приведения типа
- •4.6. Операция «,» (запятая)
- •4.7. Приоритеты операций (по убыванию, чертой разделены разные приоритеты)
- •5. Стандартная библиотека языка Си
- •5.1. Стандартные математические функции
- •5.2. Потоковый ввод-вывод
- •5.3. Консольные функции вывода данных на экран
- •5.4. Консольные функции ввода информации
- •5.5. Ввод-вывод в оконных приложениях.
- •Советы по программированию
- •6. Операторы языка с.
- •7. Составление разветвляющихся алгоритмов
- •7.1. Условные операторы
- •If (выражение) оператор;
- •If (выражение) оператор 1 ;
- •If (выражение 1) оператор 1;
- •If (выражение 2) оператор 2;
- •If (выражение 3) оператор 3;
- •7.2. Оператор выбора альтернатив (переключатель)
- •7.3. Условная операция «? :»
- •8. Составление циклических алгоритмов
- •8.1. Оператор с предусловием while
- •8.2. Оператор цикла с постусловием do – while
- •8.3. Оператор цикла с предусловием и коррекцией for
- •8.4. Вложенные циклы.
- •9. Операторы передачи управления.
- •9.1. Оператор безусловного перехода goto
- •9.2. Операторы continue, break и return
- •10. Массивы
- •10.1. Одномерные массивы
- •10.2. Примеры алгоритмов, использующих одномерные массивы.
- •10.3. Многомерные массивы
- •10.4. Примеры алгоритмов, использующих двумерные массивы.
- •10.5. Компонента StringGrid
- •11. Размещение данных и программ в памяти пэвм
- •11.1. Общие понятия.
- •11.2. Кодирование целых чисел.
- •11.3. Кодирование вещественных чисел.
- •11.4. Кодирование символов.
- •Стандартная часть таблицы символов (ascii)
- •Дополнительная часть таблицы символов
- •11.5. Операция sizeof
- •11.6. Побитовые логические операции. Операции над битами
- •11.7. Кодирование программы.
- •11.8. Регистры
- •12.1. Строки как нуль-терминированные массивы char.
- •12.2. Русификация консольных приложений.
- •12.3. Строки как переменные типа AnsiString.
- •12.4. Преобразования строковых типов.
- •12.5. Тип String в консольных приложениях.
- •13. Функции пользователя и классы памяти.
- •13.1. Сущность и предназначение функций.
- •13.2. Определение и вызов функции.
- •13.3. Прототип функции.
- •13.4. Область видимости.
- •13.5. Классы памяти объектов в языке Cи.
- •13.6. Разбиение программы на модули.
- •15. Генерация псевдослучайных чисел.
- •17. Указатели
- •17.1. Определение указателей
- •17.2. Связь указателей и массивов.
- •17.3. Операции над указателями (косвенная адресация)
- •17.4. Сравнение указателей
- •17.5. Массивы указателей.
- •17.6. Указатели на указатели.
- •17.7 . Указатели как параметры функций.
- •Void f1(int, const double *);
- •17.9. Ссылка
- •17.10. Указатели на функции
- •Id_функции(список аргументов);
- •18. Работа с динамической памятью
- •18.1. Динамическое выделение и освобождение памяти.
- •18.2. Создание одномерного динамического массива.
- •18.3. Создание двуxмерного динамического массива.
- •19. Операция typedef
- •20. Отладка и пошаговое выполнение программы
Дополнительная часть таблицы символов
КС |
С |
КС |
С |
КС |
С |
КС |
С |
КС |
С |
КС |
С |
КС |
С |
КС |
С |
128 |
А |
144 |
Р |
160 |
а |
176 |
░ |
192 |
└ |
208 |
╨ |
224 |
р |
240 |
Ё |
129 |
Б |
145 |
С |
161 |
б |
177 |
▒ |
193 |
┴ |
209 |
╤ |
225 |
с |
241 |
ё |
130 |
В |
146 |
Т |
162 |
в |
178 |
▓ |
194 |
┬ |
210 |
╥ |
226 |
т |
242 |
Є |
131 |
Г |
147 |
У |
163 |
г |
179 |
│ |
195 |
├ |
211 |
╙ |
227 |
у |
243 |
є |
132 |
Д |
148 |
Ф |
164 |
д |
180 |
┤ |
196 |
─ |
212 |
╘ |
228 |
ф |
244 |
Ї |
133 |
Е |
149 |
Х |
165 |
е |
181 |
╡ |
197 |
┼ |
213 |
╒ |
229 |
х |
245 |
ї |
134 |
Ж |
150 |
Ц |
166 |
ж |
182 |
╢ |
198 |
╞ |
214 |
╓ |
230 |
ц |
246 |
Ў |
135 |
З |
151 |
Ч |
167 |
з |
183 |
╖ |
199 |
╟ |
215 |
╫ |
231 |
ч |
247 |
ў |
136 |
И |
152 |
Ш |
168 |
и |
184 |
╕ |
200 |
╚ |
216 |
╪ |
232 |
ш |
248 |
° |
137 |
Й |
153 |
Щ |
169 |
й |
185 |
╣ |
201 |
╔ |
217 |
┘ |
233 |
щ |
249 |
∙ |
138 |
К |
154 |
Ъ |
170 |
к |
186 |
║ |
202 |
╩ |
218 |
┌ |
234 |
ъ |
250 |
· |
139 |
Л |
155 |
Ы |
171 |
л |
187 |
╗ |
203 |
╦ |
219 |
█ |
235 |
ы |
251 |
√ |
140 |
М |
156 |
Ь |
172 |
м |
188 |
╝ |
204 |
╠ |
220 |
▄ |
236 |
ь |
252 |
№ |
141 |
Н |
157 |
Э |
173 |
н |
189 |
╜ |
205 |
═ |
221 |
▌ |
237 |
э |
253 |
¤ |
142 |
О |
158 |
Ю |
174 |
о |
190 |
╛ |
206 |
╬ |
222 |
▐ |
238 |
ю |
254 |
■ |
143 |
П |
159 |
Я |
175 |
п |
191 |
┐ |
207 |
╧ |
223 |
▀ |
239 |
я |
255 |
|
В таблицах обозначение КС означает "код символа", а С – "символ".
Тип char рассматривается компилятором как "целочисленный", поэтому возможно использование signed char (по умолчанию) - коды символов от -128 до +127 и unsigned char - коды символов от 0 до 255. При этом коды символов первой половины кодовой таблицы для signed char и unsigned char совпадают. Коды символов второй половины кодовой таблицы для signed char являются отрицательными, а для unsigned char - положительными, от 128 до 255 (см. выше кодировку целых отрицательных чисел).
Таким образом, одни и те же значения типа char могут рассматриваться и как символы, и как числа (знаковые либо беззнаковые); при этом конкретный смысл значения определяется операцией, которая над ним совершается.
Заметим, что коды однотипных символов (цифр; больших латинских букв; малых латинских букв) идут подряд, в порядке возрастания. Этим можно воспользоваться для упрощения многих действий.
Пример 1. Проверить, является ли символ цифрой. Если да, то присвоить переменной целого типа значение этой цифры.
char c; int i;
...
if (c>='0' && c<='9')
i=c-'0'; // Равносильно i=c-48;
Пример 2. Занести в переменную случайно выбранную большую букву латинского алфавита.
#include<stdlib.h>
...
char c;
randomize(); // Инициализация счетчика случайных чисел
...
c=random(26)+'A'; // 26 - число латинских букв в алфавите
Напомним, что символьная константа – это символ, заключенный в одинарные кавычки: 'A', 'х'.