Главная » Просмотр файлов » Керниган и Ритчи - Язык программирования Си

Керниган и Ритчи - Язык программирования Си (793773), страница 7

Файл №793773 Керниган и Ритчи - Язык программирования Си (Керниган и Ритчи - Язык программирования Си) 7 страницаКерниган и Ритчи - Язык программирования Си (793773) страница 72019-04-24СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 7)

В нашем примере main определена как функция, которая не ждетникаких аргументов, что отмечено пустым списком ().Первая программа на Си.#include <stdio.h>Включениебиблиотеке.main()Определение функции с именем main, не получающейникаких аргументов.{Инструкции main заключаются в фигурные скобки.printf ("здравствуй, мир\n");}информацииостандартнойФункция main вызывает библиотечную функциюprintf для печати заданной последовательностисимволов; \n — символ новой строки.Инструкции функции заключаются в фигурные скобки {}. Функция main содержит только одну инструкциюprintf ("здравствуй, мир\п");Функция вызывается по имени, после которого, в скобках, указывается список аргументов. Таким образом,приведенная выше строка — это вызов функции printf с аргументом "здравствуй, мир\n". Функцияprintf — это библиотечная функция, которая в данном случае напечатает последовательность символов,заключенную в двойные кавычки.Последовательность символов в двойных кавычках, такая как "здравствуй, мир\n", называется строкойсимволов, или строковой константой.

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

Нашу первую программу можно написать и так:#include <stdio.h>main(){printf ("здравствуй, ");printf ("миp");printf ("\n");}В результате ее выполнения будет напечатана та же строка, что и раньше.Заметим, что \n обозначает только один символ. Такие особые комбинации символов, начинающиеся собратной наклонной черты, как \n, и называемые эскейп-последовательностями, широко применяются дляобозначения трудно представимых или невидимых символов. Среди прочих в Си имеются символы \t, \b,\", \\, обозначающие соответственно табуляцию, возврат на один символ назад ("забой" последнегосимвола), двойную кавычку, саму наклонную черту.

Полный список таких символов представлен в параграфе2.3.Упражнение 1.1. Выполните программу, печатающую "здравствуй, мир", в вашей системе.Поэкспериментируйте, удаляя некоторые части программы, и посмотрите, какие сообщения об ошибках выполучите.Упражнение 1.2. Выясните, что произойдет, если в строковую константу аргумента printf вставить \с, где с— символ, не входящий в представленный выше список.1.2.

Переменные и арифметические выраженияПриведенная ниже программа выполняет вычисления по формуле °С = (5/9) (Т-32) и печатает таблицусоответствия температур по Фаренгейту температурам по Цельсию:020406080100120140160-17-641526374860711802002202402602803008293104115126137148Как и предыдущая, эта программа состоит из определения одной-единственной функции main. Она длиннеепрограммы, печатающей "здравствуй, мир", но по сути не сложнее.

На ней мы продемонстрируем нескольконовых возможностей, включая комментарий, объявления, переменные, арифметические выражения, циклы иформатный вывод.#include <stdio.h>/* печать таблицы температур по Фаренгейтуи Цельсию для fahr = 0, 20, ..., 300 */main(){int fahr, celsius;int lower, upper, step;lower = 0; /* нижняя граница таблицы температур */upper = 300; /* верхняя граница */step = 20; /* шаг */fahr = lower;while (fahr <= upper) {celsius = 5 * (fahr-32) / 9;printf ("%d\t%d\n", fahr, celsius);fahr = fahr + step;}}Две строки:/* печать таблицы температур по Фаренгейтуи Цельсию для fahr = 0, 20, ..., 300 */являются комментарием, который в данном случае кратко объясняет, что делает программа.

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

В объявленииописываются свойства переменных. Оно состоит из названия типа и списка переменных, например:int fahr, celsius;int lower, upper, step;Тип int означает, что значения перечисленных переменных есть целые, в отличие от него тип floatуказывает на значения с плавающей точкой, т. е.

на числа, которые могут иметь дробную часть. Диапазонызначений обоих типов зависят от используемой машины.Числа типа int бывают как 16-разрядные (лежат в диапазоне от -32768 до 32767), так и 32-разрядные. Числатипа float обычно представляются 32-разрядными словами, имеющими по крайней мере 6 десятичныхзначащих цифр (лежат приблизительно в диапазоне от 10-38 до 1038).Помимо int и float в Си имеется еще несколько базовых типов для данных, это:char— символ — единичный байт;short— короткое целое;long— длинное целое;double— с плавающей точкой с двойной точностью.Размеры объектов указанных типов также зависят от машины.

Из базовых типов можно создавать: массивы,структуры и объединения, указатели на объекты базовых типов и функции, возвращающие значения этихтипов в качестве результата. Обо всем этом мы расскажем позже.Вычисления в программе преобразования температур начинаются с инструкций присваивания:lower = 0;upper = 300;step = 20;fahr = lower;которые устанавливают указанные в них переменные в начальные значения.

Любая инструкция заканчиваетсяточкой с запятой.Все строки таблицы вычисляются одним и тем же способом, поэтому мы воспользуемся циклом,повторяющим это вычисление для каждой строки. Необходимые действия выполнит цикл while:while (fahr <= upper) {Он работает следующим образом. Проверяется условие в скобках. Если оно истинно (значение fahr меньшеили равно значению upper), то выполняется тело цикла (три инструкции, заключенные в фигурные скобки).Затем опять проверяется условие, и если оно истинно, то тело цикла выполняется снова.

Когда условиестановится ложным (fahr превысило upper), цикл завершается, и вычисления продолжаются с инструкции,следующей за циклом. Поскольку никаких инструкций за циклом нет, программа завершает работу.Телом цикла while может быть одна или несколько инструкций, заключенных в фигурные скобки, как впрограмме преобразования температур, или одна-единственная инструкция без скобок, как в циклеwhile (i < j )i = 2 * i;И в том и в другом случае инструкции, находящиеся под управлением while, мы будем записывать сосдвигом, равным одной позиции табуляции, которая в программе указывается четырьмя пробелами;благодаря этому будут ясно видны инструкции, расположенные внутри цикла.

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

Выберите тот, которыйбольше всего вам нравится, и строго ему следуйте.Большая часть вычислений выполняется в теле цикла. Температура по Фаренгейту переводится в температурупо Цельсию и присваивается переменной celsius посредством инструкцииcelsius = 5 * (fahr-32) / 9;Причина, по которой мы сначала умножаем на 5 и затем делим на 9, а не сразу умножаем на 5/9, связана стем, что в Си, как и во многих других языках, деление целых сопровождается отбрасыванием2, т. е.

потерейдробной части. Так как 5 и 9 — целые, отбрасывание в 5/9 дало бы нуль, и на месте температур по Цельсиюбыли бы напечатаны нули.Этот пример прибавил нам еще немного знаний о том, как работает функция printf. Функция printf —это универсальная функция форматного ввода-вывода, которая будет подробно описана в главе 7. Ее первыйаргумент — строка символов, в которой каждый символ % соответствует одному из последующих аргументов(второму, третьему,...), а информация, расположенная за символом %, указывает на вид, в котором выводитсякаждый из этих аргументов.

Например, %d специфицирует выдачу аргумента в виде целого десятичногочисла, и инструкцияprintf ("%d\t%d\n", fahr, celsius);печатает целое fahr , выполняет табуляцию (\t) и печатает целое celsius.В функции рrintf каждому спецификатору первого аргумента (конструкции, начинающейся с %)соответствует второй аргумент, третий аргумент и т. д. Спецификаторы и соответствующие им аргументыдолжны быть согласованы по количеству и типам: в противном случае напечатано будет не то, что нужно.Кстати, printf не является частью языка Си, и вообще в языке нет никаких специальных конструкций,определяющих ввод-вывод.

Характеристики

Тип файла
PDF-файл
Размер
2,25 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7021
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее