246071-Либерти-Освой-самостоятельно-С-за-21-день (852741), страница 5
Текст из файла (страница 5)
Однако будьте внимательны: некоторые компиляторы рассматриваютфайлы с расширением . с как программы на языке С, а файлы с расширением . cpp какпрограммы на языке C++. Так что работу с компилятором всегда лучше начать с чтениядокументации.КомпиляцияисходногокодапрограммыХотяисходныйтекстпрограммы,содержащийсяввашемфайле,небудетпонятенкаждому,ктовнегозаглянет(особеннотем,ктонезнакомсязыкомC++),всежеонпредставленвтакомвиде, который может быть воспринят человеком. Файл с исходным текстом программы — этоещенепрограмма,иегонельзявыполнитьилизапустить.Рекомендуется: Используйте для написания исходного текста программы простойтекстовыйредакторилиредактор,встроенныйвкомпилятор.Сохраняйтесвоифайлысрасширением.сpp,.cpили.c.Обращайтесь к документации компилятора и компоновщика, чтобы быть уверенным вправильномкомпилированииикомпоновкепрограммы.Не рекомендуется: Не используйте текстовый процессор, который сохраняетформатированный текст.
Если вам все-таки приходится обращаться к нему, сохраняйтефайлыкактекстASCII.Чтобы превратить исходный текст в программу, используется компилятор. Каким образомвызвать компилятор и как сообщить ему о местонахождении исходного текста программы,зависитотконкретногокомпилятора,поэтомувновьнужнозаглянутьвдокументацию.После завершения компиляции исходного кода создается объектный файл. Этот файлобычно имеет расширение ,obj. Но это еще не выполняемая программа. Для превращенияобъектногофайлависполняемыйнужнозапуститьпрограммукомпоновки.СозданиеисполняемогофайласпомощьюкомпоновщикаПрограммы на языке C++ обычно создаются путем компоновки одного или несколькихобъектных файлов (файлов .obj) с одной или несколькими библиотеками.
Библиотекойназывается коллекция компонуемых файлов, которые либо поставляются вместе скомпилятором, либо приобретаются отдельно, либо создаются и компилируются самимпрограммистом.ВсекомпиляторыC++поставляютсясбиблиотекойфункций(илипроцедур)иклассов, которые можно включить в программу.
Функция — это программный блок, которыйвыполняет некоторые служебные действия, например складывает два числа или выводитинформациюнаэкран.Классможнорассматриватькакколлекциюданныхисвязанныхснимифункций.Офункцияхиклассахречьвпереди(см.занятия5и6).Итак,чтобысоздатьисполняемыйфайл,нужновыполнитьперечисленныенижедействия.1.Создатьфайлсисходнымтекстомпрограммы,которыйбудетиметьрасширениеcpp.2.Скомпилироватьисходныйкодиполучитьобъектныйфайлсрасширением.obj.3.Скомпоноватьфайл.objснеобходимымибиблиотекамисцельюсозданияисполняемогофайлапрограммы.ЦиклразработкиЕслибыкаждаяпрограммазаработаладолжнымобразомспервойпопытки,можнобылобыговорить о завершении цикла разработки: написание программы, компиляция исходного кода,компоновкапрограммыиеевыполнение.Ксожалению,почтивсепрограммы(тривиальныеинеочень) содержат ошибки.
Одни ошибки обнаружит компилятор, другие — компоновщик, атретьипроявятсятолькопризапускепрограммывработу.Любаяошибкадолжнабытьисправлена,идляэтогонужноотредактироватьисходныйтекстпрограммы, перекомпилировать его и перекомпоновать, а затем снова выполнить. Этот циклразработкипредставленнарис.1.1.ПерваяпрограмманаязыкеC++—HELLO.cppТрадиционно в книгах по программированию первые примеры программ начинаются свывода на зкран слов Hello World или какой-нибудь вариации на тему. В этой книге мыследовалиустоявшимсятрадициям.Введите первую программу с помошью текстового редактора, в точности повторяя всенюансы, Завершив ввод, сохраните файл, скомпилируйте его, скомпонуйте и выполните.ПрограммадолжнавывестинаэкрансловаHelloWorld.Поканестоитзадумыватьсяотом,какработает эта программа.
Вы должны получить удовлетворение просто от того, что прошлиполный цикл разработки. Все аспекты этой программы будут подробно рассмотрены наследующихзанятиях.Примечание:Вприведенномнижелистингеслевасодержатсяномерастрок.Этиномераустановленылишьдляссылкивтекстекнигинасоответствующиестрокипрограммы.Ихненужновводитьвокноредактора,Например,впервойстрокелистинга1.1выдолжныввести:#include<iostream.h>Листинг1.1.ФайлHELLO.cpp—программаприветствия.1:#include<iostream.h>2:3:intmain()4:{5:cout<<"HelloWorld!\n"6:return0;7:}Убедитесь в том, что введенный вами текст программы совпадает с содержимымприведенногоздесьлистинга.Обратитевниманиеназнакипрепинания.Символ<<встроке5является оператором перенаправления потока данных.
Эти символы на большинстве клавиатурвводятся путем нажатия клавиши <Shift> и двойного нажатия клавиши с запятой. Строка 5завершаетсяточкойсзапятой(;).Непропуститеэтотсимволзавершениястрокипрограммногокода!Рис.1.1.ЭтапыразработкипрограммынаязыкеC++Кроме того, убедитесь, что вы корректно работаете со своим компилятором. Большинствокомпиляторов переходит к компоновке автоматически, но все-таки стоит свериться сдокументацией.
Если вы получите какие-нибудь сообщения об ошибках, просмотритевнимательно текст своей программы и найдите отличия от варианта, приведенного в книге.Есливыувидитесообщениеобошибкесоссылкойнастроку1,уведомляющееоневозможностинайти файл iostream.h (cannot find file iostream.h), обратитесь к документации за указаниями обустановке пути для включаемых файлов или переменных окружения. Если вы получитесообщение об ошибке, уведомляющее об отсутствии прототипа для функции main, добавьтестроку int main(); сразу перед строкой 3.
В этом случае вам придется добавлять эту строку доначала функции main в каждой программе, приведенной в этой книге. Большинствокомпиляторов не требует наличия прототипа для функции main, но вполне возможно, чтоименновамдосталсякомпиляториздругойкомпании.Одинизвозможныхвариантовпрограммыбудетвыглядетьследующимобразом:1:#include<iostream.h>2:intmain();//большинствокомпиляторовнетребуетэтойстроки3:intmain()4:{5:cout<<"HelloWorld!\n"6:return0;7:}ПопробуйтевыполнитьпрограммуHELLO.exe.Есливсеправильно,выдолжныувидетьнаэкранеприветствие:Helloworld!ИспользованиестандартныхбиблиотекЧтобыгарантировать,чтовсенашичитатели,работающиесостарымикомпиляторами,небудутиметьпроблемспрограммамиизэтойкниги,мыиспользуемстарыйстильвключенияфайлов:#include<iostream.h>анезаголовкиновыхстандартныхбиблиотек:#include<iostream>Такойвариантвключениядолженработатьнавсехкомпиляторах,темнеменее,онимеетряд недостатков.
Если вы предпочитаете использовать новые стандартные библиотеки,простозаменитевсвоейпрограмместроку1строкой#include<iostream>идобавьтестрокуusingnamespacestd;сразу после списка включаемых файлов Нюансы использования пространства именподробнорассматриваютсяназанятии17.Будете вы использовать стандартные заголовочные файлы или нет, программы,приведенные в этой книге, должны работать без каких бы то ни было модификаций.Принципиальное отличие старых библиотек от новых стандартов заключается виспользовании библиотеки iostream (см. занятие 16). Но даже эти изменения не должныоказать влияние на программы из этой книги ввиду их незначительности. Кроме того, онивыходятзарамкиобсуждениякругатем,предусмотренныхдляначинающих.Примечание: Трудно читать текст программы даже про себя, если не знаешь, какпроизносить специальные символы и ключевые слова. Советую читать первую строку так:"паундинклуд(#—символфунта)ай-оу-стрим-дот(илиточка)-эйч".Астроку5читайтекак"си-аут-'Helloworld!'".Если увидели, то примите наши поздравления! Вы только что ввели, скомпилировали изапустили свою первую программу на языке C++.
Конечно, она не поражает своейграндиозностью, но почти каждый профессиональный программист начинал именно с такойпрограммы.ОсваиваемкомпиляторVisualC++6ВсепрограммывэтойкнигепроверенынакомпилятореVisualC++6.0идолжныпрекраснокомпилироваться, компоноваться и выполняться при использовании любого компилятораMicrosoft Visual C++, по крайней мере, начиная с версии 4.0 и выше, Теоретически, посколькумы имеем дело с ANSI-совместимым текстом программ, все программы в этой книге должныкомпилироватьсялюбымANSI-совместимымкомпиляторомлюбогопроизводителя,В идеале результаты выполнения программ должны совпадать с приведенными в этойкниге,нонапрактикеневсегдатакбывает.Чтобы наконец приступить к делу, ознакомьтесь в этом разделе с тем, как редактировать,компилировать, компоновать и выполнять программу, используя компилятор компанииMicrosoft.Еслиувасдругойкомпилятор,накаких-тоэтапахвозможнынекоторыеотличия.Дажеесли вы используете компилятор Microsoft Visual C++ 6.0, все равно стоит свериться сдокументациейиуточнитьвседетали.ПостроениепроектаприветствияЧтобысоздатьипротестироватьпрограммуприветствия,выполнитеряддействий.1.Запуститекомпилятор.2.ВыберитеизменюFileкомандуNew.3.ВыберитеопциюWin32ConsoleApplication(КонсольноеприложениедляWin32),введитеимяпроекта,напримерExample1,ищелкнитенакнопкеОК.4.ВыберитеизменювариантAnEmptyProject(Пустойпроект)ищелкнитенакнопкеОК.5.ВыберитевменюFileкомандуNew.6.ВыберитеопциюC++SourceFile(файлисточникаC++)ивведитеимяпроектаex1.7.Введитетекстпрограммы,приведенныйвыше.8.ВыберитевменюBuildкомандуBuildExample1.exe.9.Убедитесьвотсутствииошибоккомпиляции.10.Нажмитеклавиши<Ctrl+F5>длявыполненияпрограммы.11.Нажмитеклавишупробеладлязавершенияпрограммы.ОшибкикомпиляцииОшибки в процессе компиляции могут возникать по различным причинам.
Обычно ониявляютсярезультатомнебрежноговводаидругогородаслучайностей.Приличныекомпиляторысообщат не только о том, что именно у вас не в порядке, они также укажут точноеместоположение обнаруженной ошибки. Самые "продвинутые" компиляторы даже предложатвариантисправленияошибки!Вэтомможноубедиться,специальносделавошибкувнашейпрограмме.ДавайтеудалимвпрограммеHELLO.cppзакрывающуюфигурнуюскобкувстроке7.Вашапрограмматеперьбудетвыглядетьтак,какпоказановлистинге1.2.Перекомпилируйте программу, и вы увидите сообщение об ошибке, которое выглядитпримерноследующимобразом:Hello.cpp,line5:Compoundstatementmissingterminating;infunctionmain().1:#include<iostream.h>2:3:intmain()4:{5:cout<<"Helloworld!\n";6:return0;Либовыможетеувидетьтакоесообщениеобошибке:F:\Mcp\Tycpp21d\Testing\List0101.cpp(8):fatalerrorC1004:unexpectedendoffilefoundErrorexecutingcl.exe.Вэтомсообщениисодержитсяинформацияотом,гдегнездитсяпроблема(указываетсяимяфайла,номерстрокиихарактерпроблемы,хотяивнесколькозашифрованномвиде).Обратитевнимание на то, что в сообщении об ошибке указывается строка 5.
Компилятор не уверен ввашем намерении вставить закрывающую фигурную скобку перед или после инструкции,содержащейобъектcout.Иногдавсообщенияхпроблемаобрисовываетсятольковобщихчертах.Еслибыкомпилятормогточноидентифицироватькаждуюошибку,тоонбытогдамогсамееиисправить.РезюмеНадеюсь,прочитавэтуглаву,выполучилихорошеепредставлениеобэволюцииязыкаC++,атакжеотом,длярешениякакихпроблемонпредназначен.Уваснедолжноостатьсясомненийпо поводу того, что изучение C++ — правильный выбор для всякого, кто собираетсяпрограммировать в ближайшие десять лет. В C++ предусмотрены средства объектноориентированного программирования, обеспечивающие эффективность языка системногоуровня,благодарячемуC++заслуженновыбираютвкачествеязыкаразработки.Сегодня вы научились вводить, компилировать, компоновать и выполнять свою первуюпрограмму на C++ и узнали, что представляет собой цикл разработки.