Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Топ:
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Интересное:
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Дисциплины:
2018-01-04 | 146 |
5.00
из
|
Заказать работу |
|
|
Указанные выше программа всё ещё обладает тем недостатком, что для получения суммы других чисел необходимо запускать её заново.
Итак, это уже вторая программа, имеющая существенные недостатки. Это говорит о том, что проектирование программы было начато неправильно: вместо того, чтобы кидаться сразу писать текст на языке программирования необходимо сначала четко осознать потребительские свойства и алгоритм будущего программного продукта.
Решению этой задачи способствует проектирование схемы алгоритма (рис. 2). Правила составления таких схем описаны в разделе 5. Пример весьма условный, поскольку программа тривиальная. В реальных случаях не следует расписывать схему вплоть до каждого оператора. Схема алгоритма должна быть укрупненной и помещаться на один лист формата А4.
Зададимся вопросом: чем же так замечательны схемы алгоритмов и почему необходимо начинать проектирование именно с них?
Основным преимуществом схем алгоритма является языконезависимость. Это означает, что одна и та же схема может быть реализована практически на любом языке программирования.
Так же схема алгоритма может показать общие черты предполагаемой программы, не вдаваясь в подробности. Таким образом, можно выявить общую функциональность схемы, не отвлекаясь на излишнюю информацию и подробности, присущие конкретному языку и конкретной реализации. Важно то, что эта общая функциональность далее отображается на конкретные функции языка программирования и, поэтому, проектирование схемы алгоритма – это первый этап проектирования структуры программной системы.
Отличительная особенность алгоритма заключается в циклическом исполнении основного фрагмента программы. Алгоритмы этого типа называют циклическими.
|
Ниже приведен текст программы, спроектированный по схеме алгоритма, показанной на рис. 2.
#include <stdio.h>
#include <conio.h>
void main(void)
{ // Программа суммирования двух чисел с циклическим повторением
int a, b, c;
char cont;
clrscr(); // Очистка экрана
do
{ // Циклическое повторение суммирования двух чисел
printf("Введите два числа:\n");
scanf("%d %d", &a, &b); // Последний введенный символ - '\n'
c = a + b;
printf("Сумма = %d\n", c);
puts("Хотите продолжать? (y/n)");
fflush(stdin); // Очистка stdin от последнего
// введенного символа '\n'
scanf("%c", &cont);
} while(!(cont=='n'|| cont=='N'));
}
В данной программе жирным выделены места отличия от предыдущего варианта. Начнём разбор изменений по порядку.
Строка #include <conio.h> осуществляет подключение новой библиотеки, которую мы не использовали ранее. Она нам пригодится в дальнейшем в этой программе.
В строке char cont; осуществляется ввод переменной для хранения символов.
Строка clrscr(); // Очистка экрана говорит сама за себя: именно этой функцией осуществляется очистка экрана. Именно для неё мы и подключали дополнительную библиотеку.
Далее начинается конструкция, которую ни в коем случае нельзя воспринимать как отдельную строку – это цикл. Он состоит как минимум из 2-х (в данном случае из 3-х) строк:
do
{ // Циклическое повторение суммирования двух чисел
и
} while(!(cont=='n'|| cont=='N'));
Данная конструкция предназначена для циклического выполнения того кода, который заключён между первой и второй частью. Выполнение кода повторяется пока истинно значение логического выражения внутри скобок while(…), то есть до тех пор пока не (!) введен символ 'n' или 'N'. Операторы! и || являются операторами булевой алгебры. Они означают НЕ и ИЛИ соответственно.
Строка puts("Хотите продолжать? (y/n)"); выводит поясняющую надпись. Понятный и удобный интерфейс, как уже было сказано ранее, является важной составляющей частью любой программы.
Строкой fflush(stdin); мы сообщаем компилятору о необходимости очистки входного потока. Это сделано в связи с наличием буфера входного потока, который сохраняет все нажатые символы до момента пока они не будут востребованы. В данном случае, при вводе чисел в буфере клавиатуры остался символ ‘\n’. Это символ перевода каретки, который остался после нажатия клавиши [Enter].
|
После очистки буфера можно быть совершенно уверенным, что в строке scanf("%c", &cont); мы получим то, что хотел нам передать пользователь, а именно один символ. Считываем мы его в переменную cont; %c в данном случае означает символьную переменную.
Итог
Мы спроектировали программу Вашей лабораторной работы №1. Не правда ли, текст программы на языке С выглядит просто и понятно для человека-проектировщика. Простота и наглядность текста – это то, к чему Вы и в дальнейшем должны стремиться.
Однако, следует обратить особое внимание, что язык С – язык профессионального программирования и, поэтому, содержит массу средств выражения алгоритмов, изощренных деталей и нюансов, делающих его эффективным с точки зрение объема памяти и скорости выполнения результирующей программы.
Настоящее пособие не призвано заменять какую-либо книгу, подробно описывающую язык С. Язык программирования следует изучать по оригиналу (такому как [1]) самостоятельно, что Вы и должны уже сейчас начать делать. А задача преподавателей, читающих лекции и ведущих практические занятия как раз и заключается в том, чтобы помочь Вам разобраться во всех тонкостях предмета. Если Вы чувствуете трудности в освоении языка, то целесообразно воспользоваться учебником [2].
|
|
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!