- •Предисловие.
- •1. Введение.
- •1.1. История создания языка си.
- •1.2. Стандарты языка си.
- •2. Основные сведения, необходимые для создания программ на языке си.
- •2.1 Процесс создания исполняемого файла.
- •2.2 Распределение памяти программы.
- •2.3 Некоторые основные понятия.
- •2.4 Данные.
- •2.5 Структура простой программы.
- •3. Определение размеров типов данных и объектов.
- •4. Строки и строковые константы.
- •5. Директива препроцессора # define.
- •6. Функции форматированного ввода – вывода.
- •6.1 Функция форматированного вывода printf().
- •6.2 Функция форматированного ввода scanf().
- •7. Операции и операторы.
- •7.1 Арифметические операции
- •7.4 Порядок выполнения операций.
- •8. Выражения и операторы
- •8.1 Выражения.
- •8.2 Операторы.
- •8.3 Составные операторы.
- •8.4 Преобразование типов.
- •8.5 Операция приведения типов.
- •9. Функции ввода и вывода символов.
- •9.1 Функции getchar() и putchar().
- •9.2 Функции getch() и getche().
- •9.3 Ввод и вывод последовательности символов.
- •9.4 Подсчет символов, вводимых с клавиатуры.
- •9.5 Вывод символов из вводимого с клавиатуры файла.
- •9.6 Переключение ввода-вывода данных.
- •10. Принятие решений.
- •10.1 Оператор если (if).
- •10.2 Оператор если - иначе (if else).
- •10.3 Множественный выбор на основе операторов if, else.
- •10.5 Приоритеты операций отношения.
- •10.6 Логические операции (and, or, not).
- •10.7 Операция условия ?:.
- •10.8 Множественный выбор на основе операторов switch, break, default.
- •11. Циклы.
- •11.1 Цикл пока (while).
- •11.2 Цикл для (for).
- •11.4 Операция запятая ,.
- •11.5 Цикл делай пока (do while).
- •11.6 Вложенные циклы.
- •11.7 Операторы выход из структуры (break), продолжение (continue), безусловный переход (to go).
- •Литература.
- •Оглавление.
10. Принятие решений.
Согласно теории вычислительных систем, машинный язык должен обеспечивать реализацию следующих трех форм управления процессом выполнения программ:
-
Выполнение определенной последовательности операторов.
-
Выполнение определенной последовательности операторов до тех пор, пока некоторое условие истинно (например, цикл while).
-
Проверка истинности условия для выбора между различными возможными способами действия (например, оператор if).
10.1 Оператор если (if).
Оператор if позволяет проверить истинность условия и выбрать: выполнять или нет некоторый оператор (действие).
Общий вид оператора if:
if (выражение условия) оператор
Если выражение истинно, то оператор выполняется, а если ложно, то оператор не выполняется.
Операторы могут быть простыми или составными (тогда используются фигурные скобки).
/* ПРОГРАММА:
count_line.c – подсчет строк, вводимых с клавиатуры, путем счета числа символов новая строка ‘\n’.
*/
/*#############################################*/
/*============================= include */
#include<stdio.h>
/*============================= main() */
main()
{/*.---------------------------.begin main() */
int ch;
int linecount = 0;
while((ch = getchar()) != EOF) if(ch =='\n') linecount ++;
printf(" Я насчитала %d строк \n", linecount);
return 0;
}/*.---------------------------.end main() */
/*#############################################*/
РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ.
Количество строк, введенных с клавиатуры
ПОЯСНЕНИЯ К ПРОГРАММЕ.
-
Символы вводятся с клавиатуры.
-
Конец строки отмечается символом новая строка ‘\n’.
-
Оператор if(ch == '\n') linecount ++; служит указанием компьютеру увеличить значение переменной linecount на 1, если только что прочитанный символ (который содержится в ячейке памяти (переменной) ch) представляет собой символ новая строка ‘\n’. Знак двойного равенства ‘==’ означает «равно». Не путайте эту операцию с операцией присваивания (=).
-
В случаях, когда значение переменной ch не является символом новая строка ‘\n’ в цикле while производится чтение следующего символа без увеличения значения переменной linecount на 1.
-
Работа программы будет продолжаться до ввода символа EOF. Напомним, что для этой цели обычно используется комбинация клавиш [CTRL/z].
-
Правила языка Си не требуют отступа в строке, где есть операторы, выполнение которых зависит от проверяемого условия. Но это стало обычной практикой, чтобы заметить их с первого взгляда.
***************************************************************
Можно усовершенствовать программу так, чтобы она подсчитывала символы и строки одновременно.
/* ПРОГРАММА:
count_char_line.c – одновременный подсчет символов и строк, вводимых с клавиатуры.
*/
/*#############################################*/
/*============================= include */
#include<stdio.h>
/*============================= main() */
main()
{/*.---------------------------.begin main() */
int ch;
int linecount = 0;
int charcount = 0;
while((ch = getchar()) != EOF)
{/*.---------------------------.begin while */
charcount ++ ;
if(ch == '\n') linecount++ ;
}/*.---------------------------.end while */
printf(" Я насчитала %d символов и %d строк.\n", charcount, linecount);
return 0;
}/*.---------------------------.end main() */
/*#############################################*/
РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ.
Количество символов и строк, введенных с клавиатуры.
ПОЯСНЕНИЯ К ПРОГРАММЕ.
В цикл while входят два оператора; поэтому использованы фигурные скобки, чтобы отметить начало и конец тела цикла.
***************************************************************
ПРИМЕЧАНИЕ.
Можно с помощью скомпилированной программы count_char_line.exe подсчитать число символов и строк в файле с именем file_inp.txt (в файле file_inp.txt содержится последовательность символов, оканчивающихся EOF). Для этого надо переключить ввод данных (символов) в программу count_char_line.exe с клавиатуры на ввод данных (символов) из текстового файла file_inp.txt.
Для этого запустим файл get_put_file.exe с помощью командной строки: count_char_line.exe < file_inp.txt.
Результат работы программы может быть такой:
Я насчитала 8539 символов и 233 строки.
Можно вывести результат работы программы в файл file_out.txt.
Для этого запустим файл get_put_file.exe с помощью командной строки: count_char_line.exe < file_inp.txt > file_out.txt.