Язык Си - [11]

Шрифт
Интервал

     Теперь, так же как прежде, пришло время рассмотреть какую-нибудь простую программу. Возможно, вы обнаружите в ней какие-то непонятные места. Мы постараемся разъяснить их вам при последующем обсуждении в данной главе. Общий смысл про граммы должен быть достаточно понятен, поэтому попробуйте осуществить компиляцию и выполнить эту программу[1] . Для экономии времени можете опустить комментарии при вводе программы в машину. (Замечание: мы включили имя программы в ее соcтав как комментарий, в дальнейшем, приводя программы, будем придерживаться этого правила ).

/*Ваш золотой эквивалент*/

/*определение стоимости количества золота, равного вашему весу*/

main( )

{

    float weight, value, /* 2 переменные с плавающей точкой */

    char beep;           /* символьная переменная */

    beep = ' /007' ;     /* присваивание специального символа  переменной beep */

    printf(" Стоите ли вы своего веса в золотом эквиваленте? \n");

    printf(" Укажите, пожалуйста, свой вес в фунтах и узнаете \n");

    scanf("%f ",  &weight;);  /* получение данных */

    value= 400.0 *weight*14,5833; /* предполагаемая цена золота -

                                    400 долл за тройскую унцию */

     /* коэффициент 14,5833 служит для перевода в тройские унции */

    printf(" %c Стоимость вашего веса в золотом эквиваленте

                                $%2,2 f%c.\n",  beep, value, beep);

    printf("Bы несомненно стоите столько' Если цена золота упадет,");

    printf(" ешьте больше, \n чтобы сохранить свою стоимость \n");

}

     При вводе этой программы в компьютер вы можете захотеть заменить число 400.00 величиной текущей цены золота. Мы надеемся, однако, что вы не будете пускаться на обман, заменяя число 14,5 833, равное числу унций в фунте (Речь идет об унциях в тройской системе мер, применяемой при взвешивании благородных металлов, и фунтах в обычной системе мер, используемой при взвешивании всего остального). Заметим, что слова "укажите свой вес" означают, что необходимо набрать на клавиатуре число, выражающее вес, и нажать клавишу "ввод" или "возврат" (Не надо только вставать на клавиатуру!) Нажав эту клавишу, вы тем самым сообщаете компьютеру, что вы уже закончили ввод.

     Данная программа имеет также некоторую незаметную на первый взгляд особенность. Чтобы обнаружить ее и понять, в чем дело, вы должны сами запустить эту программу; имя одной из переменных служит довольно недвусмысленным намеком.

Что нового содержится в этой программе?

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

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

     3. Для вывода на печать этих переменных нового типа в операторе printf( ) мы использовали спецификации %f и , соответствующие переменной с плавающей точкой и символьной переменной. Модификаторы в спецификации %f применяются для улучшения вида результата на экране дисплея.

     4. Возможно, самой существенной новой особенностью является то, что эта программа "диалоговая". Компьютер запрашивает у вас информацию, а затем использует число, которое вы ввели. Работать с диалоговой программой гораздо интереснее, чем с программами недиалогового типа, которые мы использовали до этого. Более важным является еще и то, что такой подход позволяет нам создавать более гибкие программы. Например, нашу программу можно использовать при задании любого веса (конечно, в разумных пределах), а не только веса в 175 фунтов. Нам не нужно переписывать программу всякий раз, когда мы захотим обработать вес еще одного человека. Функции scanf( ) и printf( ) делают это вполне возможным. Функция scanf( ) читает данные, набираемые на пульте дисплея, и вводит их в программу. В гл. 2 мы уже видели, что функция printf( ) читает данные из программы и выводит их на экран. Вместе эти две функции позволяют установить двустороннюю связь с вашей программой, что делает общение с компьютером гораздо более приятным.

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

ДАННЫЕ: ПЕРЕМЕННЫЕ И КОНСТАНТЫ

Компьютер, выполняя программу, может заниматься разнообразной деятельностью. Он может складывать числа, сортировать имена, заниматься распознаванием речи и изображения на экране видеодисплея, вычислять орбиты комет, подготавливать список почтовых адресов абонентов, чертить фигуры, делать логические выводы или что-нибудь еще, что только вы можете себе представить. Чтобы заниматься всем этим, программам необходимо работать с "данными" - числами и символами, т. е. объектами, которые несут в себе информацию, предназначенную для использования. Некоторые данные устанавливаются равными определенным значениям еще до того, как программа начнет выполняться, а после ее запуска сохраняют такие значения неизменными на всем протяжении работы программы. Это "константы". Другие данные могут изменяться, или же им могут быть присвоены значения во время выполнения программы; они называются "переменными". (Мы уже использовали данный термин в предыдущей главе, но формально вы знакомитесь с ним только здесь.) В нашей простой программе


Еще от автора Митчел Уэйт
Язык программирования C [Лекции и упражнения, 6-е изд.]

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


Рекомендуем почитать
Язык PL/SQL

В учебно-методическом пособии рассматриваются основы языка программирования PL/SQL, реализованного в системе управления базами данных Oracle Database Server. Приводятся сведения о поддерживаемых типах данных, структуре программ PL/SQL и выполнении SQL-предложений в них. Отдельно рассмотрено создание хранимых в базах данных Oracle программ PL/SQL – процедур, функций, пакетов и триггеров.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.



MySQL 5.0. Библиотека программиста

Эта книга предназначена для всех, кто желает освоить СУБД MySQL. Для ее чтения вам не нужны никакие специальные знания – достаточно быть пользователем Windows. Вы узнаете, как установить и запустить MySQL, как создать собственную базу данных, как работать с данными при помощи команд SQL, как администрировать базу данных и оптимизировать ее работу. Разработчики веб-приложений на языках PHP, Perl и Java найдут в этой книге полезные сведения по использованию базы данных MySQL в соответствующих приложениях.


Программирование на Visual C++. Архив рассылки

РАССЫЛКА ЯВЛЯЕТСЯ ЧАСТЬЮ ПРОЕКТА RSDN, НА САЙТЕ КОТОРОГО ВСЕГДА МОЖНО НАЙТИ ВСЮ НЕОБХОДИМУЮ РАЗРАБОТЧИКУ ИНФОРМАЦИЮ, СТАТЬИ, ФОРУМЫ, РЕСУРСЫ, ПОЛНЫЙ АРХИВ ПРЕДЫДУЩИХ ВЫПУСКОВ РАССЫЛКИ И МНОГОЕ ДРУГОЕ.


Тонкости дизассемблирования

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