Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

ВНИМАНИЕ. Перед запуском программы необходимо иметь тестовые примеры, содержащие исходные данные и ожидаемые результаты





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

 

Мы будем неоднократно возвращаться к обсуждению состава тестовых примеров, поскольку самое важное качество любой программы — надежность. Программы, работающие только с определенными исходными данными, да и то лишь в бережных руках хозяина, никому не нужны.

 

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

 

#include < stdio.h> int main(){ float fahr, cels; printf(" \n Введите температуру по фаренгейту\n"); scanf(" %f", & fahr); cels=5 * (fahr – 32) / 9; printf(" По Фаренгейту: %6.2f. В градусах Цельсия: %6.2f\n", fahr, cels); return 0; } // 1 // 2 // 3 // 4 // 5 // 6 // 7

 

Как видите, к программе подключается другой заголовочный файл - < stdio.h>. Он содержит описание функций, констант и других элементов, относящихся ко вводу-выводу «в стиле С».

 

Рассмотрим отличия этой программы от предыдущей.

 

Функция printf в операторе 3 выполняет вывод переданного ей в качестве параметра строкового литерала, то есть последовательности любых символов в кавычках, на стандартное устройство вывода (дисплей). Символы \n называются управляющей последовательностью. Есть разные управляющие последовательности, все они начинаются с обратной косой черты. Эта последовательность задает переход на следующую строку.

 

Для ввода исходных данных в операторе 4 используется функция scanf. В ней требуется указать формат вводимых значений, а также адреса переменных, которым они будут присвоены. Параметры любой функции перечисляются через запятую. В первом параметре функции scanf в виде строкового литерала задается спецификация формата вводимой величины, соответствующая типу переменной. Спецификация %f соответствует типу float1. В качестве второго параметра функции передается адрес переменной, по которому будет помещено вводимое значение. Операция взятия адреса обозначается &.

 

Для вывода результата в операторе 6 применяется уже знакомая нам функция printf. Теперь в ней три параметра. Первый, имеющий вид строкового литерала, задает вид и формат выводимой информации. Второй и третий параметры представляют собой имена переменных. Все символы литерала, кроме спецификаций формата %f и управляющей последовательности \n, выводятся на дисплей без изменений. При выводе форматные спецификации будут заменены конкретными значениями переменных fahr и cels.

 

Формат вывода чисел можно уточнить при помощи так называемых модификаторов формата — чисел, которые записаны перед спецификацией. Первое число задает минимальное количество позиций, отводимых под выводимую величину, второе - сколько из этих позиций отводится под дробную часть величины. Необходимо учитывать, что десятичная точка тоже занимает одну позицию. Если заданного количества позиций окажется недостаточно для размещения числа, компилятор простит нам этот промах и автоматически выделит поле достаточной длины.

 

На наш взгляд, в данном случае первый вариант программы (с использованием классов) более прост и нагляден, а также лучше защищен от ошибок кодирования.

 

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

 

Надо сказать, что при использовании классов также можно задавать любую форму представления информации, но мы пока не будем вдаваться в подобные детали. Мы не рекомендуем начинающим изучать на этом семинаре теоретический материал по классам ввода/вывода, поскольку для их полного понимания требуется освоить большой объем материала. Всему свое время!

 

Для каждой программы необходимо выбрать один наиболее удобный способ вывода (либо с помощью функций, либо с помощью классов), поскольку смешивать оба варианта не рекомендуется.

 

СОВЕТ

Используйте функции ввода/вывода в тех программах, где требуется тщательное форматирование результатов, а классы — в остальных случаях.

 

Рассмотрим в более общем виде очень важный для дальнейшей работы вопрос — описание переменных.

 







Дата добавления: 2014-11-10; просмотров: 704. Нарушение авторских прав; Мы поможем в написании вашей работы!




Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

Стресс-лимитирующие факторы Поскольку в каждом реализующем факторе общего адаптацион­ного синдрома при бесконтрольном его развитии заложена потенци­альная опасность появления патогенных преобразований...

ТЕОРИЯ ЗАЩИТНЫХ МЕХАНИЗМОВ ЛИЧНОСТИ В современной психологической литературе встречаются различные термины, касающиеся феноменов защиты...

Этические проблемы проведения экспериментов на человеке и животных В настоящее время четко определены новые подходы и требования к биомедицинским исследованиям...

Типы конфликтных личностей (Дж. Скотт) Дж. Г. Скотт опирается на типологию Р. М. Брансом, но дополняет её. Они убеждены в своей абсолютной правоте и хотят, чтобы...

Гносеологический оптимизм, скептицизм, агностицизм.разновидности агностицизма Позицию Агностицизм защищает и критический реализм. Один из главных представителей этого направления...

Функциональные обязанности медсестры отделения реанимации · Медсестра отделения реанимации обязана осуществлять лечебно-профилактический и гигиенический уход за пациентами...

Studopedia.info - Студопедия - 2014-2025 год . (0.009 сек.) русская версия | украинская версия