Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТТП (методичка).doc
Скачиваний:
3
Добавлен:
10.11.2018
Размер:
2.24 Mб
Скачать

4 Идти к 8

5 S = 0

6 Идти к 8

7 S = -1

8 Останов

Рисунок 15 — Блок-схема алгоритма примера 2

Здесь команды 4 и 6 «идти к N» позволяют обойти одну из ветвей разветвления, если уже выполнена другая.

Пример 3. Выбрать максимальное из двух чисел x, y и присвоить его значение переменной u.

Решение. Просматривая числа по очереди, мы «видим» сначала только первое число x. Будем считать его максимальным и присвоим u значение x, т.е. u = x. Затем u сравним со вторым числом y, и если окажется, что старое значение u меньше y, то u присвоим новое значение, иначе u оставим без изменения.

Ниже приводится блок-схема алгоритма и программа на естественном языке.

Исходные данные: x, y — любые числа.

Результат: u — максимальное из x и y.

1 u = x

2 Если u ≥ y идти к 4

3 u = y

4 Останов

Рисунок 16 – Блок-схема алгоритма примера 3

Идея, лежащая в основе этого алгоритма, позволяет единообразными действиями найти максимальное значение из трех и более чисел.

  1. Первая программа на Си

Стало традицией, что в книгах, посвященных различным языкам программирования, в качестве самой первой приводится программа, выводящая на экран фразу: «Hello world!» («Привет, Мир!»). Ниже приведен текст такой программы на языке Си (Листинг 1).

Листинг 1 — Первая программа на Си

/* hello.c - первая программа на Си. */

#include <stdio.h>

#include <conio.h>

void main()

{

clrscr();

printf(“\n\nHello world!\n”);

}

Первая строка программы

/* hello.c - первая программа на Си. */

является комментарием и игнорируется компилятором языка Си. Комментарии начинаются с пары символов /* и заканчиваются парой символов */ и могут быть многострочными.

Две директивы #include (include — включать в себя) в начале программы являются указанием компилятору подставить на их место текст из файлов stdio.h и conio.h (standard input-output — стандартный ввод-вывод, console input-output — консольный ввод‑вывод). Эти подставляемые файлы содержат описания функций, включенных в две важные и широко используемые библиотеки. В эти библиотеки включены функции и макросы, обеспечивающие выполнение стандартных действий по вводу-выводу. Как видно из приведенной программы, функции управления вводом‑выводом вынесены из языка Си. Для осуществления операций ввода‑вывода программист может использовать библиотеки, поставляемые фирмами-изготовителями программного обеспечения, либо создавать такие библиотеки самостоятельно и пользоваться ими.

Строка исходного текста

void main()

описывает функцию main (main — главный), возвращающую пустое значение (void — пустой), или, иными словами, не возвращающую никакого значения, т.е., по аналогии с другими языками программирования, являющуюся процедурой. По требованиям Си функция main должна присутствовать в каждой программе, и она всегда предваряет исполнительную часть первого блока текста программы. Код, задающий тело функции main, заключается в фигурные скобки { и } ­— аналог ключевых слов begin и end в других языках программирования, например Паскале (begin — начало, end – конец).

Оператор clrscr() производит вызов функции, осуществляющей очистку экрана (clear screen — очистить экран). Курсор после очистки экрана переводится в первую позицию первой (верхней) строки экрана.

Оператор printf(“\n\nHello world!\n”) выводит строку «Hello world!» на экран (print — печатать). Последовательность управляющих символов в начале \n\n переводит курсор на экране дисплея на две строки вниз перед выводом строки символов, а заключительная \n на одну строку вниз после вывода.

Рисунок 17 — Результат выполнения программы hello.c

Внимание!

В отличие от Паскаля все ключевые слова языка Си, а также имена переменных, функций и т.д. чувствительны к регистру символов. Например, слова: include, void, main, clrscr, printf записаны правильно; Include, VOID, Main, ClrScr, printF записаны неправильно и приведут к ошибкам в программе. При оформлении блок-схем также рекомендуется придерживаться этих правил.

Кроме этого, наиболее типичными ошибками при наборе текста программ являются пропуск или запись лишних:

  • символов комментария;

  • скобок (угловых, круглых, фигурных);

  • кавычек;

  • точек с запятой.

Поскольку программы на языке Си можно писать в свободном формате, то для обозначения конца каждого оператора требуется ставить специальный разделитель — точку с запятой. Компилятор языка Си не разбирается в стилях написания программ. Способы оформления программы служат для облегчения понимания программы человеком, поскольку программы в большей степени ориентированы на человека, чем на компилятор. Хорошее оформление программы способствует ее легкому чтению и понимания. Ниже (Листинг 2) представлена та же самая программа, но при ее наборе не применялось форматирование. Компилятор легко понимает эту программу и результат ее выполнения такой же, как у исходного варианта, а вот чтение и понимание ее программистом вызывает значительные трудности. Программист должен чувствовать удовлетворение от вида хорошо оформленной программы и стремиться создавать именно такие программы.

Листинг 2 — Пример текста программы на Си без форматирования

/* hello.c - первая программа на Си. */

#include <stdio.h>

#include <conio.h>

void main(){clrscr();printf(“\n\nHello world!\n”);}