русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Переменные и арифметика


Дата добавления: 2015-01-16; просмотров: 705; Нарушение авторских прав


Следующая программа печатает приведенную ниже таблицутемператур по Фаренгейту и их эквивалентов по стоградуснойшкале Цельсия, используя для перевода формулу C = (5/9)*(F-32). 0 -17.8 20 -6.7 40 4.4 60 15.6 ... ... 260 126.7 280 137.8 300 140.9 Теперь сама программа: /* PRINT FAHRENHEIT-CELSIUS TABLE FOR F = 0, 20, ..., 300 */ MAIN() { INT LOWER, UPPER, STEP; FLOAT FAHR, CELSIUS; LOWER = 0; /* LOWER LIMIT OF TEMPERATURE TABLE */ UPPER =300; /* UPPER LIMIT */ STEP = 20; /* STEP SIZE */ FAHR = LOWER; WHILE (FAHR <= UPPER) { CELSIUS = (5.0/9.0) * (FAHR -32.0); PRINTF("%4.0F %6.1F\N", FAHR, CELSIUS); FAHR = FAHR + STEP; } } Первые две строки /* PRINT FAHRENHEIT-CELSIUS TABLE FOR F = 0, 20, ..., 300 */ являются комментарием, который в данном случае кратко пояс-няет, что делает программа. Любые символы между /* и */ иг-норируются компилятором; можно свободно пользоваться коммен-тариями для облегчения понимания программы. Комментарии мо-гут появляться в любом месте, где возможен пробел или пере-ход на новую строку. В языке "C" все переменные должны быть описаны до их ис-пользования, обычно это делается в начале функции до первоговыполняемого оператора. Если вы забудете вставить описание,то получите диагностическое сообщение от компилятора. Описа-ние состоит из типа и списка переменных, имеющих этот тип,как в INT LOWER, UPPER, STEP; FLOAT FAHR, CELSIUS; Тип INT означает, что все переменные списка целые; типFLOAT предназначен для чисел с плавающей точкой, т.е. длячисел, которые могут иметь дробную часть. Точность как INT ,TAK и FLOAT зависит от конкретной машины, на которой вы ра-ботаете. На PDP-11, например, тип INT соответствует 16-бито-вому числу со знаком, т.е. числу, лежащему между -32768 и+32767. Число типа FLOAT - это 32-битовое число, имеющееоколо семи значащих цифр и лежащее в диапазоне от 10е-38 до10е+38. В главе 2 приводится список размеров для других ма-шин. В языке "C" предусмотрено несколько других основных ти-пов данных, кроме INT и FLOAT:CHAR символ - один байтSHORT короткое целоеLONG длинное целоеDOUBLE плавающее с двойной точностью Размеры этих объектов тоже машинно-независимы; деталиприведены в главе 2. Имеются также массивы, структуры и об-ъединения этих основных типов, указатели на них и функ-ции,которые их возвращают; со всеми ними мы встретимся всвое время. Фактически вычисления в программе перевода температурначинаются с операторов присваиванияLOWER = 0;UPPER =300;STEP = 20;FAHR =LOWER;которые придают переменным их начальные значения. каждый от-дельный оператор заканчивается точкой с запятой. Каждая строка таблицы вычисляется одинаковым образом,так что мы используем цикл, повторяющийся один раз на стро-ку. В этом назначение оператора WHILE: WHILE (FAHR <= UPPER) {....} проверяется условие в круглых скобках. Если оно истинно(FAHR меньше или равно UPPER), то выполняется тело цикла(все операторы, заключенные в фигурные скобки { и } ). Затемвновь проверяется это условие и, если оно истинно, опять вы-полняется тело цикла. Если же условие не выполняется ( FAHRпревосходит UPPER ), цикл заканчивается и происходит переходк выполнению оператора, следующего за оператором цикла. Таккак в настоящей программе нет никаких последующих операто-ров, то выполнение программы завершается. Тело оператора WHILE может состоять из одного или болееоператоров, заключенных в фигурные скобки, как в программеперевода температур, или из одного оператора без скобок,как, например, в WHILE (I < J) I = 2 * I; В обоих случаях операторы, управляемые оператором WHILE,сдвинуты на одну табуляцию, чтобы вы могли с первого взглядавидеть, какие операторы находятся внутри цикла. Такой сдвигподчеркивает логическую структуру программы. Хотя в языке"C" допускается совершенно произвольное расположение опера-торов в строке, подходящий сдвиг и использование пробеловзначительно облегчают чтение программ. Мы рекомендуем писатьтолько один оператор на строке и (обычно) оставлять пробелывокруг операторов. Расположение фигурных скобок менее сущес-твенно; мы выбрали один из нескольких популярных стилей. Вы-берите подходящий для вас стиль и затем используйте его пос-ледовательно. Основная часть работы выполняется в теле цикла. Темпера-тура по Цельсию вычисляется и присваивается переменнойCELAIUS оператором CELSIUS = (5.0/9.0) * (FAHR-32.0); причина использования выражения 5.0/9.0 вместо выглядящегопроще 5/9 заключается в том, что в языке "C", как и во мно-гих других языках, при делении целых происходит усечение,состоящее в отбрасывании дробной части результата. Таким об-разом, результат операции 5/9 равен нулю, и, конечно, в этомслучае все температуры оказались бы равными нулю. Десятичнаяточка в константе указывает, что она имеет тип с плавающейточкой, так что, как мы и хотели, 5.0/9.0 равно 0.5555... . Мы также писали 32.0 вместо 32 , несмотря на то, что таккак переменная FAHR имеет тип FLOAT , целое 32 автоматическибы преобразовалось к типу FLOAT ( в 32.0) перед вычитанием.С точки зрения стиля разумно писать плавающие константы сявной десятичной точкой даже тогда, когда они имеют целыезначения; это подчеркивает их плавающую природу для просмат-ривающего программу и обеспечивает то, что компилятор будетсмотреть на вещи так же, как и Вы. Подробные правила о том, в каком случае целые преобразу-ются к типу с плаваюшей точкой, приведены в главе 2. Сейчасже отметим, что присваивание FAHR = LOWER; проверка WHILE (FAHR <= UPPER) работают, как ожидается, - перед выполнением операций целыепреобразуются в плавающую форму. Этот же пример сообщает чуть больше о том, как работаетPRINTF. Функция PRINTF фактически является универсальнойфункцией форматных преобразований, которая будет полностьюописана в главе 7. Ее первым аргументом является строка сим-волов, которая должна быть напечатана, причем каждый знак %указывает, куда должен подставляться каждый из остальных ар-гументов /второй, третий, .../ и в какой форме он должен пе-чататься. Например, в операторе PRINTF("%4.0F %6.1F\N", FAHR, CELSIUS); спецификация преобразования %4.0F говорит, что число с пла-вающей точкой должно быть напечатано в поле шириной по край-ней мере в четыре символа без цифр после десятичной точки.спецификация %6.1F описывает другое число, которое должнозанимать по крайней мере шесть позиций с одной цифрой последесятичной точки, аналогично спецификациям F6.1 в фортранеили F(6,1) в PL/1. Различные части спецификации могут бытьопущены: спецификация %6F говорит, что число будет ширинойпо крайней мере в шесть символов; спецификация %2 требуетдвух позиций после десятичной точки, но ширина при этом неограничивается; спецификация %F говорит только о том, чтонужно напечатать число с плавающей точкой. Функция PRINTFтакже распознает следующие спецификации: %D - для десятично-го целого, %о - для восьмеричного числа, %х - для шестнадца-тиричного, %с - для символа, %S - для символьной строки и %%- для самого символа %. Каждая конструкция с символом % в первом аргументе функ-ции PRINTF сочетается с соответствующим вторым, третьим, ит.д. Аргументами; они должны согласовываться по числу и ти-пу; в противном случае вы получите бессмысленные результаты. Между прочим, функция PRINTF не является частью языка"C"; в самом языке "C" не определены операции ввода-вывода.Нет ничего таинственного и в функции PRINTF ; это - простополезная функция, являющаяся частью стандартной библиотекиподпрограмм, которая обычно доступна "C"-программам. Чтобысосредоточиться на самом языке, мы не будем подробно оста-навливаться на операциях ввода-вывода до главы 7. В частнос-ти, мы до тех пор отложим форматный ввод. Если вам надоввести числа - прочитайте описание функции SCANF в главе 7,раздел 7.4. Функция SCANF во многом сходна с PRINTF , но онасчитывает входные данные, а не печатает выходные. Упражнение 1-3 ---------------- Преобразуйте программу перевода температур таким обра-зом, чтобы она печатала заголовок к таблице. Упражнение 1-4 ---------------- Напишите программы печати соответствующей таблицы пере-хода от градусов цельсия к градусам фаренгейта.


<== предыдущая лекция | следующая лекция ==>
Hачинаем | Оператор FOR


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.03 сек.