Главная » Просмотр файлов » Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)

Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 163

Файл №1160801 Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)) 163 страницаТ. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801) страница 1632019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

В) А<В? А: В аЬВ теперь можно использовать в любом выражении. Например, выражение аЬя(пе»тчаг. о)г)чаг) после обработки макроопределения преобразуется в выраже- ние пеичаг < о!Очаг ? пе»тчаг: о1т)чаг, которое и будет транслироваться компиля- тором, Директива №т пс1цт)е добавляет в программу текст из соответствующего файла: №тпс1ыт)е < иия файла > №тпс1ыее "имя файла" Первая директива добавляет файл с указанным именем из системной библио- теки, которая в системе Т))м)ТХ обычно находится в каталоге /цвт?1псЫе.

Вторая директива добавляет файл из того же каталога, в котором расположен файл, со- держащий текст исходной программы. Существует соглашение, по которому все определения интерфейсов хранятся в заголовочных файлах . Ь и при необходимо- сти копируются директивой №т пс1рт)е. Директива №т Тт)е№ используется для проверки, было ли ранее определено дан- ное имя. Если было, то в исходный текст программы добавляется последователь- ность операторов №ттсег имя переменной операторы №епш г Аналогично директива №1 ТпОег добавляет операторы, если имя не было ранее определено, Директива №1 Т добавляет текст в зависимости от значения заданного в ней кон- стантного выражения. Директива №рпт)ей делает имя более не определенным: №ипт)е№ нмя перененной.

Директива №е1ве используется в качестве предложения е1ве в директивах №т Т, №т Нег, №1 Тпт)е№ в случае, если не выполнено условие, заданное в них самих. Ввод и вывод В языке С не существует специальных операторов ввода и вывода. Ввод и вывод осуцтествляется с помощью заранее указанного набора функций, которые опреде- лены в заголовочном файле вЕт)1о.Ь. Ввод и вывод описаны в следующем разделе < Стандартные функции».

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

Определения этих функций находятся в файле яЫ)о.)т. Для простых программ ввода и вывода наиболее важными являются детсйа г (для ввода символов) и рггпСт (для простого форматированного вывода). Файлы Нв)л и я1г)оо! заранее определены соответственно в качестве стандартного входного файла (обычно это клавиатура) и стандартного выходного файла (обычно это экран монитора), Эти имена в списке параметров могут быть просто опущены. Например, для считывания символов из файла требуется функция детс1Г)!злая)е), в то время как для считывания с клавиатуры необходимо просто детс)таг без имени файла.

Функция детс11аг определена просто как дегс(з1г)1л). Определена именованная константа ЕОГ, которая используется для обозначения достижения конца файла. (Обычно это значение устанавливается равным -1, чтобы отличить его от всех стальных считываемых символов.) Функция 1лг дегс)таг1) возвращает очередной символ из входного гготока (згг))л). Функция )лт детс1Г1ЕЕ *имя файла) возвращает следуюгций символ из файла с указанным именем. Функция Г!ее * 1орел(с)гаг *г)1езгггпд, с)гаг *и! егуре) открываетфайл Ейезгплд для ввода (если тт1егуре = "г"), для нового вывода (если 111еьуре = "и") или для добавления к существутощему файлу (если гт1ефуре = "а"), Файлы иб)л (стандартный ввод) и зЫои1(стандартный вывод), а также з1г)егг (вывод ошибок) открываются автоматически. Функция рэгспаг(сггаг х) печатает символ х в файл зйовб Функция ротс!с)таг х, Г1ЕЕ *имя файла) выводит сгглгвол х в файл с указанным именем.

Функция Гдетз(с)гаг *я. гпг п, Г!ЕЕ *имя файла> считывает массив символовиз заданного файла, я является указателем на этот массив. Функция считывает символы до тех пор, пока; 1) не встретит лову)о строку; 2) не достигнет конца файла; 3) пе считает л-1 символ. Завершающий лгтП-сггмвол 'тд добавляется к строке, на которуто указывает я. Функция геот1Г1ЕЕ *имя файла) возврагцает истину, если при предыдущем чтении данного файла был достигнут его конец.

Функция тлт рг)пГт(строка, аргумента) печатает указанную строку в стандартный вывод згг)опй Если после вывода строки на терминале следующий вывод должен начаться на новой строке терминала, то строка должна заканчиваться символом конца строки )и. Если в строке содержится яг) или Ф т, то следующий аргумент из списка параметров печатается в целочисленном формате. Если содержится $я, то предполагается, что следующий аргумент — это строка, завер- П.2. С 591 шаюшаяся пц!1-символом (О, которую требуется распечатать. Фс означает вывод первого символа слепу юп(его аргумента, Фà — формат вывода вещественного числа без явной экспоненты, а $е — формат вывода на печать вещественного числа в экспоненциальной форме.

во означает вывод данных в восьмеричном формате. Функция тп( вргтпт((сПаг *в, строка, артуиенти) действует аналогично ргтп(Е но строка пишется в то место памяти, на которое указывает в. Функции распределения памяти. Эти функции определены в заголовочном файле шайос.П. Функция ното ктва11ос(целочиспенное значение> отводитблок памяти,размеркоторого равен указанному целочисленному значению, и возвращает указатель на него, Функция тпс в тагес((инв типа) возвращает размер объекта указанного типа. Часто используе~ся вместе с па11ос, например: ртгчаг - (пентуре*) иа11ос(втгеот(пентуре)).

Функция тпт аггее(сПаг ва11осртг) восстанавливает область памяти (на которую указывает на1)осрсг), ранее выделенную под некоторый объект с помощью функции на11ос. Строковые функции. Функция спаг *в(гсае(спаг *в1, сПаг *в2) добавляет строку в2 в конец строки в1 и возвращает указатель на в1. Функция сПаг *всгпса((сПаг *в1, сцаг *в2, тос и) добавляет не более и символов из строки в2 (или всю строку в2, если опа короче, чем и) в конец строки в1 и возвращает указатель на в1. Функция тп( втгсвтр(сПаг *в1.

сПаг *в2) возвращает значение, меньшее 0, если строка в1 лексикографнчески меньше, чем в2; значение 0, если они равны; и значение большее О, если в1 больше, чем в2, Функция то( вСгпствр(в1. в2, и) похожанав(гснр,заисключеттиемтого,чтосравненнс производится только до и-го символа в2. Функция сПаг *втгсру(сПаг *в1.

сйаг *в2) копирует строку в2 в строку в1. Указатель возвращается на в1. ФункпцясПаг *в(гпсру(сПаг *в1. сПаг в2. тп( и) копирует первыепсимволов 52 в в1. Функция тпт в(г1еп(сПаг *строка сииволов) возвращаетдлинустроки. Функциипреобразования. Футткц~ибэца)е втг(от)(спас +строка сиивопов, сПаг т тр1г) преобразует содержимое строки к т илу тц оа с и устанавливает указатель р(г на символ, следующий за последним преобразованным символом. Если указатель рсг имеет значение пп)1, это значит, что из строки не удалось выделить вещественное число.

Функция)опд в(гто1(сПаг * строка сиивовов. сПаг **ртг, тпт Паве) преобразует содержимое строки в длинные целые числа (1опд), Здесь Паве — это основание системы счисления вводимых данных. Чаще всего используются значения 2, 8, 10. Функции атот (сПаг *строка сии вопов) (преобразование кодов ЛАСИ в значения типа тот), а Со1 (ЛЯС!! — в 1опд) и а(о( (ЛАСИ вЂ” в т)оа() остались от старых версий языка С. 592 Приложение. Обзоры языков П.З. С++ Пример с пояснениями В листинге П.б представлена С++-версия программы из раздела П.2, написанной на языке С, которая считывает массив целых чисел и выводит на печать сумму элементов этого массива.

Возможно, этот пример чуть более сложный, чем необходимо для того, чтобы продемонстрировать использование классов, наследования и потоков ввода-вывода. Листинг П.б. Пример суммирования элементов массива на языке Сч+ 1 У тпс1нбе <вггеаа П> 2 7! ЭГО ПОТОКИ ВВОда-ВИВОда С<к, 5501О.П таКИЕ рабстаЕт. 3 с1а55 ОатаСопчегт ( 4 ргогесгеоп 5 тпс сопчегысмаг сП) (гетнгп сП-'0':)): 6 с)а55 Оата5(оге: ОагаСопчегЦ 7 риб)тс: В тп( тптста1(сПаг а) 9 (ст-0; 10 гебвгп иве = сопчегс(а):); 11 чоэе эаче(сПаг а) 12 (5(оге[ст+т]-сопчегм а):): 13 тпт ветры пг() ( ст-О: гетигп этан.): 14 тпт ргтптча1() ( гетнгп 5(оге[ст<+]:): 15 тпс эна() 16 (1пс агг5на; 17 аГГ5на 0; 10 ТОГ(от=О;Ст<втВЕ:Ст+ч)аттвоа-аГГэаа<5(ОГЕ[от]; 19 гетнгп аггвна.) 20 рыча(е 21 сопэг )пт аахвтае-д, 22 эпг 5)ае: !!Размер массива 23 тпс с1: !!Текущий индекс пассива 24 тп( всоге[аахэтае]:).

25 аюп() 26 ( ю()д; 27 Оата5(оге х. 2В ипт1е((К-х эп151а1(стп.дегО ))!-О) 29 (тот(3=0;д<к;3<<)х.эаче(стп.де(О ); 30 Тот()-х.ветргтпс(),1 0;]--)сон( х,рюптча1(); 31 сон( « ", 5ОИ-" « х.внаО « еп01, 32 нП1)е(стп.десО !-'тп'):)) Строки й Заголовочный файл 5[геап).П' содержит объявления функций стандартной библиотеки ввода-вывода, в том числе функций с)п и сооы Также можно использовать стандартную библиотеку языка С, подключаемую через заголовочный файл 51(((о.П. при использовании компилятора ст ч фирмы м! стовой заголовочный файл называется 1авттева.П.— Примеч. нилч, рад. Строка 2.

В языке С++ комментарии выглядят подобно комментариям в Аоа. Они начинаются с символов // и распространяются до конца строки. Также можно использовать комментарии языка С вида /* ... */. Строки 3-3. Определяется класс Оа~эСоп/егг.. Строка 4. Все объекты, объявляемые в классе Оа~аСопчегг, будут иметь класс доступа ргосесСее (то есть защищенный). Это означает, что функция сопхегт в строке 5 будет видна в любом классе, производном от класса Оа саСопчегт. Сглрока 5. Функция сопчегь преобразует символ, представляющий цифру, в его числовой эквивалент (например, сопчегг( '1') - Е сопчегИ('3') = 3, ...) так же, как и в программе на языке С, приведенной в листинге П.4. Строка 6.

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

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

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