Главная » Просмотр файлов » С.Б. Липпман, Ж. Лажойе - Язык программирования С++ Вводный курс

С.Б. Липпман, Ж. Лажойе - Язык программирования С++ Вводный курс (1114944), страница 7

Файл №1114944 С.Б. Липпман, Ж. Лажойе - Язык программирования С++ Вводный курс (С.Б. Липпман, Ж. Лажойе - Язык программирования С++ Вводный курс) 7 страницаС.Б. Липпман, Ж. Лажойе - Язык программирования С++ Вводный курс (1114944) страница 72019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Реализация* класса Screen представлена в главе 13.*/class Screen {/* Это называется телом класса */public:void home();/* переместить курсор в позицию 0,0 */void refresh ();/* перерисовать экран*/private:/* Классы поддерживают "сокрытие информации"*//* Сокрытие информации ограничивает доступ из*//* программы к внутреннему представлению класса *//* (его данным). Для этого используется метка*//* "private:"*/int height, width;вся последовательность между /* и */ считается комментарием.

Например:}Слишком большое число комментариев, перемежающихся с кодом программы, можетухудшить читаемость текста. Например, объявления переменных width и height вданном тексте окружены комментариями и почти не заметны. Рекомендуется писатьразвернутое объяснение перед блоком текста. Как и любая программная документация,комментарии должны обновляться в процессе модификации кода. Увы, нередкослучается, что они относятся к устаревшей версии.Комментарии в стиле С не могут быть вложенными. Попробуйте откомпилироватьнижеследующую программу в своей системе. Большинство компиляторов посчитают ее#include <iostream>/* комментарии /* */ не могут быть вложенными.* Строку "не вкладываются" компилятор рассматривает,* как часть программы. Это же относится к данной и следующей строкам*/int main() {cout << "Здравствуй, мир\n";ошибочной:}Один из способов решить проблему вложенных комментариев – поставить пробел междузвездочкой и косой чертой:25С++ для начинающих/* * /Последовательность символов */ считается концом комментария только в том случае,если между ними нет пробела.Второй тип комментариев – однострочный.

Он начинается последовательностьюсимволов // и ограничен концом строки. Часть строки вправо от двух косых чертигнорируется компилятором. Вот пример нашего класса Screen с использованием двух/** Первое знакомство с определением класса в C++.* Классы используются как в объектном, так и в* объектно-ориентированном программировании. Реализация* класса Screen представлена в главе 13.*/class Screen {// Это называется телом классаpublic:void home();// переместить курсор в позицию 0,0void refresh (); // перерисовать экранprivate:/* Классы поддерживают "сокрытие информации".*//* Сокрытие информации ограничивает доступ из*//* программы к внутреннему представлению класса *//* (его данным).

Для этого используется метка*//* "private:"*/int height, width;строчных комментариев:}Обычно в программе употребляют сразу оба типа комментариев. Строчные комментарииудобны для кратких пояснений – в одну или полстроки, а комментарии, ограниченные /*и */, лучше подходят для развернутых многострочных пояснений.1.5. Первый взгляд на ввод/выводЧастью стандартной библиотеки С++ является библиотека iostream, котораяреализована как иерархия классов и обеспечивает базовые возможности ввода/вывода.Ввод с терминала, называемый стандартным вводом, “привязан” к предопределенномуобъекту cin.

Вывод на терминал, или стандартный вывод, привязан к объекту cout.Третий предопределенный объект, cerr, представляет собой стандартный вывод дляошибок. Обычно он используется для вывода сообщений об ошибках и предупреждений.Для использования библиотеки ввода/вывода необходимо включить соответствующийзаголовочный файл:#include <iostream>Чтобы значение поступило в стандартный вывод или в стандартный вывод для ошибокиспользуется оператор <<:26С++ для начинающихint v1, v2;// ...cout << "сумма v1 и v2 = ";cout << v1 + v2;cout << "\n";Последовательность "\n" представляет собой символ перехода на новую строку.

Вместо"\n" мы можем использовать предопределенный манипулятор endl.cout << endl;Манипулятор endl не просто выводит данные (символ перехода на новую строку), но ипроизводит сброс буфера вывода. (Предопределенные манипуляторы рассматриваются вглаве 20.)Операторы вывода можно сцеплять. Так, три строки в предыдущем примере заменяютсяодной:cout << "сумма v1 и v2 = " << v1 + v2 << "\n";string file_name;// ...cout << "Введите имя файла: ";Для чтения значения из стандартного ввода применяется оператор ввода (>>):cin >> file_name;string ifile, ofile;Операторы ввода, как и операторы вывода, можно сцеплять:// ...cout << "Введите имя входного и выходного файлов: ";cin >> ifile >> ofile;Каким образом ввести заранее неизвестное число значений? Мы вернемся к этомуstring word;вопросу в конце раздела 2.2, а пока скажем, что последовательность инструкцийwhile ( cin >> word )// ...считывает по одному слову из стандартного ввода до тех пор, пока не считаны все слова.Выражение( cin >> word )27С++ для начинающих28возвращает false, когда достигнут конец файла.

(Подробнее об этом – в главе 20.) Вотпример простой законченной программы, считывающей по одному слову из cin и#include <iostream>#include <string>int main (){string word;while ( cin >> word )cout << "Прочитано слово: " << word << "\n";cout << "Все слова прочитаны!";выводящей их в cout:}Вот первое предложение из произведения Джеймса Джойса “Пробуждение Финнегана”:riverrun, past Eve and Adam'sЕсли запустить приведенную выше программу и набрать с клавиатуры данноепредложение, мы увидим на экране терминала следующее:ПрочитаноПрочитаноПрочитаноПрочитаноПрочитанослово:слово:слово:слово:слово:riverrun,pastEve,andAdam'sВсе слова прочитаны!(В главе 6 мы рассмотрим вопрос о том, как убрать знаки препинания из вводимых слов.)1.5.1.

Файловый ввод/выводБиблиотека iostream поддерживает и файловый ввод/вывод. Все операции, применимыев стандартному вводу и выводу, могут быть также применены к файлам. Чтобыиспользовать файл для ввода или вывода, мы должны включить еще один заголовочныйфайл:#include <fstream>Перед тем как открыть файл для вывода, необходимо объявить объект типа ofstream:ofstream outfile("name-of-file");Проверить, удалось ли нам открыть файл, можно следующим образом:С++ для начинающихif ( ! outfile ) // false, если файл не открытcerr << "Ошибка открытия файла.\n"ifstream infile("name-of-file");Так же открывается файл и для ввода, только он имеет тип ifstream:if ( ! infile ) // false, если файл не открытcerr << "Ошибка открытия файла.\n"Ниже приводится текст простой программы, которая читает файл с именем in_file ивыводит все прочитанные из этого файла слова, разделяя их пробелом, в другой файл,#include <iostream>#include <fstream>#include <string>int main(){ifstream infile("in_file");ofstream outfile("out_file");if ( ! infile ) {cerr << "Ошибка открытия входного файла.\n"return -1;}if ( ! outfile ) {cerr << "Ошибка открытия выходного файла.\n"return -2;}названный out_file.string word;while ( infile >> word )outfile << word << ' ';return 0;}В главе 20 библиотека ввода/вывода будет рассмотрена подробно.

А в следующихразделах мы увидим, как можно создавать новые типы данных, используя механизмклассов и шаблонов.29С++ для начинающих302. Краткий обзор С++Эту главу мы начнем с рассмотрения встроенного в язык С++ типа данных “массив”.Массив – это набор данных одного типа, например массив целых чисел или массивстрок. Мы рассмотрим недостатки, присущие встроенному массиву, и напишем для егопредставления свой класс Array, где попытаемся избавиться от этих недостатков. Затеммы построим целую иерархию подклассов, основываясь на нашем базовом классе Array.В конце концов мы сравним наш класс Array с классом vector из стандартнойбиблиотеки С++, реализующим аналогичную функциональность. В процессе созданияэтих классов мы коснемся таких свойств С++, как шаблоны, пространства имен иобработка ошибок.2.1.

Встроенный тип данных “массив”Как было показано в главе 1, С++ предоставляет встроенную поддержку для основных// объявление целого объекта ival// ival инициализируется значением 1024int ival = 1024;// объявление вещественного объекта двойной точности dval// dval инициализируется значением 3.14159double dval = 3.14159;// объявление вещественного объекта одинарной точности fval// fval инициализируется значением 3.14159типов данных – целых и вещественных чисел, логических значений и символов:float fval = 3.14159;К числовым типам данных могут применяться встроенные арифметические и логическиеint ival2 = ival1 + 4096;// сложениеоперации: объекты числового типа можно складывать, вычитать, умножать, делить и т.д.int ival3 = ival2 - ival;// вычитаниеdval = fval * ival;ival = ival3 / 2;// умножение// делениеbool result = ival2 == ival3;result = ival2 + ival != ival3;result = fval + ival2 < dval;result = ival > ival2;////////сравнениесравнениесравнениесравнениенанананаравенствонеравенствоменьшебольшеВ дополнение к встроенным типам стандартная библиотека С++ предоставляетподдержку для расширенного набора типов, таких, как строка и комплексное число.

(Мыотложим рассмотрение класса vector из стандартной библиотеки до раздела 2.7.)С++ для начинающих31Промежуточное положение между встроенными типами данных и типами данных изстандартной библиотеки занимают составные типы – массивы и указатели. (Указателирассмотрены в разделе 2.2.)Массив – это упорядоченныйпоследовательностьнаборэлементоводноготипа.Например,0 1 1 2 3 5 8 13 21представляет собой первые 9 элементов последовательности Фибоначчи. (Выбравначальные два числа, вычисляем каждый из следующих элементов как сумму двухпредыдущих.)Для того чтобы объявить массив и проинициализировать его данными элементами, мыдолжны написать следующую инструкцию С++:int fibon[9] = { 0, 1, 1, 2, 3, 5, 8, 13, 21 };Здесь fibon – это имя массива. Элементы массива имеют тип int, размер (длина)массива равна 9. Значение первого элемента – 0, последнего – 21. Для работы с массивоммы индексируем (нумеруем) его элементы, а доступ к ним осуществляется с помощьюоперации взятия индекса.

Казалось бы, для обращения к первому элементу массиваестественно написать:int first_elem = fibon[1];Однако это не совсем правильно: в С++ (как и в С) индексация массивов начинается с 0,поэтому элемент с индексом 1 на самом деле является вторым элементом массива, аиндекс первого равен 0.Таким образом, чтобы обратиться к последнему элементуfibon[0]; // первый элементfibon[1]; // второй элемент...fibon[8]; // последний элементмассива, мы должны вычесть единицу из размера массива:fibon[9]; // ...

ошибкаДевять элементов массива fibon имеют индексы от 0 до 8. Употребление вместо этогоиндексов 1-9 является одной из самых распространенных ошибок начинающихпрограммистов на С++.Для перебора элементов массива обычно употребляют инструкцию цикла. Вот примерпрограммы, которая инициализирует массив из десяти элементов числами от 0 до 9 иint main()затем печатает их в обратном порядке:{int ia[10];int index;С++ для начинающихfor (index=0; index<10; ++index)// ia[0] = 0, ia[1] = 1 и т.д.ia[index] = index;for (index=9; index>=0; --index)cout << ia[index] << " ";cout << endl;}Оба цикла выполняются по 10 раз.

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

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

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

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