Файл: Информация и формы ее представления Информационные процессы и технологии.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 07.11.2023

Просмотров: 298

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Раздел 1 Основы информатики

1.3. ЭВМ как средство обработки информации

1.1 Информация и формы ее представления

Понятие количества информации

1.2 Информационные процессы и технологии

1.3 ЭВМ как средство обработки информации

Понятие архитектуры ЭВМ

Классификация ЭВМ

Структура и принципы функционирования ЭВМ

Основные характеристики вычислительной техники

Перспективы развития вычислительных средств

2.4 Операционная система MS-DOS

Системный блок

Монитор

Клавиатура

Мышь

Устройства ввода графических данных Для ввода графической информации используют сканеры, графические планшеты (дигитайзеры) и цифровые фотокамеры. Интересно отметить, что с помощью сканеров можно вводить и знаковую информацию. В этом случае исходный материал вводится в графическом виде, после чего обрабатывается специальными программными средствами (программами распознавания образов),Планшетные сканеры. Планшетные сканеры предназначены для ввода графической информации с прозрачного или непрозрачного листового материала (рис. 2.14). Принцип действия этих устройств состоит в том, что луч света, отраженный от поверхности материала (или прошедший сквозь прозрачный материал), фиксируется специальными элементами, называемыми приборами с зарядовой связью (ПЗС). Обычно элементы ПЗС конструктивно оформляют в виде линейки, располагаемой по ширине исходного материала. Перемещение линейки относительно листа бумаги выполняется механическим протягиванием линейки при неподвижной установке листа или протягиванием листа при неподвижной установке линейки. Рисунок 2.14 - Планшетный сканер ScanJet 3200C с аппаратным разрешением 600х1200 dpi фирмы Hewlett PackardОсновными потребительскими параметрами планшетных сканеров являются: разрешающая способность; производительность; динамический диапазон; максимальный размер сканируемого материала. Разрешающая способность планшетного сканера зависит от плотности размещения приборов ПЗС на линейке, а также от точности механического позиционирования линейки при сканировании. Типичный показатель для офисного применения: 600-1200 dpi (dpi – dots per inch – количество точек на дюйм). Для профессионального применения характерны показатели 1200-3000 dpi.Производительность сканера определяется продолжительностью сканирования листа бумаги стандартного формата и зависит как от совершенства механической части устройства, так и от типа интерфейса, использованного для сопряжения с компьютером.Динамический диапазон определяется логарифмом отношения яркости наиболее светлых участков изображения к яркости наиболее темных участков. Типовой показатель для сканеров офисного применения составляет 1,8-2,0, а для сканеров профессионального применения – от 2,5 (для непрозрачных материалов) до 3,5 (для прозрачных материалов).Ручные сканеры. Принцип действия ручных сканеров в основном соответствует планшетным. Разница заключается в том, что протягивание линейки ПЗС в данном случае выполняется вручную. Равномерность и точность сканирования при этом обеспечиваются неудовлетворительно, и разрешающая способность ручного сканера составляет 150-300 dpi.Барабанные сканеры. В сканерах этого типа исходный материал закрепляется на цилиндрической поверхности барабана, вращающегося с высокой скоростью. Устройства этого типа обеспечивают наивысшее разрешение (2400-5000 dpi) благодаря применению не ПЗС, а фотоэлектронных умножителей. Их используют для сканирования исходных изображений, имеющих высокое качество, но недостаточные линейные размеры (фотонегативов, слайдов и т. п.)Сканеры форм. Предназначены для ввода данных со стандартных форм, заполненных механически или <от руки». Необходимость в этом возникает при проведении переписей населения, обработке результатов выборов и анализе анкетных данных. От сканеров форм не требуется высокой точности сканирования, но быстродействие играет повышенную роль и является основным потребительским параметром.Штрих-сканеры. Эта разновидность ручных сканеров предназначена для ввода данных, закодированных в виде штрих-кода. Такие устройства имеют применение в розничной торговой сети.Графические планшеты (дигитайзеры). Эти устройства предназначены для ввода художественной графической информации. Существует несколько различных принципов действия графических планшетов, но в основе всех их лежит фиксация перемещения специального пера относительно планшета. Такие устройства удобны для художников и иллюстраторов, поскольку позволяют им создавать экранные изображения привычными приемами, наработанными для традиционных инструментов (карандаш, перо, кисть). К техническим характеристикам планшетам относятся: разрешающая способность (линий/мм), площадь рабочей области и количество уровней чувствительности к нажатию пера. На рис. 2.15 показан дигитайзер фирмы AIPTEK INK формата А6 с 512 уровнями чувствительности к нажатию пера. Рисунок 2.15 - Дигитайзер HYPER Pen 5000 фирмы AIPTEK INK Цифровые фото- и видеокамеры. Как и сканеры, эти устройства воспринимают графические данные с помощью приборов с зарядовой связью, объединенных в прямоугольную матрицу. Основным параметром цифровых фотоаппаратов является разрешающая способность, которая напрямую связана с количеством ячеек ПЗС в матрице. Наилучшие потребительские модели в настоящее время имеют до 1 млн. ячеек ПЗС и, соответственно, обеспечивают разрешение изображения до 800х1200 точек. У профессиональных моделей эти параметры выше. На рис. 2.16 показан недорогой фотоаппарат фирмы Mustek с оптическим разрешением 640х480 пикселей. Рисунок 2. 16 - Цифровая фотокамера VDC-200 фирмы MustekОсновные параметры видеокамер рассмотрим на примере камеры фирмы Mustek, представленной на рис. 2.17. Разрешение: 356х292 (HxV). Скорость передачи данных: 353х282, 16 бит цвета (сжатие), 20 кадров/с. Скорость передачи данных: 176x144, 16 бит цвета (сжатие), 30 кадров/с. Настройка фокусного расстояния: ручная. Экспозиция и баланс белого: автоматическая. Угол обзора ± 39°. Рисунок 2.17 - Цифровая видеокамера фирмы Mustek Устройства вывода данных В качестве устройств вывода данных, дополнительных к монитору, используют печатающие устройства (принтеры), позволяющие получать копии документов на бумаге или прозрачном носителе. По принципу действия различают матричные, лазерные, светодиодные и струйные принтеры.Матричные принтеры. Это простейшие печатающие устройства (см. рис. 2.18). Данные выводятся на бумагу в виде оттиска, образующегося при ударе цилиндрических стержней («иголок») через красящую ленту. Качество печати матричных принтеров напрямую зависит от количества иголок в печатающей головке. Наибольшее распространение имеют 9-игольчатые и 24-игольчатые матричные принтеры. Последние позволяют получать оттиски документов, не уступающие по качеству документам, исполненным на пишущей машинке. Рисунок 2.18 - Матричный 9-игольчатый принтер формата A3 Epson FX-1180 производительностью 396 cpsПроизводительность работы матричных принтеров оценивают по количеству печатаемых знаков в секунду (cps – characters per second). Обычными режимами работы матричных принтеров являются: draft – режим черновой печати, normal – режим обычной печати и режим NLQ (Near Letter Quality), который обеспечивает качество печати, близкое к качеству пишущей машинки.Лазерные принтеры. Лазерные принтеры обеспечивают высокое качество печати, не уступающее, а во многих случаях и превосходящее полиграфическое. Они отличаются также высокой скоростью печати, которая измеряется в страницах в минуту (ррт – page per minute). Как и в матричных принтерах, итоговое изображение формируется из отдельных точек. Рисунок 2.19 - Лазерный принтер HP LaserJet 4000 производительностью 16 ppmПринцип действия лазерных принтеров следующий: в соответствии с поступающими данными лазерная головка испускает световые импульсы, которые отражаются от зеркала и попадают на поверхность светочувствительного барабана; горизонтальная развертка изображения выполняется вращением зеркала; участки поверхности светочувствительного барабана, получившие световой импульс, приобретают статический заряд; барабан при вращении проходит через контейнер, наполненный красящим составом (тонером), и тонер закрепляется на участках, имеющих статический заряд; при дальнейшем вращении барабана происходит контакт его поверхности с бумажным листом, в результате чего происходит перенос тонера на бумагу; лист бумаги с нанесенным на него тонером протягивается через нагревательный элемент, в результате чего частицы тонера спекаются и закрепляются на бумаге. К основным параметрам лазерных принтеров относятся: разрешающая способность, dpi (dots per inch – точек на дюйм); производительность (страниц в минуту); формат используемой бумаги; объем собственной оперативной памяти. При выборе лазерного принтера необходимо также учитывать параметр стоимости оттиска, то есть стоимость расходных материалов для получения одного печатного листа стандартного формата А4. К расходным материалам относится тонер и барабан, который после печати определенного количества оттисков утрачивает свои свойства. В качестве единицы измерения используют цент на страницу (имеются в виду центы США). В настоящее время теоретический предел по этому показателю составляет порядка 1,0-1,5. На практике лазерные принтеры массового применения обеспечивают значения от 2,0 до 6,0.Основное преимущество лазерных принтеров заключается в возможности получения высококачественных отпечатков. Модели среднего класса обеспечивают разрешение печати до 600 dpi, а профессиональные модели – до 1200 dpi.Светодиодные принтеры. Принцип действия светодиодных принтеров похож на принцип действия лазерных принтеров. Разница заключается в том, что источником света является не лазерная головка, а линейка светодиодов. Поскольку эта линейка расположена по всей ширине печатаемой страницы, отпадает необходимость в механизме формирования горизонтальной развертки и вся конструкция получается проще, надежнее и дешевле. Типичная величина разрешения печати,. для светодиодных принтеров составляет порядка 600 dpi.Струйные принтеры. В струйных печатающих устройствах изображение на бумаге формируется из пятен, образующихся при попадании капель красителя на бумагу (рис. 2.20). Выброс микрокапель красителя происходит под давлением, которое развивается в печатающей головке за счет парообразования. В некоторых моделях капля выбрасывается щелчком в результате пьезоэлектрического эффекта – этот метод позволяет обеспечить более стабильную форму капли, близкую к сферической.Качество печати изображения во многом зависит от формы капли и ее размера, а также от характера впитывания жидкого красителя поверхностью бумаги. В этих условиях особую роль играют вязкостные свойства красителя и свойства бумаги. Рисунок 2.20 - Струйный принтер Stylus Color 640 с разрешением 1440 dpi и скоростью печати: 5 страниц в минуту в монохроме, 3,5 страницы в минуту в цвете К положительным свойствам струйных печатающих устройств следует отнести относительно небольшое количество движущихся механических частей и, соответственно, простоту и надежность механической части устройства и его относительно низкую стоимость. Основным недостатком, по сравнению с лазерными принтерами, является нестабильность получаемого разрешения, что ограничивает возможность их применения в черно-белой полутоновой печати.В то же время, сегодня струйные принтеры нашли очень широкое применение в цветной печати. Благодаря простоте конструкции они намного превосходят цветные лазерные принтеры по показателю качество/цена. При разрешении выше 600 dpi они позволяют получать цветные оттиски, превосходящие по качеству цветные отпечатки, получаемые фотохимическими методами.При выборе струйного принтера следует обязательно иметь виду параметр стоимости печати одного оттиска. При том, что цена струйных печатающих устройств заметно ниже, чем лазерных, стоимость печати одного оттиска на них может быть в несколько раз выше.Устройства хранения данных Необходимость во внешних устройствах хранения данных возникает в двух случаях: когда на вычислительной системе обрабатывается больше данных, чем можно разместить на базовом жестком диске; когда данные имеют повышенную ценность и необходимо выполнять регулярное резервное копирование на внешнее устройство (копирование данных на жестком диске не является резервным и только создает иллюзию безопасности). В настоящее время для внешнего хранения данных используют несколько типов устройств, использующих магнитные или магнитооптические носители.Стримеры. Стримеры – это накопители на магнитной ленте. Их отличает сравнительно низкая цена. К недостаткам стримеров относят малую производительность (она связана прежде всего с тем, что магнитная лента – это устройство последовательного доступа) и недостаточную надежность (кроме электромагнитных наводок, ленты стримеров испытывают повышенные механические нагрузки и могут физически выходить из строя).Емкость магнитных кассет (картриджей) для стримеров составляет до нескольких сот Мбайт. Дальнейшее повышение емкости за счет повышения плотности записи снижает надежность хранения, а повышение емкости за счет увеличения длины ленты сдерживается низким временем доступа к данным.ZIP-накопители.ZIP-накопители выпускаются компанией Iomega, специализирующейся на создании внешних устройств для хранения данных. Устройство работает с дисковыми носителями, по размеру незначительно превышающими стандартные гибкие диски и имеющими емкость 100/250 Мбайт. ZIP-накопители выпускаются во внутреннем и внешнем исполнении. В первом случае их подключают к контроллеру жестких дисков материнской платы, а во втором – к стандартному параллельному порту, что негативно сказывается на скорости обмена данными.Накопители HiFD. Основным недостатком ZIP-накопителей является отсутствие их совместимости со стандартными гибкими дисками 3,5 дюйма. Такой совместимостью обладают устройства HiFD компании Sony. Они позволяют использовать как специальные носители емкостью 200 Мбайт, так и обычные гибкие диски. В настоящее время распространение этих устройств сдерживается повышенной ценой.Накопители JAZ. Этот тип накопителей, как и ZIP-накопители, выпускается компанией Iomega. По своим характеристикам JAZ-носитель приближается к жестким дискам, но в отличие от них является сменным. В зависимости от модели накопителя на одном диске можно разместить 1 или 2 Гбайт данных.Магнитооптические устройства. Эти устройства получили широкое распространение в компьютерных системах высокого уровня благодаря своей универсальности. С их помощью решаются задачи резервного копирования, обмена данными и их накопления. Однако достаточно высокая стоимость приводов и носителей не позволяет отнести их к устройствам массового спроса.В этом секторе параллельно развиваются 5,25- и 3,5-дюймовые накопители, носители для которых отличаются в основном форм-фактором и емкостью. Последнее поколение носителей формата 5,25" достигает емкости 5,2 Гбайт. Стандартная емкость для носителей 3,5" – 640 Мбайт.В формате 3,5" недавно была разработана новая технология GIGAMO, обеспечивающая емкость носителей в 1,3 Гбайт, полностью совместимая сверху вниз с предыдущими стандартами. В перспективе ожидается появление накопителей и дисков форм-фактора 5,25", поддерживающих технологию NFR (Near Field Recording), которая обеспечит емкость дисков до 20 Гбайт, а позднее и до 40 Гбайт.Устройства обмена данными Модем. Устройство, предназначенное для обмена информацией между удаленными компьютерами по каналам связи, принято называть модемом (МОдулятор + ДЕМодулятор) (см. рис. 2.21). При этом под каналом связи понимают физические линии (проводные, оптоволоконные, кабельные, радиочастотные), способ их использования (коммутируемые и выделенные) и способ передачи данных (цифровые или аналоговые сигналы). В зависимости от типа канала связи устройства приема-передачи подразделяют на радиомодемы, кабельные модемы и прочие. Наиболее широкое применение нашли модемы, ориентированные на подключение к коммутируемым телефонным каналам связи.Цифровые данные, поступающие в модем из компьютера, преобразуются в нем путем модуляции (по амплитуде, частоте, фазе) в соответствии с избранным стандартом (протоколом) и направляются в телефонную линию. Модем-приемник, понимающий данный протокол, осуществляет обратное преобразование (демодуляцию) и пересылает восстановленные цифровые данные в свой компьютер. Таким образом обеспечивается удаленная связь между компьютерами и обмен данными между ними.К основным потребительским параметрам модемов относятся: производительность (бит/с); поддерживаемые протоколы связи и коррекции ошибок; шинный интерфейс, если модем внутренний (ISA или РСI). От производительности модема зависит объем данных, передаваемых в единицу времени. От поддерживаемых протоколов зависит эффективность взаимодействия данного модема с сопредельными модемами (вероятность того, что они вступят во взаимодействие друг с другом при оптимальных настройках). От шинного интерфейса в настоящее время пока зависит только простота установки и настройки модема (в дальнейшем при общем совершенствовании каналов связи шинный интерфейс начнет оказывать влияние и на производительность).По способу подключения модемы делятся на два вида: внешние и внутренние. Внешний модем подключается к одному из COM-портов. Внутренний вставляется внутрь системного блока в виде платы расширения. На рис. 2.23 представлены внешний и внутренний факс/модемы Courier V.34 фирмы US Robotics. Рисунок 2.21 - Внешний и внутренний факс/модемы Courier V.34 фирмы US Robotics2.3 Виды программного обеспечения ЭВМНазначением ЭВМ является выполнение программ. Программа содержит команды, определяющие порядок действий компьютера. Совокупность программ для компьютера образует программное обеспечение (ПО). По функциональному признаку различают следующие виды ПО: системное; прикладное; инструментальное. Рисунок 2.22 - Структура программного обеспеченияПод системным (базовым) понимается программное обеспечение, включающее в себя операционные системы, сетевое ПО, сервисные программы, а также средства разработки программ (трансляторы, редакторы связей, отладчики и пр.).Основные функции операционных систем (ОС) заключаются в управлении ресурсами (физическими и логическими) и процессами вычислительных систем. Физическими ресурсами являются: оперативная память, процессор, монитор, печатающее устройство, магнитные и оптические диски. К логическим ресурсам можно отнести программы, файлы, события и т. д. Под процессом понимается некоторая последовательность действий, предписанная соответствующей программой и используемыми ею данными.В настоящее время существует большое количество ОС, разработанных для ЭВМ различных типов. На ЭВМ Единой Системы (ЕС ЭВМ), например, использовались такие операционные системы, как СВМ и ОС ЕС, на малых ЭВМ (СМ-4, СМ-1420 и др.) - ОС РВ и RSX-11. На персональных ЭВМ долгое время эксплуатировалась ОС-MS-DOS. В настоящее время получили распространение системы Windows , Unix, Linix.Сетевое ПО предназначено для управления общими ресурсами в распределенных вычислительных системах: сетевыми накопителями на магнитных дисках, принтерами, сканерами, передаваемыми сообщениями и т. д. К сетевому ПО относят ОС, поддерживающие работу ЭВМ в сетевых конфигурациях (так называемые сетевые ОС), а также отдельные сетевые программы (пакеты), используемые совместно с обычными, не сетевыми ОС.Например, большое распространение получили следующие сетевые ОС: NetWare 4.1 (фирма Novell), Windows NT Server 3.5 (фирма Microsoft) и LAN Server 4.0 Advanced (фирма IBM). Однако в последнее время лидирующие позиции начинает занимать ОС Windows 2000 Server фирмы Microsoft.  Для расширения возможностей операционных систем и предоставления набора дополнительных услуг используются сервисные программы. Их можно разделить на следующие группы: интерфейсные системы; оболочки операционных систем; утилиты. Интерфейсные системы являются естественным продолжением операционной системы и модифицируют как пользовательский, так и программный интерфейсы, а также реализуют дополнительные возможности по управлению ресурсами ЭВМ. В связи с тем, что развитая интерфейсная система может изменить весь пользовательский интерфейс, часто их также называют операционными системами. Это относится, например, к Windows.Оболочки операционных систем, в отличие от интерфейсных систем, модифицируют только пользовательский интерфейс, предоставляя пользователю качественно новый интерфейс по сравнению с реализуемым операционной системой. Такие системы существенно упрощают выполнение часто запрашиваемых функций, например, таких операций с файлами, как копирование, переименование и уничтожение, а также предлагают пользователю ряд дополнительных услуг. В целом, программы-оболочки заметно повышают уровень пользовательского интерфейса, наиболее полно удовлетворяя потребностям пользователя.На ПЭВМ широко используются такие программы-оболочки, как Norton Commander, FAR Manager и Windows Commander.Утилиты предоставляют пользователям средства обслуживания компьютера и его ПО. Они обеспечивают реализацию следующих действий: обслуживание магнитных дисков; обслуживание файлов и каталогов; предоставление информации о ресурсах компьютера; шифрование информации; защита от компьютерных вирусов; архивация файлов и др. Существуют отдельные утилиты, используемые для решения одного из перечисленных действий, и многофункциональные комплекты утилит. В настоящее время для ПЭВМ среди многофункциональных утилит одним из наиболее совершенных является комплект утилит Norton Utilities. Существуют его версии для использования в среде DOS и Windows.Средства разработки программ используются для разработки нового программного обеспечения как системного, так и прикладного.Прикладным называется ПО, предназначенное для решения определенной целевой задачи из проблемной области. Часто такие программы называют приложениями.Спектр проблемных областей в настоящее время весьма широк и включает в себя по крайней мере следующие: промышленное производство, инженерную практику, научные исследования, медицину, управление (менеджмент), делопроизводство, издательскую деятельность, образование и т. д. Из всего разнообразия прикладного ПО выделяют группу наиболее распространенных программ (типовые пакеты и программы), которые можно использовать во многих областях человеческой деятельности.К типовому прикладному ПО относят следующие программы: текстовые процессоры; табличные процессоры; системы иллюстративной и деловой графики (графические процессоры); системы управления базами данных; экспертные системы; программы математических расчетов, моделирования и анализа экспериментальных данных. Предлагаемые на рынке ПО приложения, в общем случае, могут быть выполнены как отдельные программы либо как интегрированные системы. Интегрированными системами обычно являются экспертные системы, программы математических расчетов, моделирования и анализа экспериментальных данных, а также офисные системы. Примером мощной и широко распространенной интегрированной системы является офисная система Microsoft Office.Поскольку разработка ПО любого назначения, как правило, является довольно сложным и трудоемким процессом, дальнейший материал настоящего раздела посвятим общим вопросам разработки программ и инструментальному ПО.Инструментальное ПО Инструментальное программное обеспечение представляет комплексы программ для создания других программ. Программы инструментального программного обеспечения управляются системными программами, поэтому они относятся к более высокому уровню. К инструментальному ПО относятся: компиляторы, редакторы связей, отладчики, интегрированные системы разработки ПО, например, интегрированная система Delphi, Visual Studio и т.п..2.4 Операционная система MS-DOS Операционная система MS-DOS – это однопользовательская, однозадачная, не сетевая 16-разрядная операционная система (ОС), ориентированная на использование на ПЭВМ с микропроцессором Intel 8088(80286).Краткая история появления данной операционной системы такова. В октябре 1980 г. менеджеры фирмы IBM занялись поисками ОС для своего 16-разрядного персонального компьютера (ПК), находящегося в стадии разработки. В тот период на ПЭВМ наиболее широко применялась ОС CP/M (Control Program for MicroComputers) фирмы Digital Research. Не достигнув приемлемых соглашений с Digital Research, фирма IBM обратилась к фирме Microsoft (президент – Билл Гейтс). В тот момент у Microsoft не было соответствующей OС, но ей была известна небольшая фирма Seattle Computer Products, которая имела такую OС. За 50 000$ Билл Гейтс приобрел права на эту OС. В дальнейшем эта OС послужила основой для MS-DOS. В ноябре 1980 г. Microsoft и IBM подписали договор на разработку OС для IBM PC. В феврале 1981 г. появилась первая версия PC/MS-DOS, которая работала на IBM PC, в августе того же года – PC DOS 1.0 (эта версия была утверждена для применения на IBM PC).Операционная система MS-DOS позволяет полностью использовать возможности процессоров Intel 8088 и Intel 80286, работающих в реальном режиме. Основными характеристиками данной ОС являются: максимальный объем адресуемой физической памяти – 640 Кбайт; максимальный объем памяти, доступный из прикладных программ 640 Кбайт. Последние версии MS-DOS (начиная с 5.0) могут использовать адресное пространство между 640 Кбайт и 1 Мбайт для размещения своих составных частей и некоторых драйверов, освобождая тем самым память в адресном пространстве 0-640 Кбайт для использования прикладными программами; представление всех ресурсов персонального компьютера для одной, активной в настоящий момент, программы; развитая файловая система и процессор командного языка; слабая поддержка интерактивных средств взаимодействия с пользователем; занимаемый объем на диске, в зависимости от версии, от 1 Мбайта до 6 Мбайт. (минимум, при котором можно работать – 100 Кбайт). Основные составные части MS-DOS MS-DOS состоит из следующих компонент: блок начальной загрузки (размещается в 1-м секторе 0-дорожки 0-стороны системной дискеты); модуль расширения BIOS (IO.SYS для версии 5.0 и выше); модуль обработки прерываний (MSDOS.SYS для версии 5.0 и выше), командный процессор (COMMAND.COM); внешние команды (программы) MS-DOS; драйверы устройств; файл Config.SYS; файл Autoexec.bat. Ядро MS-DOS включает блок начальной загрузки и файлы IO.SYS, MSDOS.SYS.Блок начальной загрузки размещается  в 1-м секторе 0-дорожки 0-стороны системной дискеты и/или в 1-м секторе HDD-диска, в разделе, отведенном под DOS. Выполняет следующие функции: просматривает корневой каталог системного диска и проверяет, являются ли первые два файла в каталоге – файлами IO.SYS и MSDOS.SYS. Если ДА – загружает их в ОЗУ и передает управление MS-DOS, если НЕТ – выдает сообщение на экране и ожидает нажатия какой-либо клавиши пользователем: Non-System disk or disk errorReplace and press any key when ready (Не системный диск или ошибка дискаЗамените и нажмите какую-либо клавишу, когда будет готово)Именно поэтому , при создании системной дискеты необходимо переносить на неё файлы IO.SYS и MSDOS.SYS с помощью специальной программы SYS.COM.Модуль расширения BIOS IO.SYSЭто резидентный модуль (всегда находится в ОЗУ после загрузки, пока включен ПК). Взаимодействует с BIOS. Расширяет возможности BIOS или изменяет ее свойства (там, где необходимо) с помощью дополнительных драйверов.Модуль обработки прерываний MSDOS.SYSЭто резидентный модуль. Обеспечивает интерфейс высокого уровня для прикладных программ, содержит программные средства для управления файлами, устройствами ввода-вывода, обработки исключительных ситуаций (ошибок) и др. Прикладная программа вызывает функции этого модуля через механизм программных прерываний, передавая (принимая) информацию к (от) MS-DOS через регистры CPU или (и) области памяти ОЗУ. MSDOS.SYS транслирует (переводит) запрос прикладной программы в один или несколько вызовов IO.SYS + BIOS.Командный процессор COMMAND.COMОтдельный модуль MS-DOS. Этот модуль может быть заменен на другой, более удобный. Предназначен для приема команд с клавиатуры или из *.bat - файлов и их выполнения; выполнения команд файла Autoexec.bat при загрузке MS-DOS; загрузки в ОЗУ и запуск на выполнение прикладных программ в среде MS-DOS.Командный процессор состоит из 3-х частей : резидентной (размещается в ОЗУ сразу после MSDOS.SYS, включает процедуры обслуживания некоторых прерываний, процедуры обработки стандартных ошибок MS-DOS, процедуру загрузки транзитной части командного процессора); инициализирующей (в ОЗУ следует сразу за резидентной частью; во время загрузки OС ей передается управление; она выполняет файл Autoexec.bat и некоторые другие действия; эта часть командного процессора стирается из ОЗУ первой же загруженной программой); транзитной (загружается в старшие адреса ОЗУ; обрабатывает все внутренние команды, команды с клавиатуры и из *.bat-файлов; выдает системную подсказку MS-DOS; загружает в ОЗУ программы и передает им управление). Внешние команды (программы)Дополнительные программы, входящие в MS-DOS, выполняющие определенные функции.Драйверы устройствСпециальные резидентные программы, которые управляют внешними устройствами. Драйверы загружаются в ОЗУ в том порядке, как они указаны в файле CONFIG.SYS.Файл CONFIG.SYSСпециальный текстовый файл, где содержится информация о подгружаемых дополнительных драйверах и некоторая другая информация, касающаяся непосредственно MS-DOS и выполняемых в ее среде прикладных программ. MS-DOS выполняет этот файл автоматически, сразу после загрузки COMMAND.COM.Файл AUTOEXEC.BATСпециальный текстовый файл, в котором содержится дополнительная настроечная информация. MS-DOS выполняет этот файл автоматически, сразу после выполнения файла CONFIG.SYSНачальная загрузка MS-DOS 1. При включении ПК вначале выполняются программы BIOS.2. После тестирования оборудования и выполнения других действий процедура POST (из модуля BIOS) осуществляет поиск и загрузку блока начальной загрузки по следующему алгоритму: вначале производится поиск на устройстве A:. Если блок не найден, то поиск выполняется на устройстве C:. Если снова поиск не завершился успешно, то вызывается встроенный в ПЗУ BASIC или производятся  другие действия, записанные в ПЗУ.3. Блок начальной загрузки производит поиск в корневом каталоге  системной дискеты (диска) файлов IO.SYS и MSDOS.SYS (эти файлы должны быть первыми и именно в таком порядке).4. Блок начальной загрузки производит загрузку файла IO.SYS и передает ему управление.5. Файл IO.SYS выполняет следующие действия: загружает и настраивает MSDOS.SYS; определяет состояние подключенных устройств; инициализирует подключенные устройства; загружает необходимые драйверы устройств; передает управление файлу MSDOS.SYS. 6. Файл MSDOS.SYS выполняет следующие действия: инициализирует (настраивает) свои внутренние рабочие таблицы; загружает драйверы, указанные в файле CONFIG.SYS; загружает командный процессор (файл COMMAND.COM). 7. Командный процессор выполняет команды, указанные в файле Autoexec.bat.8. Командный процессор выдает на экран монитора системную подсказку  MS-DOS и ожидает ввода команд пользователя.Файловая система MS-DOS Файл  (по-английски file – папка, скоросшиватель) – это поименованная область памяти на каком-либо физическом носителе, предназначенная для хранения информации.Совокупность средств MS-DOS, обеспечивающих доступ к информации на внешних носителях, называется системой управления файлами, или файловой системой.Одно из понятий файловой системы MS-DOS – логический диск. В некотором приближении можно считать, что с точки зрения MS-DOS каждый логический диск – это отдельный магнитный диск. Каждый логический диск имеет своеуникальное имя.В качестве имени логического диска используются буквы английского алфавита от A до Z (включительно). Таким образом, количество логических дисков, может быть не более 26.Буквы A и B – отведены строго под имеющиеся в IBM PC дисководы.Начиная с буквы C именуются логические диски (разделы) жесткого диска (рис. 2.23).В случае, если данный IBM PC имеет только один FDD, буква B пропускается (см. рис. 2.24).Как правило, только логические диски A и C могут быть системными.

Файловая структура логического диска

Раздел 3 Основные принципы программирования

3.1. Этапы подготовки и решения задач на ЭВМ

3.2. Алгоритмы и способы их описания

3.3. Компиляция и интерпретация программ

3.4. Стили программирования

3.1 Этапы подготовки и решения задач на ЭВМ

3.2 Алгоритмы и способы их описания

3.3. Компиляция и интерпретация программ

3.4. Стили программирования

Раздал 6 Структуры данных

Раздел 7 Файлы данных

Раздел 8 Подпрограммы

Раздел 9 Объектно-ориентированное программирование

9.1. Описание класса

9.2. Описание объектов

9.4. Наследование

9.5. Иерархия классов

9.6. Виртуальные методы. Полиморфизм.

9.7. Контейнерные классы

Методы класса При вызове методов необходимо связать метод с объектом этого класса [2]. Поэтому имена объектов ( p ) связаны с именем функции (метода) операцией точка (.):p.InitPoint(10,10);p.relmove(5,10); Замечание: Это напоминает доступ к полям структуры.Вызов методов InitPoint() и relmove() приводило к изменению значений полей x и y. В следующем примере задание значений полей в методе Vvod() будет осуществляться с клавиатуры: class TPoint { private: int x,y;public: void InitPoint ( int newx, int newy) { x = newx;y = newy ;} void Vvod(){std::cout<<"Vvedi X Y:";std::cin>> x >> y;}. . . };Вставим вызов этого метода в главную программу: int main(){ TPoint p;// описание объектаp.Vvod();std::cout<<"x="<< p.getx()<<",\ty="<< p.gety()<<"\n"; return 0;} Результаты работы программы приведены на рисунке 9.2. Рисунок 9.2 – Результат использования метода Vvod()Конструкторы'>КонструкторыB отличии от предыдущего примера удобнее инициализировать поля объекта автоматически в момент его создания, а не явно, вызовом соответствующего метода. Такой способ реализуется с помощью особого метода класса, называемого конструктором.Конструктор - это метод, выполняющийся автоматически в момент создания объекта.Конструктор отличается от других методов: Имя конструктора совпадает с именем класса; У конструктора не существует возвращаемого значения. Заменим метод InitPoint() на конструктор:class TPoint { private: int x,y;public:TPoint(int newx, int newy) // конструктор {x=newx;y=newy; } void relmove ( int dx, int dy ) {x+= dx; y += dy ; } int getx ( void ) { return x ; }int gety ( void ) { return y ; } };int main(int argc, char *argv[]){ TPoint p(10,10); //инициализация объекта р std::cout<<"x="<< p.getx()<<",\ty="<< p.gety()<<"\n"; . . .}В качестве второго примера создадим класс Counter, объекты которого могут хранить количественную меру какой-либо изменяющейся величины. При наступлении некоторого события счетчик увеличивается на единицу. Обращение к счетчику происходит, как правило, для того, чтобы узнать текущее значение той величины, для изменения которой он предназначен.#include "stdafx.h"#include "iostream"class Counter{ private: int count;public: Counter ( ):count(0){ } //конструктор void inc_count ( )//метод увеличения счетчика на 1{count++; }int get_count( )//метод возвращает значение счетчика{ return count; }};int _tmain(int argc, _TCHAR* argv[]){ Counter c1, c2;//создание объектов c1 и c2std::cout<std::cout<c1.inc_count(); c1.inc_count(); //увеличение с1 на 2c2.inc_count(); //увеличение с2 на 1std::cout<std::cout<return 0;}Результаты программы приведены на рисунке 9.3. Рисунок 9.3. – Результаты работы программыОдной из наиболее часто возлагаемых на конструктор задач является инициализация полей объекта. Инициализация полей обычно реализуется с помощью списка инициализации, который располагается между заголовком и телом функции-конструктора. После заголовка ставится двоеточие. Инициализирующие значения помещены в круглые скобки после имени поля.Counter ( ):count(0) {/* тело функции*/ } Если инициализируются несколько полей, то значения разделяются запятыми.ДеструкторыКроме специального метода конструктор, который вызывается при создании объекта, существует другой особый метод, автоматически вызываемый при уничтожении объекта, называемый деструктором [2].Деструктор имеет имя, совпадающее с именем конструктора, перед которым стоит тильда .class Prim{ private: int dat;public:Prim(): dat(0){ }Prim(){ }}; Наиболее распространённое применение деструкторов – освобождение памяти, выделенной конструктором при создании объекта.Определение методов может быть реализовано как внутри самого класса, так и вне класса. Во втором случае внутри класса содержится лишь прототип функции, а сама функция определяется позже. Тогда перед именем функции указывается имя класса и символ ::Вернемся к примеру класса TPoint. Рассмотрим в этом примере реализацию метода relmove()вне класса и добавим деструктор для класса TPoint.class TPoint { private: int x,y;public:TPoint(int newx, int newy) {x=newx;y=newy; } void relmove ( int dx, int dy ); int getx ( void ){ return x ; } int gety ( void ) { return y ; } Tpoint( ){ }};void TPoint::relmove(int dx, int dy){x+= dx; y += dy ; } ЗАМЕЧАНИЯ:1)Класс может иметь несколько конструкторов с разными параметрами для разных видов инициализации.2)Конструктор, вызываемый без параметров, называется конструктором по умолчанию.3)Деструктор вызывается автоматически, когда объект выходит из области видимости:• для локальных объектов — при выходе из блока, в котором они объявлены;• для глобальных — как часть процедуры выхода из main( );• для объектов, заданных через указатели деструктор вызывается неявно при использовании операции delete. Деструктор:• не имеет аргументов и возвращаемого значения;• не может быть объявлен, как const или static;• не наследуется;• может быть виртуальным.Вернемся ко второму примеру, где был создан класс Counter. При решении разных задач может возникнуть необходимость инициализации счетчика разными значениями, а не только нулем. Для этого создадим еще один конструктор:class Counter{ private: int count;public:Counter ( ):count(0)//конструктор, инициализирующий нулем { }Counter (int c): count(c)//конструктор задает любое нач. значение{ } void inc_count ( ) {count++; } int get_count( ){ return count; }

Наследование


Логические программы, в принципе, имеют небольшое быстродействие, так как вычисления осуществляются методом проб и ошибок, поиском с возвратами к предыдущим шагам.

Объектно-ориентированное программирование


Прототипом объектно-ориентированного программирования послужил ряд средств, входящих в состав языка SIMULA-67. Но в самостоятельный стиль оно оформилось с появлением языка SMALLTALK, разработанного А. Кеем в 1972 году и первоначально предназначенного для реализации функций машинной графики.

В основе объектно-ориентированного стиля программирования лежит понятие объекта, а суть его выражается формулой: «объект = данные + процедуры». Каждый объект интегрирует в себе некоторую структуру данных и доступные только ему процедуры обработки этих данных, называемые методами. Объединение данных и процедур в одном объекте называется инкапсуляциейи присуще объектно-ориентированному программированию.

Для описания объектов служат классы. Класс определяет свойства и методы объекта, принадлежащего этому классу. Соответственно, любой объект можно определить как экземпляр класса.

Программирование рассматриваемого стиля заключается в выборе имеющихся или создании новых объектов и организации взаимодействия между ними. При создании новых объектов свойства объектов могут добавляться или наследоватьсяот объектов-предков. В процессе работы с объектами допускается полиморфизмвозможность использования методов с одинаковыми именами для обработки данных разных типов.

К наиболее современным объектно-ориентированным языкам программирования относятся C++ и Java.

Язык C++ был разработан в начале 80-х годов Б. Страуструпом, сотрудником лаборатории Bell корпорации AT&T. Им была создана компактная компилирующая система, в которой за основу был взят язык Си, дополненный элементами языков BCPL, Simula-67 и Algol-68. К июлю 1983 года появился язык Си с классами, а чуть позднее — C++. К 1990 году была выпущена третья версия языка C++, принятая комитетом ANSI в качестве исходного материала для его стандартизации.

В 1990 году сотрудник корпорации Sun Д. Гослинг на основе расширения C++ разработал объектно-ориентированный язык Oak, основным достоинством которого было обеспечение сетевого взаимодействия различных по типу устройств. Новая интегрируемая в Internet версия языка, получила название Java. Первый браузер, который поддерживал язык Java, разработан программистом корпорации Sun П. Нафтоном и получил название HotJava. С января 1995 года Java получает распространение в Internet.



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

Принципиальной разницей между Java и C++ является то, что первый из них является интерпретируемым, а второй – компилируемым. Синтаксис языков практически полностью совпадает.

С точки зрения возможностей собственно объектно-ориентированных средств язык Java обладает рядом преимуществ перед языком C++. Так, язык Java демонстрирует более гибкую и мощную систему инкапсуляции информации. Механизм наследования, реализованный в Java, обязывает к более строгому подходу к программированию, что улучшает надежность и понимаемость кода. Язык же C++ обладает сложной, неадекватной и трудной для понимания системой наследования. Возможности динамического связывания объектов одинаково хорошо представлены в обоих языках, однако, синтаксическая избыточность C++ заставляет и здесь отдать предпочтение языку Java.

В силу своей конструктивности идеи объектно-ориентированного программирования используются во многих универсальных процедурных языках. Так, например, в состав интегрированной системы программирования на языке PASCAL (корпорации Borland International) версии 5.5 входит специальная библиотека объектно-ориентированного программирования Turbo Vision.

В последнее время многие программы, в особенности объектно-ориентированные, реализуются как системы визуального программирования. Отличительной особенностью таких систем является мощная среда разработки программ из готовых «строительных блоков», позволяющая создать интерфейсную часть программного продукта в диалоговом режиме, практически без кодирования программных операций. К числу объектно-ориентированных систем визуального программирования относятся; Visual Basic, Delphi, C++Builder и Visual C++.

Контрольные вопросы

  1. Этапы подготовки и решения задач на ЭВМ

  2. Свойства алгоритма

  3. Способы представления алгоритма

  4. Базовые структуры

  5. Что такое компилятор?

  6. Что такое интерпретатор?

  7. Какие языки высокого уровня вы знаете?

Раздел 4 Основы программирования на языке C++

4.1 Пример готовой программы


Продемонстрируем пример простейшей программы на языке Cи, которая запрашивает у пользователя два целочисленных значения переменных a и b, анализирует их и выводит наибольшее число.

01 #include

02 #include

03 int main(void)

04 {

05 int a,b,max;

06 cout << "a="; //приглашение ввести значение a

07 cin >> a; //ввод значения переменной а

08 cout << "b="; //приглашение ввести значение b

09 cin >> b; //ввод значения переменной b

10 if(a>b) max=a; //если a>b то max=a

11 else max=b; //иначе max=b

12 cout << "max="<
13 getch(); //останов до нажатия любой клавиши

14 return 0; //выход из функции main

15 }

Номера, которые проставлены в начале каждой строки программы, не являются принадлежностью программы. Они введены только для упрощения ссылок на описание действия тех или иных строк. Строки 01 и 02 подключают (include – включить) к тексту программы так называемые заголовочные (h от header – заголовок) файлы системы. В этих файлах описаны системные функции и их аргументы. Используя эти описания, компилятор проверяет правильность вызова системных функций. В нашем случае программа использует системные функции ввода (cin >>) и вывода (cout <<), описания которых находятся в заголовочном файле iostream.h, а также функцию ожидания нажатия какой-либо клавиши (getch), описание которой находится в заголовочном файле conio.h. Названия заголовочных файлов зачастую образовываются от каких-либо аббревиатур английских слов, их полезно научиться понимать, а не запоминать. В нашем примере: io – input/output (ввод/вывод), stream (поток), con (console – пульт оператора, т.е. клавиатура и дисплей).

Строка 03 содержит заголовок функции main. Функция с таким названием обязана присутствовать в каждой программе на языке C, C++. Именно с нее начинается выполнение программы, она – главная (именно так переводится служебное слово main). Предшествующее ей служебное слово int (от integer – целый) сообщает, что результатом работы функции main должно быть целое число. По возвращаемому функцией значению операционная система, запустившая программу main, может "сообразить", правильно или неправильно завершилась работа программы. По общепринятому соглашению нулевое значение, возвращаемое функцией main, свидетельствует о нормальном завершении работы программы. Служебное слово void (дословно – пустота), указанное в круглых скобках, сообщает, что у функции main аргументы отсутствуют.

Текст программы (тело функции) заключается в фигурные скобки (строки 04 и 15). В большинстве последующих строк присутствует пояснительный текст на русском языке, следующий после пары символов // – это комментарий, на содержание которого система не обращает внимания.

В строке 05 объявлены три переменные с именами a, b и max, которые могут принимать только целочисленные значения (тип – int).

Строка 06 является первой строкой программы, которая производит некоторое действие – она выводит на дисплей сообщение, состоящее из двух символов (a=). Текст сообщения заключен в двойные кавычки. Строка 07 организует приостанов работы программы до тех пор, пока пользователь не наберет на клавиатуре какое-либо число и нажмет клавишу Enter. Поступившее значение будет хорошо воспринято, если оно целое, и направлено в переменную a. Точно таким же образом в строках 08 и 09 будет организован ввод значения числовой переменной b.

В строке 10 сравниваются (if – если) текущие значения переменных a и b. Если проверяемое условие выполнено, т.е. значение переменной a больше, то оно присваивается переменной max – выполняется действие, записанное после проверки условия. В противном случае (else – иначе) в переменную max заносится значение b.

Строка 12 выводит на дисплей два сообщения – текстовое (max=) и числовое (значение переменной max).

Обращение к функции getch (строка 13) приводит к задержке на экране сообщения программы до тех пор, пока пользователь не нажмет какую-либо клавишу (getch – от get character, дай символ).

Последняя выполняемая строка с номером 14 возвращает управление операционной системе (return – вернуться) и выдает в качестве значения функции нулевой результат.

Обратите внимание на следующие детали. Если программа обращается к каким-либо системным функциям, то в первых ее строках обязательно должно стоять указание о подключении соответствующих заголовочных файлов. Программа может содержать более чем одну функцию, но среди них обязательно должна присутствовать функция с именем main. Каждая строка программы, содержащая какое-либо объявление или выполняемое действие, оканчивается точкой с запятой. Тело функции обязательно заключается в фигурные скобки

4.2 Алфавит языка

При написании программ на алгоритмическом языке можно пользоваться лишь символами, предусмотренными алфавитом этого языка.

Алфавит языка Си включает в себя следующие символы.

Строчные и прописные буквы латинского алфавита

|а|b|с| ... |x|y|z|A|B|C| ... |X|Y|Z|

Арабские цифры

|0|1 |2| ...|9|

Специальные символы

|+|-|*|/| = |>|>=|< |<=|==|!|.|,|:|;|’(|)|[|]|{| |}|&|@|$|#|

В алфавит языка Си также включается набор зарезервированных слов, имеющих строго определенное назначение. Например, слова IF, ELSE используются в услов­ном операторе, слово DEFAULT обозначает выбор по умолчанию. Назначение отдельных зарезервированных слов будет поясняться в процессе изучения языка.

4.3 Константы и переменные

Константы

Константами являются величины, которые не меняют своего значения при выполнении программы. В качестве кон­стант на языке Си используются целые и веществен­ные числа, логические константы, символы и строки.

Целые числа записываются со знаком или без него по обычным арифметическим правилам.

Например: 15 +1000 -47 02

Вещественные числа могут записываться либо в форме де­сятичного числа, либо с указанием порядка.

В записи десятичного числа целая часть отделяется от дробной части точкой.

Например: 2.5 -14.0 +0.33 0.0

Числа с указанием порядка имеют вид: а.10р , где a являетсямантиссой; р - десятичным порядком.

На языке Си числа с порядком записываются с использованием буквы Е, за которой следует порядок. Буква Е читается как «умножить на 10 в степени».

Мантисса может быть целым или десятичным числом. Порядок всегда является целым числом. Следует помнить, что в написании вещественного числа с порядком должны обязательно присутствовать мантисса и порядок.

Примеры записи чисел с порядком

Математическая запись

Запись на языкеСи


3,14.105

3.14Е5

-17.10-2

-17Е-2

25,625

2.5625Е1

10-6

1Е-6

0,00048

4.8Е-4

Логические константы могут принимать одно из двух логических значений, записанных либо словом TRUE (истина), либо словом FALSE (ложь).

Символьная константа - это любой символ ПК, заключен­ный в апострофы, например: ‘7’ или ‘S’ или ‘ *’.

Строковая константа (строка) - любая последовательность символов из набора символов ПК, заключенная в кавычки, например:

“Х=

“Максимальное значение =”

Строки используются при выводе текстов и комментариев.

Переменные

Для обработки данных их необходимо хранить в памяти. При этом к этим данным надо как-то обращаться. Обычно люди обращаются друг к другу по имени, такой же способ используется в программировании: каждой ячейке памяти (или группе ячеек) дается свое собственное имя. Используя это имя можно прочитать информацию из ячейки и записать туда новую информацию.

Имя представляет собой последовательность латинских букв и цифр, которая начинается с буквы. В имени мо­жет присутствовать символ подчеркивания. Длина имени состав­ляет от 1 до 63 символов. Следует помнить, что пробелы не должны входить в написание имени.

Примеры записи имен переменных

Математическая запись

x

ap

y1

α



d-21

Запись на языке Си

x

ap

y1

alpha

S

d_27

Переменная - это ячейка в памяти компьютера, которая имеет имя и хранит некоторое значение. Значение переменной может меняться во время выполнения программы. При записи в ячейку нового значения старое стирается.

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

- целые переменные (тип int - от английского integer - целый) занимают 2 байта в памяти;

- вещественные переменные, которые могут иметь дробную часть (тип float – от английского floating point - плавающая точка), занимают 4 байта в памяти;

-символы (тип char - от английского character - символ) занимают 1 байт в памяти.

Для использования все переменные необходимо объявлять - то есть сказать компьютеру, чтобы он выделил на них ячейку памяти нужного размера и присвоил ей нужное имя. Переменные обычно объявляются в начале программы. Для объявления надо написать название типа переменных (int, float или char), а затем через запятую имена всех объявляемых переменных. При желании можно сразу записать в новую ячейку нужное число, как показано в примерах ниже. Если переменной не присваивается никакого значения, то в ней находится "мусор", то есть то, что было там раньше.

Примеры.

int a; // выделить память под целую переменную a

float b, c; // две вещественных переменных b и c

int Tu104, Il86=23, Yak42; // три целых переменных,

//причем в Il86 сразу записывается число 23.

float x=4.56, y, z; // три вещественных переменных,

// причем в x сразу записывается число 4.56.

char c, c2='A', m; // три символьных переменных,

//причем в c2 сразу записывается символ 'A'.

Переменные, подобно константам, могут быть разных типов. Типы задаются стандартными именами:

integer - целый тип;

long – длинный целый тип;

short – целый тип с меньшим диапазоном;

float - вещественный тип;

double - вещественный тип с двойной точностью;

boolean - логический тип;

char - символьный тип;
По описанию переменной в памяти компьютера резервируется ячейка для хранения значения переменной. В зависимости от объявленного типа переменной ячейка может иметь разную внутреннюю структуру, т.е. содержать различное число байт.

Целый гип. Длина ячейки составляет 2 байта, что соответствует диапазону от -32768 до +32767 целых чисел.

Вещественный тип. Длина ячейки - 6 байт. Вещественные числа хранятся в памяти с указанием порядка. Диапазон значений порядка составляет от 1Е-39 до 1Е+38. Мантисса занимает до 11 значащих десятичных цифр.

4.4 Арифметические выражения

Арифметические выражения строятся из операндов, арифметических операций и круглых скобок.

Операндами могут быть константы, переменные и функции.

В бесскобочных арифметических выражениях операции выполняются слева направо в соответствии с их приоритетом.

1. * (умножение); / (деление); % ( остаток от деления целых чисел).

2. + (сложение); - (вычитание).

Изменить порядок выполнения операций можно с помощью
круглых скобок. Выражение, заключенное в круглые скобки, выполняется в первую очередь. Например, выражению а/b*с соответствует математическая запись , а выражению а/(b*с) – запись .

Тип арифметического выражения определяется типом входящих и него операндов.

Арифметическое выражение является целым, если все входящие и него операнды целого типа. Результат вычисления целого арифметического выражения - целый.

Если в арифметическом выражении содержится хотя бы один вещественный операнд, то результат - веществен­ный. Целые операнды в вещественном арифметическом выраже­нии всегда преобразуются к вещественному типу.

Операция выделения остатка или деление по модулю ( % ) применима только к целым числам. Результат ее выполнения - целый.

Исключение составляет операция деления с использованием символа ‘/’ (косая черта). Результат выполнения этой операции всегда вещественный, независимо от типа операндов.

Например, значением выражения 2/5 будет вещественное число 0.4.

Примеры вычисления арифметических выражений

Арифметические выражения

Результат

Тип результата

6 + 4 * (5 - 3)

14

Целый

6 + 4 * (5 - 3.0)

14.0

Вещественный










7 % 2

1

Целый

7/2

3.5

Вещественный

Стандартные функции

Часто используемые в арифметических выражениях элементарные математические функции оформлены в виде стандартных подпрограмм, которые хранятся в библиотеке системы Турбо Си (файл с именем math.h).

Для правильного обращения к стандартной функции необхо­димо записать имя функции, за которым в круглых скобках сле­дует аргумент (параметр). Приоритет вычисления функций выше, чем приоритет арифметических операций.

В таблице ниже представлен набор стандартных функций с указани­ем типов функции и аргумента. В таблице приняты обозначения: I - целый тип, F - вещественный тип.

Математическая запись

Запись на языке Си

Тип аргумента

Тип функции



abs(x)

I

F

I

F

tg x

tan(x)(x)


I

F

I

F

sin x


sin(x)


I или F

F

cos x

cos(x)


I или F


F

ln x

log(x)

I или F

F



sqrt(x)

I или F

F

π

pi

F

F

Округление до ближайшего целого > x

ceil(x)

F

I

Округление до ближайшего целого < x

floor(x)

F

I

Возведение в степень

xn

pow(x,n)

I

F

I

F



exp(x)

I или F

F

arcsin(x) - арксинус

asin(x)

I или F

F

arccos(x) - арккосинус

acos(x)

I или F

F

arctg(x) - арктангенс

atan(x)

I или F

F

десятичный логарифм.

log10(x)

I или F

F

гиперболический синус

sinh(x)

I или F

F

гиперболический косинус

cosh(x)

I или F

F

гиперболический тангенс

tanh(x)

I или F

F

Округление по правилам математики

round(x)

I или F

I


Примеры программирования арифметических выражений

Математическая

запись

Запись на языке Си




(a+12*b)/(с1 - 1.8E3)




exp((2*sin(4*x)+pow((cos(x* x),2)))/(3*x))



log(abs(tan(al)-sin(pow(al,3))))


4.5 Линейные вычислительные процессы

Линейный вычислительный процесс представляет собой последовательность действий, выполняемых один за другим. Осно­ву программы линейного вычислительного процесса составляют оператор присваивания и операторы ввода-вывода данных.

4.5.1. Оператор присваивания

Оператор присваивания служит для вычисления выра­жения и записи результата в память компьютера.

Общий вид записи оператора

переменная=выражение;

Знак = читается как «присвоить». Конец любого оператора на языке Си фиксируется точкой с запятой.

Работа оператора присваивания

При выполнении оператора присваивания происходит замена текущего значения переменной, стоящей слева от знака присваивания, новым значением, полученным в результате вычисления выражения, стоящего справа от знака равенства, например

c = a + b; // вычислить сумму a и b и запишет результат в c.

Тип результата выполнения оператора

При записи оператора присваивания необходимо строго сле­дить за типом переменной, стоящей в левой части оператора, и типом выражения:

• если переменная слева - вещественного типа, то арифметическое выражение может быть как целым, так и вещественным.

В случае целого арифметического выражения происходит преоб­разование его результата к вещественному типу. Например, при выполнении оператора

m=20+15/4;

вещественной переменной т будет присвоено значение 23.0;

• если переменная слева - целого типа, то арифметическое
выражение будет приведено к целому типу. Например, задано
следующее описание типа переменных.

float a, b, c;

int n;

Тогда записать оператор присваивания в виде: n=а*b/с; приведет к усечению результата до целого типа.

В операторе присваивания конечный результат вычисления выражения в правой части приводится к типу переменной, которой должно быть присвоено это значение. Данный процесс может привести к повышению типа, как описано выше, или к понижению, при котором величина приводится к типу данных, имеющему более низкий приоритет. Последовательность имен типов, упорядоченных от высшего типа к низшему, выглядит так: double, float, long, int, short, char. Применение ключевого слова unsigned повышает ранг соответствующего типа данных со знаком. Повышение типа обычно происходит гладко, в то время как понижение может привести к затруднениям.

Примеры использования оператора присваивания

1. Записать оператор присваивания, который позволяет вычислить расстояние между двумя точками на плоскости с координатами (х1,у1)и (х2, у2).

Ответ: d=sqrt(pow(x1-x2,2)+pow(y1-y2,2));

2. Записать последовательность операторов присваивания,
обеспечивающих обмен значениями переменных х и у в памяти
компьютера.

Ответ: с=х;

х=у;

у=с;
Странные операторы присваивания

В программировании часто используются несколько странные операторы присваивания, например: i = i + 1;

Если считать это уравнением, то оно бессмысленно с точки зрения математики. Однако с точки зрения информатики этот оператор служит для увеличения значения переменной i на единицу.

Буквально это означает: взять старое значение переменной i, прибавить к нему единицу и записать результат в ту же переменную i.

Инкремент и декремент

В языке Си определены специальные операторы быстрого увеличения на единицу

(инкремента)

i ++; или ++ i;

что равносильно оператору присваивания

i = i + 1;

и быстрого уменьшения на единицу (декремента)

i - -; или - - i;

что равносильно оператору присваивания

i = i - 1;

Между первой и второй формами этих операторов есть некоторая разница, но только тогда, когда они входят в состав более сложных операторов или условий.

4.5.2. Операторы ввода-вывода

Операторы ввода-вывода данных служат для обмена инфор­мацией между внутренней памятью компьютера и внешними уст­ройствами (монитор, клавиатура, принтер, накопители на жестких и гибких магнитных дисках и др.).

Информация, представленная на внешних устройствах, орга­низуется в файлы. Файлы, предназначенные для хранения исход­ных данных, называются входными. Результаты вычислений (вы­ходные данные) записываются в выходные файлы. В системе Турбо Си определены стандартные устройства ввода (кла­виатура) и вывода (экран), для которых имена стандартных фай­лов не указываются, т.е. используются по умолчанию.

Операторы ввода исходных данных с клавиатуры

Работа оператора ввода

Операторы ввода обеспечивают чтение данных с клавиатуры, преобразование их из внешнего представления во внутреннее и присваивание значений переменным, указанным в списке.
1   ...   12   13   14   15   16   17   18   19   ...   26

Потоковый ввод данных числового типа


Для начинающих программистов проще всего организовать в программе ввод числовой информации из буфера потока, связанного с так называемым стандартным устройством ввода (stdin). Данные в этом буфере оказываются в тот момент, когда программа обращается к пользователю и ждет окончания набора затребованных числовых значений с клавиатуры. Программа может запросить одно или несколько значений:

cin >> d;

...........

cin >> x1 >> x2 >> x3;

Первая строка соответствует запросу на ввод значения единственной переменной d. Следующая строка программы представляет запрос на ввод трех числовых значений, первое из которых будет присвоено переменной x1, второе значение предназначается для переменной x2, третье значение - для переменной x3. В ответ на запрос программы пользователь должен набрать на клавиатуре затребованные числа, разделяя их, по крайней мере, одним пробелом. Набор строки завершается нажатием клавиши Enter. Количество числовых значений, набираемых пользователем в пределах строки, может оказаться как меньше, так и больше, чем требуется программе. В первом случае продолжение программы задержится до тех пор, пока пользователь не введет дополнительные строки с недостающими значениями. Если пользователь наберет слишком много значений в вводимой строке, то лишние числовые данные сохранятся в буфере ввода и будут переданы программе при выполнении следующего оператора cin.

Тип набираемого числового значения и его величина должны соответствовать типу переменной, в которую это значение должно быть введено. Забота об этом целиком возлагается на пользователя.

Для обеспечения потокового ввода к программе следует подключить заголовочный файл iostream.h:

#include

int main()

{ int i;

float f;

double d;

..........

cin >> i >> f >> d;

В переменные типа char или unsigned char из потока числовые значения ввести невозможно, т.к. они в данном случае воспринимаются системой не как числовые данные, а как символьные. В такие переменные попадет только первый символ набранного значения.

Форматный ввод


Гораздо более сложным для начинающих программистов является ввод числовых данных, организуемый с помощью функции scanf, использующей так называемую форматную строку:

Общий вид записи оператора ввода

scanf(“ список форматов“,);

форматы ввода адреса вводимых переменных

Форматы ввода - это строка в кавычках, в которой перечислены один или несколько форматов ввода данных:

%d - ввод целого числа (переменная типа int)

%f - ввод вещественного числа (переменная типа float)

%с - ввод одного символа (переменная типа char)

После форматов ввода через запятую перечисляются адреса ячеек памяти, в которые надо записать введенные значения. Почувствуйте разницу:

a - значение переменной a

&a - адрес переменной a

Например:

#include

int main()

{ int i;

float f;

double d;

..........

scanf("%d %f %lf",&i,&f,&d);

Для обеспечения форматного ввода к программе следует подключить заголовочный файл stdio.h. Строка вводимых данных поступает со стандартного устройства ввода (stdin), которым по умолчанию считается клавиатура. Завершение набора строки ввода - нажатие клавиши Enter.

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

В приведенном примере переменной i (в списке ввода указан ее адрес - &i), объявленной с помощью спецификатора типа int, соответствует форматный указатель %d. Это означает, что первым числовым значением, набранным на клавиатуре, может быть только целое десятичное число со знаком (d - от decimal, десятичный). Вещественной переменной f типа float в форматной строке соответствует указатель %f. Это означает, что второе числовое значение в строке ввода должно принадлежать диапазону, предусмотренному для коротких вещественных данных. Для переменной d типа double использован форматный указатель %lf (l (это буква эль)- от long).

Количество форматов в строке должно быть равно количеству адресов в списке.

Кроме того, тип переменных должен совпадать с указанным: например, если a и b - целые переменные, то следующие вызовы функций ошибочны

scanf ( "%d%d", &a );

неясно, куда записывать второе введенное число;

scanf ( "%d%d", &a, &b, &c );

переменная c не будет введена, так как на нее не задан формат;

scanf ( "%f%f", &a, &b );

нельзя вводить целые переменные по вещественному формату.

Если значения данных вводятся в одной строке, то они отделяются друг от друга одним или несколькими пробелами.

Пример ввода:

Пусть в задаче определены следующие исходные данные:

а = 4; х = 3,8; у =1,2-104; к=5; т = 74

Оператор ввода:

scanf(“%d%f%f%d%d”, &a, &х, &у, &k, &m);

вызывает чтение данных с клавиатуры, набранных следующим

образом:

4 3.8 1.2Е4 5 74 [Enter]

%d%f%f%d%d - такой список форматов будет соответствовать следующему описанию переменных в программе:

main()

{ int a,k,m;

float x,y;

Операторы вывода данных на экран
1   ...   13   14   15   16   17   18   19   20   ...   26