246071-Либерти-Освой-самостоятельно-С-за-21-день (852741), страница 6
Текст из файла (страница 6)
Вы также получилинебольшое представление об объектно-ориентированном программировании. Нам предстоитещенеразкоснутьсяэтихтемвтечениетрехнедель.ВопросыиответыЧтотакоетекстовыйредактор?Текстовый редактор создает и редактирует файлы, содержащие текст. Для написаниятекстовпрограммнетребуетсяникакихатрибутовформатированияилиспециальныхсимволов.Текстовыефайлыслистингамипрограммнеобладаюттакимисвойствами,какавтоматическийпереноссловлибоначертаниебуквполужирнымшрифтомиликурсивомит.д.Еслимойкомпиляторимеетвстроенныйредактор,тообязанлияиспользоватьего?Почти все компиляторы будут компилировать программы, созданные в любом текстовомредакторе. Однако преимущества использования встроенного текстового редактора состоит втом, что он может быстро переключаться между режимами редактирования и компиляции.Высокоорганизованныекомпиляторывключаютполностьюинтегрированнуюсредуразработки,позволяя программисту легко получать доступ к справочным файлам, редактировать,компилировать и сразу же исправлять ошибки компиляции и компоновки, не выходя из средыразработки.Могу ли я игнорировать предупреждающие сообщения, поступающие откомпилятора?Среди программистов распространено мнение, что на предупреждающие сообщениякомпилятора можно не обращать внимания, но я придерживаюсь другого мнения.
Возьмите заправило реагировать на предупреждения компилятора как на сообщения об ошибках.КомпиляторC++генерируетпредупреждающиесообщениявтехслучаях,когда,поегомнению,вы делаете то, что не входит в ваши намерения. Внимательно отнеситесь к этимпредупреждениямисделайтевсе,чтобыониисчезли.Чтоозначаетвремякомпиляции?Это время работы вашего компилятора, в отличие от времени компоновки (когда работаеткомпоновщик) или времени выполнения программы (когда выполняется программа). Этитермины придумали программисты, чтобы кратко обозначить временные периоды, в течениекоторыхобычноипроявляютсяразличныеошибки.КоллоквиумВэтомразделепредлагаютсявопросыдлясамоконтроляиукрепленияполученныхзнанийи приводится несколько упражнений, которые помогут закрепить ваши практические навыки.Попытайтесьсамостоятельноответитьнавопросытестаивыполнитьзадания,апотомсверьтеполученные результаты с ответами в приложении Г.
Не приступайте к изучению материаласледующей главы, если для вас остались неясными хотя бы некоторые из предложенных нижевопросов.Контрольныевопросы1.Вчемразницамеждуинтерпретаторомикомпилятором?2.Какпроисходиткомпиляцияисходногокодапрограммы?3.Вчемсостоитназначениекомпоновщика?4.Каковаобычнаяпоследовательностьдействийвциклеразработки?Упражнения1.Просмотритеследующуюпрограммуипопытайтесьпонять,чтоонаделает,незапускаяеенавыполнение.1:#include<iostream.h>2:intmain()3:{4:intx=5;5:intу=7;6:cout<<"\n";7:cout<<x+у<<""<<x*у;8:cout<<"\n";9:return0;10:}2. Введите программу из упражнения 1, а затем скомпилируйте и запустите ее. Что онаделает?Такливывсеэтопредполагали?3.
Введите следующую программу и скомпилируйте ее. Какие сообщения об ошибках выполучили?1:include<iostream.h>2:intmain()3:{4:cout<<"HelloWorld\n";5:return0;6:}4.Исправьтеошибкувпрограммеизупражнения3,азатемперекомпилируйте,скомпонуйтеивыполнитеее.Чтоделаетэтапрограмма?День2-й.СоставныечастипрограммынаязыкеC++Программы на языке C++ состоят из объектов, функций, переменных и других элементов.Большаячастьэтойкнигипосвященаподробномуописаниюкаждогоизних,но,длятогочтобыполучить представление о слаженной работе всех этих элементов, нужно рассмотреть какуюнибудьзаконченнуюрабочуюпрограмму.Сегоднявыузнаете:•ИзкакихчастейсостоятпрограммынаязыкеC++•Какэтичастивзаимодействуютдругсдругом•ЧтотакоефункцияикаковоееназначениеПростаяпрограмманаязыкеC++Даже простенькая программа HELLO.CPP, приведенная на занятии 1, состоит изнескольких элементов, которые представляют для нас интерес.
В этом разделе упомянутаяпрограмма рассматривается более подробно. В листинге 2.1 ради удобства обсужденияприведенаоригинальнаяверсияфайлаHELLO.CPP.Листинг 2.1. Демонстрация частей программы C++ на примере программы HELLO.CPP1:#include<iostream.h>2:3:intmain()4:{5:cout<<"HelloWorld!\n";6:return0;7:}Результат:HelloWorld!АНАЛИЗ:Встроке1выполняетсявключениефайлаiostream.hвтекущийфайл.Первымвпрограмместоитсимвол#,которыйслужитсигналомдляпрепроцессора.Прикаждомзапускекомпилятора запускается и препроцессор. Он читает исходный текст программы, находитстроки, которые начинаются с символа фунта (#), и работает с этими строками до того, какначнетсякомпиляцияпрограммы.Подробнееработапрепроцессорарассматриваетсяназанятии21.Include—этокомандапрепроцессору,которуюможнорасшифроватьследующимобразом:"За именем команды следует имя файла.
Нужно найти этот файл и вставить его содержимоепрямовэтоместопрограммы".Угловыескобки,вкоторыезаключеноимяфайла,означают,чтоэтот файл нужно искать во всех папках, отведенных для хранения подобных файлов. Если вашкомпилятор настроен корректно, то угловые скобки укажут препроцессору на то, что файлiostream.h следует искать в папке, содержащей все файлы с расширением .h, предназначенныедля вашего компилятора. Файл iostream.h (input-output-stream — поток ввода-вывода)используется объектом cout, который обслуживает процесс вывода данных на экран.
Послевыполнения строки 1 файл iostream.h будет включен в эту программу, таким образом, как еслибы вы собственноручно ввели сюда его содержимое, Препроцессор запускается передкомпилятором и выполняет все строки, начинающиеся с символа (#), подготавливая кодпрограммыккомпиляции.Основной код программы начинается в строке 3 с вызова функции main().
КаждаяпрограмманаязыкеC++содержитфункциюmain().Функция—этоблокпрограммы,которыйвыполняетодноилинесколькодействий.Обычнофункциивызываютсядругимифункциями,ноmain()—особаяфункция:онавызываетсяавтоматическипризапускепрограммы.Функция main(), подобно всем другим функциям, должна объявить тип возвращаемогозначения.ВпрограммеHELLO.CPPфункцияmain()возвращаетзначениетипаint(отсловаinteger—целый),аэтозначит,чтопоокончанииработыэтафункциявозвратитоперационнойсистемецелочисленное значение. В данном случае будет возвращено целое значение 0, как показано встроке 6. Возвращение значения в операционную систему не столь важно, и в общем-то этозначениесамойсистемойникакнеиспользуется,ностандартязыкаC++требует,чтобыфункцияmain()былаобъявленаповсемправилам(какпоказановэтомлистинге).Примечание: Некоторые компиляторы позволяют объявить функцию main() такимобразом, чтобы она возвращала значение типа void.
Этого больше нельзя делать в C++,поэтомувамследуетизбавлятьсяотстарыхпривычек.Позвольтефункцииmain()возвращатьзначениятипаintирадиэтогопоместитевпоследнейстрокеэтойфункциивыражениеreturn0;.Примечание: В некоторых операционных системах предусмотрена возможностьпроверки значения, возвращаемого программой.
Удобно возвращать значение 0 как флагнормальногозавершенияфункции.Все функции начинаются открывающей фигурной скобкой ({) и оканчиваютсязакрывающейфигурнойскобкой(}).Фигурныескобкифункцииmain()помешенывстроках4и7. Все, что находится между открывающей и закрывающей фигурными скобками, считаетсятеломфункции.Вся функциональность нашей простейшей программы заключена в строке 5. Объект coutиспользуется для вывода сообщений на экран. Об объектах пойдет речь на занятии 6, а объектcoutиблизкийемуобъектcinбудутподробнорассмотреныназанятии16.Этидваобъекта,cinиcout, используются в языке C++ для организации соответственно ввода данных (например, склавиатуры)иихвывода(например,наэкран).Вот как используется объект cout: вводим слово cout, за которым ставим операторперенаправления выходного потока << (далее будем называть его оператором вывода).
Все, чтоследуетзаэтимоператором,будетвыводитьсянаэкран.Есливыхотитевывестинаэкранстрокутекста,незабудьтезаключитьеевдвойныекавычки("),какпоказановстроке5.Строкатекста—этонаборпечатаемыхсимволов.Два заключительных символа текстовой строки (\n) означают, что после слов Hello world!нужно выполнить переход на новую строку. Этот специальный код подробно объясняется прирассмотренииобъектаcoutназанятии17.Функцияmain()оканчиваетсявстроке7.КраткообобъектеcoutНазанятии16выузнаете,какиспользоватьобъектcoutдлявыводаданныхнаэкран.Апока,не вдаваясь в детали использования объекта cout, скажем, что для вывода значения на экраннужно ввести слово cout, а за ним оператор вывода (<<), который состоит из двух символов"меньше"(<).Несмотрянаточтовывводитедвасимвола,компиляторC++воспринимаетихкакодиноператор.Листинг2.2.Использованиеобьектаcout1://Листинг2.2.Использованиеобъектаcout2:#include<iostream.h>3:intmain()4:{5:cout<<"Hellothere.\n";6:cout<<"Hereis5:"<<5<<"\n";7:cout<<"Themanipulatorendlwritesаnewlinetothescreen.";8:cout<<9:endl;10:cout<<"Hereisaverybignumber:\t"<<70000<<endl;11:cout<<"Hereisthesumof8and5:\t"<<8+5<<endl;12:cout<<'"Here'safraction:\t\t"<<(float)5/8<<endl;13:cout<<"Andaveryverybignumber:\t";14:cout<<(double)7000*7000<<15:endl;16:cout<<"Don'tforgettoreplaceJesseLibertywithyourname...\n";17:cout<<"JesseLibertyisaC++programmer!\n";18:return0;19:}За символом вывода укажите выводимые данные.
Использование объекта cout показано влистинге 2.2. Введите текст этой программы в точности так, как написано, за исключениемодного:вместоимениJesseLibertyподставьтесвоиимяифамилию,лучшелатинскимибуквами.Результат:Hellothere.Hereis5:5Themanipulatorendlwritesаnewlinetothescreen.Hereisaverybignumber:70000Hereisthesumof8and5:13Here'safraction:0.625Andaveryverybignumber:4.9e+07Don'tforgettoreplaceJesseLibertywithyourname...JesseLibertyisaC++programmer!Примечание:Некоторые компиляторы требуют, чтобы математические операции вслучаеиспользованияпослеобъектаcoutзаключалисьвкруглыескобки.Вэтомслучаестроку11пришлосьбыизменитьследующимобразом:11:cout<<"Hereisthesumof8and5:\t"<<(8+5)<<endl;В строке 2 по команде #include <iostream.h> препроцессор вставляет содержимое файлаiostream.hвисходныйтекстпрограммы.Включатьфайлiostream.hнеобходимо,есливпрограммеиспользуетсяобъектcoutисвязанныеснимфункции-члены.Встроке5демонстрируетсяпростейшийвариантиспользованияобъектаcout:выводстрокисимволов.