Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦИИ_ПО_ПРОГРАММИРОВАНИЮ_ПРЕПОД_3403_220301.doc
Скачиваний:
27
Добавлен:
06.11.2018
Размер:
845.31 Кб
Скачать

10. Принятие решений.

Согласно теории вычислительных систем, машинный язык должен обеспечивать реализацию следующих трех форм управления процессом выполнения программ:

  1. Выполнение определенной последовательности операторов.

  2. Выполнение определенной последовательности операторов до тех пор, пока некоторое условие истинно (например, цикл while).

  3. Проверка истинности условия для выбора между различными возможными способами действия (например, оператор 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.