Министерство образования Российской Федерации
Тульский государственный университет
Н. Н. ТРУШИН
И н ф о р м а т и к а
Учебное пособие
Тула 2008
Министерство образования Российской Федерации
Тульский государственный университет
Н. Н. ТРУШИН
И н ф о р м а т и к а
Учебное пособие
Допущено
Учебно-методическим объединением вузов по образованию в области автоматизированного машиностроения (УМО АМ) в качестве учебного пособия для студентов высших учебных заведений, обучающихся по направлению подготовки бакалавров и магистров "Технология, оборудование и автоматизация машиностроительных производств" и специальностям: "Технология машиностроения", "Металлообрабатывающие станки и комплексы", "Инструментальные системы машиностроительных производств" (направление подготовки дипломированных специалистов – "Конструкторско-технологическое обеспечение машиностроительных производств"); "Автоматизация технологических процессов и производств (в машиностроении)" (направление подготовки дипломированных специалистов – "Автоматизированные технологии производства")
Тула 2008
УДК 681.3
Информатика: Учеб. пособие / Н.Н. Трушин; Тул. гос. ун-т – Тула: ТулГУ, 2008. 152 с.
ISBN 5-7679-0206-2
Излагаются основы информатики, вычислительной техники и технологии программирования на языке Паскаль.
Пособие предназначено для студентов высших учебных заведений направления 552900.
The present textbook deals with the fundamentals of computer science, computers and programming technology with Pascal language.
The textbook is intended for university students majoring in the field 552900.
Ил. 15. Табл. 24. Библиогр.: 23 назв.
Печатается по решению библиотечно-издательского совета Тульского государственного университета.
Рецензенты: кафедра "Технология машиностроения, металлорежущие станки и инструменты" Орловского государственного технического университета, зав. кафедрой д-р техн. наук, проф. Ю.С. Степанов;
начальник отдела АСУ ЗАО "Автошина" (г. Тула) канд. техн. наук О.Л. Русаков.
© Н.Н. Трушин, 2002
© Тульский государственный университет, 2002
Слово информация
происходит от латинского informatio
– осведомление, сообщение о чьей-то деятельности, сведения о чем-либо. Информация возникает за счет познания человеком материального мира и может быть получена либо путем наблюдения, либо в результате экспериментов, либо на основе логического вывода. По объектам получения или использования информация подразделяется на политическую, техническую, биологическую, химическую, физическую и т.д. По назначению информация может быть массовой и специальной. Научная информация
– это логическая информация, адекватно отражающая объективные закономерности развития природы, общества и мышления. Наряду с научной информацией в сфере техники при решении производственных задач используется техническая информация
, которая имеет различные содержания: конструкторско-технологическая информация, планово-экономическая информация, метрологическая информация и т.д. Информация, которая занесена на бумажный носитель, называется документальной
. Информация также может быть истинной или ложной.
Таким образом, информация в широком смысле – это отражение реального мира; в узком смысле информация – это любые сведения, являющееся объектом хранения, передачи и преобразования.
Информация пронизывает все сферы деятельности человека и общества, играет в обществе все более важную роль. Ее ставят в один ряд с фундаментальными понятиями мироздания: веществом и энергией. Упорядоченную, доступную и активно используемую информацию оценивают как ресурс, наряду с материальными, энергетическими, финансовыми и интеллектуальными ресурсами.
Задача накопления, обработки и распространения (обмена) информации стояла перед человечеством на всех этапах его развития. В течение долгого времени основными инструментами для ее решения были мозг, язык и слух человека. По мере развития цивилизации происходили кардинальные изменения в сфере обработки информации, которые породили несколько информационных революций
, приводивших к радикальным преобразованиям общественных отношений.
В течение длительного времени развития человеческого общества основным предметом труда оставались материальные объекты. Воздействуя на них, человек добывал себе средства к существованию. В процессе формирования трудовых коллективов возникала необходимость обмена знаниями. Первоначальные знания передавались устно из поколения в поколение. Появление письменности позволило по-новому показать накопленные знания – в виде информации. Огромное значение в истории письменности имело изобретение бумаги в Китае во II веке нашей эры. Поэтому первая информационная революция
была обусловлена изобретением письменности.
Вторая информационная революция
была обусловлена изобретением в Германии в середине XV века (около 1445 года) Иоганном Гутенбергом печатного станка, в результате чего человечество получило возможность накапливать и распространять информацию в компактной и надежной форме и дало новые возможности тиражировать знания.
Со второй половины XIX века в производство начали интенсивно внедряться все новые методы и средства механизации и автоматизации труда. Технический прогресс способствовал всестороннему развитию человеческого общества. Третья информационная революция
(конец XIX века – начало XX века) была обусловлена изобретением средств электрической связи (телеграфа, телефона, радио, телевидения), благодаря чему стала возможна оперативная передача информации как на большие расстояния, так и в реальном масштабе времени.
Следует подчеркнуть, что эти информационные революции практически не затронули область переработки
информации. Здесь основным и практически единственным рабочим инструментом продолжал оставаться человеческий мозг. Механизация отдельных операций по переработке информации (прежде всего вычислительных), достигнутая к началу ХХ века с помощью тех или иных технических средств (логарифмическая линейка, арифмометр и другие), ничего кардинально не меняла. По существу все эти средства оставались лишь инструментами
, а не подлинными машинами автоматического действия.
Положение в корне изменилось с появлением в 40-х годах XX века электронных вычислительных машин (ЭВМ). Подобно тому, как изобретение механического двигателя открыло эру комплексной механизации и автоматизации физического труда, изобретение ЭВМ сделало то же самое в отношении труда умственного. Поэтому четвертая информационная революция
связана с появлением ЭВМ и началом их массового производства.
ЭВМ открыли новую страницу в истории человеческих знаний и возможностей. В невиданных масштабах они подняли производительность труда при производстве вычислений, дали возможность изучать сложнейшие природные процессы, способствовали появлению новых видов человеческой деятельности. Сейчас нет ни одной отрасли экономики, где нельзя было бы применять ЭВМ. Более того, целые разделы науки и техники уже не могут существовать без них.
Внедрение средств вычислительной техники в процессы преобразования информации получило наименование информатизации общества
, а все что связано с разработкой и применением вычислительных машин, или компьютеров, помогающих человеку вести обработку информации, с созданием программ для вычислительных машин стало называться информатикой
. Информатику можно считать частью кибернетики
– науки об общих законах управления в живой и неживой природе.
Термин информатика
возник относительной недавно – в 60-х годах XX века во Франции, чтобы обозначить сферу деятельности, связанную с автоматизированной обработкой информации с помощью ЭВМ. В англоязычных странах термину "информатика" соответствует синоним "computer science" – наука о компьютерной технике. Главная функция информатики заключается в разработке методов и средств преобразования информации. Информатика сочетает в себе свойства фундаментальных и прикладных наук. Сферами деятельности информатики как науки являются:
- разработка вычислительных машин и систем, а также технологии их создания;
- разработка математических моделей естествознания и общественных явлений с целью их строгой формализации;
- обработка информации, создание численных и логических методов решения задач;
- разработка алгоритмов решения задач управления, расчета и анализа математических моделей;
- программирование алгоритмов, создание программ для вычислительных машин.
Широкая компьютеризация общества стала одним из наиболее актуальных направлений современного общественного прогресса. Интенсивное развитие вычислительной техники послужило толчком к развитию информационного общества
, построенного на использовании различной информации. В информационном обществе большинство его работников занято производством, хранением, переработкой и реализацией информации, особенно высшей ее формы – знаний
. Материальной и технологической базой информационного общества являются различного рода системы обработки информации, реализующие те или иные формы информационной технологии
. Информационная технология – это процесс, использующий совокупность средств и методов сбора, обработки и передачи первичной информации для получения информации нового качества о состоянии какого-либо объекта, процесса или явления.
Интенсивное развитие вычислительной техники, разработка новых методов и средств обработки и хранения информации обеспечили создание автоматизированных систем обработки информации
, предназначенных для организации, хранения, пополнения, поддержки и представления пользователям информации в соответствии с их запросами. Для работы с такими сложными техническими системами необходимы специалисты, обладающие глубокими знаниями в различных областях информационной технологии. Поэтому цель данного учебного пособия – дать фундаментальные знания в области информатики студентам, которым предстоит трудиться в различных отраслях экономики современного информационного общества.
Термин "вычислительная машина" означает совокупность технических средств, создающая возможность проведения обработки информации и получения результатов в необходимой форме. В процессе своей работы вычислительная машина получает информацию, запоминает ее, обрабатывает по заданным алгоритмам, направляет потребителю (пользователю) либо передает в другие системы обработки.
Появление ЭВМ было подготовлено историческим развитием средств вычислений. Понятие числа возникло задолго до появления письменности. Люди научились считать. В первобытное время первым счетным инструментом у человека была его собственная рука. Пальцевый счет использовался человеком и на более высоких ступенях развития цивилизации – в Древней Греции и Древнем Риме.
Затем человек стал использовать для счета самые примитивные устройства. Сначала это были деревянные палочки с зарубками – бирки
. Первое упоминание о них было найдено на барельефе фараона Сети I и относится примерно к 1350 году до нашей эры. Китайцы, персы, индийцы пользовались для представления чисел и счета ремнями и веревками с узлами. Запись чисел с помощью цифр появилась у древних египтян и вавилонян.
С ростом и расширением торговли понадобился более совершенный инструмент для записи чисел и счета. Это был абак
, представляющий собой доску с вертикальными желобками, в которых передвигались камешки. По свидетельству древнегреческого историка Геродота египтяне им пользовались уже в V веке до нашей эры. Из Египта и Греции абак пришел в Древний Рим, Китай, Японию. Китайская и японская разновидности абака по конструкции напоминают современные русские торговые счеты. Русские счеты – это отечественная разновидность абака, они появились на рубеже XVI-XVII веков. Главное их отличие от аналогичных устройств – это десятичный принцип счисления. Форма счетов, установленная более 250 лет назад, к настоящему времени почти не изменилась.
Изобретение позиционной десятичной системы счисления, которой мы сейчас пользуемся, стало важным событием в истории вычислительной техники. Эта система счисления появилась, вероятно, в Индии. После изобретения десятичной системы были установлены правила выполнения арифметических действий: сложения, вычитания, умножения "столбиком" и деления "уголком". Появились десятичные дроби. Умение считать стало широко распространяться. В начале Х века в Европе началось распространение арабских цифр, и в начале XVII века арабские цифры, более удобные для ручных и машинных вычислений, окончательно вытеснили римские.
Особую роль в истории вычислительной техники сыграло изобретение логарифмов шотландским математиком Джоном Непером (1550–1617) С помощью логарифмов умножение и деление сводятся к сложению и вычитанию, в связи с чем арифметические операции сильно упрощаются. Поэтому вслед за изобретением логарифмов стали делаться попытки механизировать арифметические вычисления.
В 1617 году Непер предложил устройство умножения многозначных чисел на однозначные, названное палочками Непера
. Позднее на основе логарифмической шкалы английского математика Эдмунда Гюнтера была изобретена логарифмическая линейка
. Ее изобрели независимо друг от друга английские математики Уильям Отред и Ричард Деламейн. Первые образцы счетных линеек ими были изготовлены в период между 1620 и 1630 годами. В дальнейшем конструкция логарифмической линейки многократно совершенствовалась. Логарифмическую линейку, наиболее похожую на современную, сконструировал в 1850 году французский офицер Амедей Маннхейм.
В начале XVII века на свет появились первые механические суммирующие устройства. В 1623 году профессор математики Тюбенгенского университета Вильгельм Шиккард (1592–1636) сообщил об изобретении им машины, способной складывать числа. Однако изобретение Шиккарда не получило никакого практического применения. Французский математик, физик и философ Блез Паскаль (1623–1662) работал над своей первой арифметической машиной в течение 12 лет, сделал около 50 действующих моделей, первую из них – в 1642 году. Суммирующие устройства машин Шиккарда и Паскаля являлись соединением зубчатых передач.
Арифмометр
стал развитием суммирующих устройств. Первым арифмометром стала "арифметическая машина" немецкого математика Готфрида Лейбница (1646–1716), первый вариант которой появился в 1670 году. Главной ее частью был горизонтально расположенный ступенчатый валик. Эта идея Лейбница оказалась весьма плодотворной. Вплоть до конца XIX века конструкция валика совершенствовалась и развивалась различными изобретателями. Арифмометры приводились в действие человеческой рукой и могли выполнять четыре арифметических действия.
На принципе ступенчатого валика был построен в 1820 году и арифмометр Чарльза Томаса, ставший первым в мире серийно изготавливаемым счетным устройством (до 100 штук в год).
Большой вклад в развитие счетной техники внеси и наши соотечественники. В 1878 году академик П. Л. Чебышев (1821–1894) сконструировал арифмометр, который в то время был одной из самых оригинальных вычислительных машин. В 1874 году петербургским механиком Вильгордом Однером была создана новая конструкция ручного арифмометра, которая оказалась настолько совершенной, что сохранилась до наших дней. Главным элементом арифмометра Однера было зубчатое колесо с переменным числом зубьев. В самом конце XIX века Однер организовал производство арифмометров на своем механическом заводе в Санкт-Петербурге, и в первый же год существования завод выпустил примерно 500 машин. Это событие положило начало в России новой отрасли промышленности – производству вычислительных машин.
В конце XIX века произошло коренное изменение в производстве средств вычислений, когда рост промышленности и транспорта, а также расширение коммерческой деятельности банков обусловили создание быстродействующих и надежных счетных машин. Особенно много конструкций счетных машин было создано в США. Удачная конструкция многоразрядной клавишной суммирующей машины была предложена в 1885 году американским механиком Дорром Фельтом, названная им комптометром
. Это было первая счетная машина, нашедшая практическое применение в США. В том же 1885 году механик из Сент-Луиса Уильям Барроуз (1857–1898) сделал "бухгалтерскую машину", которая печатала вводимые числа, суммировала их, а затем печатала результат. Машины Барроуза выпускались на протяжении 60 лет начиная с 1887 года. В последних моделях машин ручной привод был заменен электромоторным.
Первая действующая счетно-аналитическая машина, или табулятор
, была создана в США Германом Холлеритом (1860–1929) и впервые применена для автоматизации работ по переработке данных переписи населения в США в 1880 году. В качестве носителей информации в табуляторе Холлерита использовались перфокарты. В 1896 году Холлерит стал основателем фирмы по выпуску перфокарт и счетно-перфорационных машин, которая впоследствии стала всемирно известной компьютерной фирмой IBM.
За три столетия в различных странах было создано огромное количество всевозможных счетных машин. Как не блестящ был век механических арифмометров, но и он исчерпал свои возможности. Людям нужны были более производительные средства вычислений. Совершенствование вычислительной техники в XX веке продолжилось на электромеханической основе. Рукоятку арифмометра заменил электродвигатель, появились машины, записывающие результат на бумажной ленте.
Особую роль в развитии вычислительной техники сыграли работы профессора математики Кембриджского университета Чарльза Беббиджа (1791–1871). Главным направлением его научной деятельности стала разработка вычислительных машин, над созданием которых ученый работал около 50 лет. В 1833 году Беббидж предложил проект автоматического счетного устройства, названного "аналитической машиной" и ставшего прообразом современных компьютеров. Машина содержала основные устройства, присущие современным компьютерам: "склад" для хранения чисел, "фабрику" для производства арифметических операций, "контору" – устройство, управляющее последовательностью счетных операций, а также блок ввода исходных данных и печати результатов.
Вычислительная машина Беббиджа, как и предшествующие арифметические машины, задумывалась как чисто механический аппарат. Время на производство арифметических операций оценивалось автором так: сложение и вычитание – 1 с; умножение и деление – 1 мин. Вводить и выводить числовую информацию, управлять вычислительным процессом предлагалось с помощью перфокарт – картонных карточек с пробитыми на них отверстиями. Эту идею Беббидж заимствовал у француза Жозефа Жаккара, который в 1804 году изобрел способ управления ткацким станком с помощью перфокарт. Первым программистом в мире считается Ада Лавлейс, дочь английского поэта Джорджа Байрона, которая в 1843 году написала первую программу для машины Беббиджа. В ее честь получил название язык программирования Ада.
Беббидж составил подробную схему машины, выполнил более 200 чертежей отдельных узлов, воплотил в металле некоторые ее части. Но полностью создать машину он не смог, так как его идеи намного опередили время. К ним обратились только в 40-х годах XX века.
С начала XX века начинается интенсивное развитие электротехники, радиотехники, электроники. Большой материал, накопленный в ходе развития этих отраслей науки, позволил подойти к созданию вычислительных машин немеханического типа. Значительную роль при этом сыграли теория абстрактных автоматов
, разработанная в 1936 году английским математиком Аланом Тьюрингом (1912–1954) и американским математиком Эмилем Постом (1897–1954), и теория переключательных схем
, разработанная американским математиком Клодом Шенноном (р. 1916) в 1938 году на основе алгебры логики
, созданной еще в середине XIX века английским математиком Джорджем Булем (1815–1864).
Первая чисто релейная универсальная вычислительная машина была создана в 1941 году немецким инженером Конрадом Цузе. Его машина Z-3 содержала 2600 электромагнитных реле, на которых было построено арифметическое устройство и память на 64 двоичных числа. Машина выполняла восемь команд, в том числе четыре арифметических действия и извлечение квадратного корня. Программа для работы машины задавалась с помощью перфорированной ленты, сделанной из кинопленки.
В 1944 году в США была построена электромеханическая вычислительная машина "Mark-1". Ее проект был предложен физиком и математиком Говардом Айкеном (1898–1970) еще в 1937 году независимо от Цузе. Машина приводилась электромотором мощностью 5 л.с., программа для нее задавалась на 24-дорожечной перфоленте. Машина "Mark-1" была передана Гарвардскому университету и с успехом эксплуатировалась в течение ряда лет. "Mark-1" выполнял сложение за 0,3 с, умножение – за 5,7 с, деление – за 15,3 с. Вторая машина Айкена "Mark-2", изготовленная в 1947 году, была уже чисто релейной машиной (около 13000 телефонных реле) и имела в своем составе все функциональные блоки, предусмотренные классической структурой Беббиджа.
Одной из наиболее совершенных релейных вычислительных машина была машина РВМ-1, созданная в СССР в 1956 году под руководством инженера Н. И. Бессонова (1906–1963). Машина содержала 5500 реле, скорость ее работы составляла 50 сложений или 20 умножений в секунду. РВМ-1 использовалась для решения экономических задач и эксплуатировалась до 1965 года.
Релейные вычислительные машины были выдающимися достижениями своего времени, и при их создании пришлось решить массу сложных технических задач. Однако и этим машинам не суждено было совершить революцию в вычислительной технике, так как их надежность и быстродействие были невелики.
Одна из первых попыток использовать электронные элементы в вычислительной машине была предпринята в США в 1938–1942 годах американским физиком профессором университета штата Айова
Д. Атанасовым. Совместно с К. Берри он сконструировал специализированную машину ABC для решения систем алгебраических уравнений. Однако эта машина осталась нереализованной.
В августе 1942 года сотрудник Электротехнической школы Мура при Пенсильванском университете Джон Моучли предложил проект электронной вычислительной машины. Начиная с середины 1943 года под руководством Моучли и Преспера Эккерта по контракту с армией США школа Мура начала работу над электронным цифровым интегратором и вычислителем ENIAC. Машина была закончена через два месяца после капитуляции Японии в 1945 году. Это было огромное сооружение, состоящее из 40 панелей, содержащих 18000 электронных ламп и 1500 реле. Машина потребляла более 150 кВт электроэнергии. На операцию сложения машина тратила 0,0002 с, на умножение – 0,0028 с. Первая ЭВМ использовалась для баллистических расчетов, предсказаний погоды и некоторых научно-технических вычислений. После этого в конце 40-х – начале 50-х годов первые ЭВМ практически одновременно появились в Великобритании, СССР и Франции.
В СССР первая ЭВМ, получившая название МЭСМ – малая электронная счетная машина, была запущена 25 декабря 1951 года в Институте электротехники АН УССР (г. Киев) под руководством академика С.А. Лебедева (1902–1974). МЭСМ имела производительность около 50 операций в секунду, содержала более 6000 электронных ламп, занимала площадь 50 м2
, потребляла 25 кВт электроэнергии. В 1952 году вступила в строй машина БЭСМ-1 (большая электронная счетная машина), созданная в Институте точной механики и вычислительной техники АН СССР под руководством С.А. Лебедева и основанная на структуре МЭСМ. ЭВМ БЭСМ-1 имела самую высокую по тем временам производительность – 8000 операций в секунду. Серийное производство ЭВМ в СССР началось в 1953 году.
Значительный шаг в развитии вычислительной техники сделал американский физик Джон фон Нейман (1903–1957). В 1946 году вместе с Г. Голдстайном и А. Берксом он опубликовал важную для дальнейшего развития компьютеров статью "Предварительное рассмотрение логической конструкции электронного вычислительного устройства". В ней были высказаны две основные идеи, которые используются сейчас во всех ЭВМ: применение двоичной системы счисления, принцип хранимой программы, автоматизм работы. Статья также содержала ряд важных рекомендаций по конструированию вычислительных машин и методике программирования.
Уже в 1949 году идеи Неймана нашли практическое воплощение, когда в Кембриджском университете под руководством профессора Мориса Уилкса была построена машина EDSAC, которая стала первой ЭВМ с хранимой программой и промежуточной внутренней памятью. Скорость выполнения сложения составила 0,07 мс, умножения – 8,5 мс. Ввод данных производился с перфоленты, вывод – с помощью пишущей машинки. Годом позже было завершено создание аналогичной ЭВМ EDVAC в США.
Другой выдающейся научной работой, оказавшей существенное воздействие на прогресс вычислительной техники, была появившаяся в 1948 году книга "Кибернетика, или Управление и связь в животном и машине" американского математика Норберта Винера (1894–1964), в которой были заложены основы кибернетики
– науки, содержанием которой являются общие законы получения, хранения, передачи и переработки информации.
За 50 лет своего развития сменилось четыре поколения ЭВМ. В наши дни уже работают ЭВМ пятого поколения. В основу градации поколений ЭВМ обычно кладут электронную базу, на которой строятся вычислительные машины, а также их возможности, области применения и другие признаки. Деление это весьма условно, так как случается, что ЭВМ, построенная на элементной базе одного поколения, по структурным особенностям и возможностям относится к машинам другого поколения.
ЭВМ первого поколения
(1945 – середина 50-х годов) выполнялись на электронных лампах. Оперативная память строилась на ферритовых сердечниках, внешняя – на магнитных лентах и барабанах. В качестве носителей информации при вводе и выводе использовались перфоленты и перфокарты. Среднее быстродействие машин первого поколения достигало десятков тысяч операций в секунду. Отечественными представителями ЭВМ первого поколения были МЭСМ, БЭСМ-1, "Стрела", "Урал", М-20.
ЭВМ второго поколения
(середина 50-х – середина 60-х годов) строились на дискретных полупроводниковых диодах и триодах
(транзисторах). Транзистор, один из самых замечательных приборов ХХ века, был изобретен в 1947 году тремя американскими физиками: Дж. Бардиным, У. Бретейном и У. Шокли. Машины второго поколения отличались от машин первого поколения более высокой надежностью, меньшим потреблением электроэнергии, более высоким быстродействием. Для них уже был характерен параллелизм в работе отдельных блоков, что позволило достичь быстродействия до миллиона операций в секунду. В качестве устройств внешней памяти стали использоваться накопители на магнитных дисках. Наиболее мощными среди ЭВМ второго поколения были STRETCH (США, 1961), ATLAS (Великобритания, 1962), БЭСМ-6 и "Минск" (СССР, 1966).
БЭСМ-6 по своим архитектурным решениям была близка к машинам следующего, третьего, поколения. На ЭВМ ATLAS впервые была реализована виртуальная оперативная память.
ЭВМ третьего поколения
(середина 60-х – середина 70-х годов) строились на интегральных микросхемах малой степени интеграции. Микросхемы были созданы в конце 50-х годов независимо друг от друга двумя американскими инженерами: Д. Килби и Р. Нойсом. Переход на микросхемы способствовал улучшению качества ЭВМ, уменьшению их габаритных размеров и потребляемой ими энергии. Интеграция полупроводниковых приборов позволила повысить надежность и быстродействие вычислительных машин. ЭВМ третьего поколения стали универсальными средствами обработки информации научного, делового, коммерческого назначения. Эти машины создавались на принципах независимой параллельной работы различных устройств: процессора, памяти, ввода-вывода. Для ЭВМ третьего поколения были характерны многопрограммный и многопользовательский режимы работы. В эпоху машин третьего поколения появились первые компьютерные сети. Типичный представитель ЭВМ третьего поколения – машины семейств System 360 и System 370 фирмы IBM, первые модели которых были выпущены в 1965 и в 1970 годах соответственно. Эти машины предназначались для решения широкого спектра задач: научно-технических, экономических, управления. Их отечественный аналог – машины семейства ЕС ЭВМ (Единая серия ЭВМ), промышленный выпуск которых начался в 1972 году и продолжался до 1991 года. В конце 60-х годов появилась первая серийная мини-ЭВМ PDP-8 фирмы DEC (США)
Четвертое поколение ЭВМ
(середина 70-х – середина 80-х годов) – это микроЭВМ, сердцем которых стали микропроцессоры и интегральные микросхемы большой степени интеграции (БИС). Большие интегральные микросхемы содержат десятки и сотни тысяч полупроводниковых элементов в одном корпусе. С начала 70-х годов миникомпьютеры стремительно внедряются практически во все сферы деятельности человека. Современные микроЭВМ по своим характеристикам догнали и значительно перегнали большие ЭВМ третьего поколения. Классический представитель ЭВМ четвертого поколения – персональная микроЭВМ (ПЭВМ).
Со второй половины 80-х годов ХХ века начинается эпоха ЭВМ пятого поколения
. Они характеризуются наличием параллельных вычислительных структур и элементов искусственного интеллекта. Эти машины умеют не только производить числовые расчеты, но и выполнять функции обработки смысловой информации и операции логического анализа. Сфера применения ЭВМ еще более расширяется, а программы для них разрабатываются с привлечением методов искусственного интеллекта. Элементная база ЭВМ пятого поколения – сверхбольшие интегральные микросхемы (СБИС), содержащие более миллиона полупроводниковых элементов, и устройства оптоэлектроники. Современные ЭВМ все шире объединяются в локальные и глобальные информационно-вычислительные сети, воплощая тем самым принципы распределенной обработки информации. Производительность современных ЭВМ повышается в основном двумя путями: совершенствованием элементной базы и разработки методов параллельной обработки информации.
В зависимости от вида перерабатываемой информации вычислительные машины делят на два больших класса: аналоговые и цифровые.
Аналоговая вычислительная машина
(АВМ) оперирует информацией, представленной в виде непрерывных изменений некоторых физических величин. АВМ предназначены для моделирования физических процессов и решения узкого класса задач, которые могут быть описаны дифференциальными уравнениями. Первая АВМ была изобретена в 1927 году в Массачусетском технологическом институте (США).
Главный недостаток АВМ в том, что они не являются универсальными, так как для каждого класса математических задач требуется отдельная специальная вычислительная машина.
Цифровая вычислительная машина
(ЦВМ) оперирует информацией, представленной в дискретном виде. В математике разработаны методы численного решения многих видов задач, что дает возможность решать на ЦВМ различные задачи с помощью набора простых арифметических и логических операций. Поэтому ЦВМ оказались более перспективными, так как любая ЦВМ является универсальным вычислительным средством. Наибольшее распространение получили электронные ЦВМ, к которым относятся все современные ЭВМ.
ЭВМ классифицируются по различным признакам. Традиционно ЭВМ классифицируются по габаритным показателям (рис 1.1).
Рис. 1.1 Схема классификации ЭВМ
Исторически первыми появились большие ЭВМ
, элементная база которых прошла путь от электронных ламп до СБИС. В настоящее время применяются большие ЭВМ четвертого и пятого поколений. Эти ЭВМ, иначе называемые мэйнфреймами
(mainframe), используются для решения трудоемких задач и в качестве серверов крупных неоднородных сетей ЭВМ. Конструктивно они выполнены в виде нескольких стоек, включая периферийные устройства. Для установки этих машин требуется достаточно большое помещение, оборудованное кондиционером воздуха. Обслуживание таких машин трудоемко. Их производительность – сотни тысяч и десятки миллионов операций в секунду. К большим ЭВМ относятся машины семейства System 360/370 фирмы IBM, советские БЭСМ-6, ЕС ЭВМ и другие машины первого, второго и третьего поколений. Современный представитель больших ЭВМ – компьютеры семейства System 390 фирмы IBM.
Однако для некоторых приложений производительность больших ЭВМ оказывается недостаточной. Это обстоятельство привело к созданию суперЭВМ
. Они имеют большие габариты, требуют для своего размещения специальных помещений, принудительного охлаждения и весьма сложны в обслуживании. Их производительность – более миллиарда операций в секунду. В архитектурах суперЭВМ имеются принципиальные отличия от классической модели ЭВМ фон Неймана. Несмотря на большую стоимость суперЭВМ, эти компьютеры являются стратегическим товаром, и потребность в них постоянно растет. СуперЭВМ используются для решения особенно сложных научнотехнических задач, задач обработки больших объемов информации в реальном масштабе времени, поиска оптимальных решений в задачах планирования, автоматического проектирования сложных объектов. Наиболее известными среди зарубежных суперЭВМ являются компьютеры семейств Cray и Cyber американских фирм Cray Research и CDC. Так, например, суперЭВМ Cray-3 имела производительность 16 млрд операций в секунду. Отечественная суперЭВМ – это мультипроцессорный вычислительный комплекс "Эльбрус" (главный конструктор Б. А. Бабаян) с суммарным быстродействием более 1 млрд операций в секунду. Почти все современные суперЭВМ выпускаются в США и Японии, самые мощные из них уже имеют производительность более одного триллиона операций в секунду.
Появление мини-ЭВМ
на рубеже 60-х – 70-х годов было обусловлено, с одной стороны, прогрессом в области элементной базы, а с другой – избыточностью ресурсов больших ЭВМ для решения многих прикладных задач. К малым, или средним, ЭВМ часто относят машины, которые являются менее мощными по сравнению с мэйнфреймами и вместе с тем более мощными, чем микроЭВМ и ПЭВМ. Малые ЭВМ используются как для управления технологическими процессами, так и для обслуживания нескольких пользователей. Они конструктивно выполнены в виде одной или нескольких малогабаритных стоек (без учета периферийных устройств) и имеют более низкие по сравнению с большими ЭВМ быстродействие и стоимость. ЭВМ этого класса не требуют специально оборудованных помещений. Наиболее популярными мини-ЭВМ были машины семейств PDP-11 и VAX-11 фирмы DEC (США), а также их отечественные аналоги СМ-1420 и СМ-1700 Системы малых ЭВМ (СМ ЭВМ). Производительность наиболее мощных современных мини-ЭВМ сопоставима с производительностью больших ЭВМ; к ним относятся, например, машины семейства AS/400 фирмы IBM.
В середине 70-х годов появляется еще один класс ЭВМ – микроЭВМ
. Один из основных отличительных признаков микроЭВМ – наличие микропроцессора. Появление высокопроизводительных микропроцессоров Pentium Pro и Xeon (Intel), PowerPC (IBM-Motorola-Apple), Alpha (DEC), SPARC (Sun Microsystems), PA-RISC (Hewlett-Packard), R10000 (MIPS), Athlon и Thunderbird (AMD) позволило создать модели микроЭВМ с очень высокими параметрами производительности. Представителями таких мощных компьютеров являются, например, рабочие станции и сетевые серверы фирм Sun Microsystems и Silicon Graphics.
Области применения микроЭВМ чрезвычайно многообразны и широки. Среди микроЭВМ можно выделить четыре вида: многопользовательские, автоматизированные рабочие места (АРМ), встроенные и персональные.
Многопользовательские микроЭВМ оборудованы несколькими видеотерминалами и предназначены для одновременного обслуживания нескольких пользователей. Они выполняются в виде одной малогабаритной стойки либо в настольном варианте.
АРМ, или рабочая станция, представляет собой ЭВМ, оборудованную техническими и программными устройствами, необходимыми для выполнения работ определенного типа. Существуют как настольные АРМ, так и АРМ, выполненные в виде малогабаритной стойки.
Встроенные микроЭВМ, к которым относятся и промышленные компьютеры
, представляют собой вычислители, используемые для управления техническими объектами, технологическими процессами и для обработки результатов измерений. Конструктивно они выполняются в виде одной или нескольких плат, обеспечивают узкий набор вычислительных функций и функций взаимодействия с пользователем. К встроенным микроЭВМ относятся и однокристальные
микроЭВМ, предназначенные для решения простых задач управления техническими объектами. Такая микроЭВМ содержит в одном корпусе микросхемы центральный процессор, оперативную память, постоянную память для программ, схемы управления вводом-выводом данных и другие вспомогательные устройства. МикроЭВМ, установленные на подвижном техническом объекте, называются бортовыми
.
Персональная микроЭВМ – это универсальная однопользовательская вычислительная машина. Современные микроЭВМ чаще всего представлены в виде персональных ЭВМ.
Но наиболее массовый и дешевый тип персональной микроЭВМ – это микрокалькуляторы
. Первый электронный калькулятор был создан в США в 1963 году. Он был собран на дискретных транзисторах и имел размеры кассового аппарата. Четыре года спустя фирма Texas Instruments (США) выпустила первый калькулятор на интегральных микросхемах. Серийное производство отечественных микрокалькуляторов семейства "Электроника" началось в 1974 году. Существует три основных разновидности микрокалькуляторов:
- простые микрокалькуляторы, предназначенные для выполнения четырех основных арифметических действий;
- инженерные микрокалькуляторы, выполняющие обычные
арифметические операции и вычисление некоторых математических функций;
- программируемые микрокалькуляторы, которые обладают всеми возможностями простых и инженерных вычислителей и могут в автоматическом режиме выполнять последовательность заранее введенных команд. Самые совершенные программируемые микрокалькуляторы позволяют составлять программы на языке программирования высокого уровня, например на Бейсике.
Современная ЭВМ – это сложная техническая система, состоящая из совокупности механических, электронных и электротехнических устройств. Любая ЭВМ с архитектурой фон Неймана имеет в своем составе, как правило, следующие составные части (рис. 1.2):
– центральный процессор (ЦП), включающий в себя регистры, арифметико-логическое устройство (АЛУ) и устройство управления;
– устройства памяти;
– устройства ввода информации; – устройства вывода информации.
Эти части соединяются в единое целое каналами связи, по которым передаются информация и управляющие сигналы. Стрелками на схеме показаны пути и направления движения информации.
Устройства памяти служат для приема информации от других устройств, ее хранения, а также для передачи информации в другие устройства ЭВМ. Память большинства ЭВМ состоит из двух частей: основной и внешней.
Основная память современных ЭВМ строится на полупроводниковых элементах и включает в себя оперативные и постоянные запоминающие устройства (ОЗУ, ПЗУ). ОЗУ может хранить информацию, когда ЭВМ работает. ПЗУ является энергонезависимым: информация в нем сохраняется и при выключении ЭВМ. Устройства внешней памяти чаще всего строятся на магнитных и оптических носителях информации.
Память ЭВМ характеризуется двумя главными параметрами: емкостью и быстродействием. Память разбивается на фиксированные участки малого размера, называемые ячейками
. Номер такой ячейки называется адресом памяти
. Объем памяти ЭВМ измеряется в байтах, каждый байт состоит из восьми двоичных разрядов – битов. Информация в оперативной памяти существует, только когда ЭВМ работает. При выключении ЭВМ содержимое оперативной памяти исчезает. Постоянные запоминающие устройства и внешняя память позволяют хранить информацию сколь угодно долгое время.
Рис. 1.2. Классическая структура ЭВМ
Арифметико-логическое устройство процессора выполняет переработку информации, над которой могут производиться как арифметические, так и логические операции. В каждой операции участвуют несколько специальных ячеек памяти, находящихся внутри самого процессора и называемых регистрами
. Во время работы АЛУ вырабатывает также управляющие сигналы, необходимые для управления работой процессора и других частей ЭВМ.
Разрядность регистров (8, 16, 32, 64 и более бит) является одной из главных характеристик процессора ЭВМ. Другой важной характеристикой процессора является максимальный объем адресуемой памяти. Так, например, самые массовые микропроцессоры для ПЭВМ Pentium III и Celeron фирмы Intel имеют 32-разрядные регистры, а максимальный объем адресуемой ими основной памяти составляет 64 Гбайта.
Устройство управления процессора управляет процессом работы ЭВМ. Оно содержит микропрограммы работы процессора и работает в соответствии с заданной программой, состоящей из последовательности команд процессора. Для выполнения программы ее нужно поместить в оперативную память, а затем инициировать выполнение первой команды. Команды в оперативной памяти располагаются последовательно, одна за другой.
Программа на машинном языке состоит из последовательности двоичных чисел. В зависимости от назначения эти числа могут интерпретироваться либо как команда процессора, либо как адрес ячейки памяти, либо как данные. Команды, адреса и данные хранятся одинаково в единой области памяти.
Устройства ввода служат для ввода в память программ и данных. Устройства вывода предназначены для вывода результатов вычислений и приведения этих результатов в удобную для пользователя форму.
История сетей ЭВМ начинается в 60-х годах. Первая локальная сеть ЭВМ была разработана в 1964 году в Ливерморской лаборатории (США). В январе 1969 года в США была запущена первая глобальная сеть, которая связала между собой четыре компьютера в разных концах страны. Этот проект разрабатывался начиная с 1968 года, Агентством по перспективным исследованиям в рамках исследований Министерства обороны США. Эта сеть получила наименование ARPA, или ARPANET. Сеть ARPA стала развиваться и в 1971 году она уже насчитывала 15 узлов. В 1973 году сеть стала международной, связав компьютеры разных стран. Таким образом, сеть ARPA стала прародительницей всех современных глобальных компьютерных сетей, в том числе и Internet
.
Технология сетей ЭВМ является одной из интенсивно развивающихся отраслей информатики. Большую роль в распространении сетевых технологий сыграли соответствующие международные стандарты, разработанные Международной организацией по стандартизации (ISO), Международным телекоммуникационным союзом (ITU), Международным институтом инженеров в области электротехники и электроники (IEEE), Американским национальным институтом стандартов (ANSI), Европейской ассоциацией производителей компьютеров (ECMA).
Если большие ЭВМ, к которым подключено множество терминалов (терминал – дисплей с клавиатурой) для одновременного обслуживания многих пользователей в режиме разделения времени, используют принципы, концентрации и централизации вычислительных ресурсов для обеспечения высокой производительности и технико-экономической эффективности, то сети ЭВМ предоставляют пользователям распределенную обработку информации и находят источники эффективности в преимуществах децентрализации. Это стало возможным благодаря появлению мини- и микроЭВМ, значительному снижению их стоимости, повышению надежности компьютерной аппаратуры и удешевлению затрат на ее техническое обслуживание. В этой связи удельная обработка информации ("на местах") оказалась экономически оправданной.
В общем случае под сетью ЭВМ подразумевается группа вычислительных машин, соединенных между собой при помощи специальной аппаратуры, обеспечивающей обмен данными между любыми машинами данной группы. Компьютер, подключенный к сети, образует узел сети
и обычно называется абонентской
станцией
. Некоторые компьютеры используются как управляющие центры в сети или как концентраторы данных, и их обычно называют серверами
.
По сравнению с адекватной по вычислительной мощности совокупностью автономно работающих ЭВМ сеть имеет ряд следующих преимуществ:
- обеспечение распределенной обработки больших массивов данных и параллельной обработки многими ЭВМ;
- возможность создания объемных распределенных баз данных, размещаемых в памяти многих ЭВМ;
- возможность обмена большими массивами информации между ЭВМ, удаленными друг от друга на значительные расстояния;
- коллективное использование дорогостоящих программных (библиотек программ и баз данных) и аппаратных ресурсов (запоминающих, печатающих, телекоммуникационных и других устройств);
- предоставление большего перечня услуг: доступ к файловым серверам и электронным доскам объявлений (BBS), обмен файлами, электронная почта
(E-Mail), телеконференции, дистанционное обучение и многое другое;
- повышение эффективности использования средств вычислительной техники за счет более интенсивной и равномерной их загрузки, а также повышение надежности обслуживания запросов пользователей;
- возможность оперативного перераспределения вычислительных мощностей между пользователями сети в зависимости от изменения их потребностей, а также резервирования этих мощностей и средств передачи данных на случай выхода из строя отдельных элементов сети;
- сокращение расходов на приобретение и эксплуатацию средств вычислительной техники за счет коллективного их использования;
- облегчение работ по совершенствованию технических, программных и информационных средств.
Сети ЭВМ характеризуются многими техническими параметрами. Основными классификационными признаками сетей ЭВМ являются:
• размеры обслуживаемой территории (локальные, региональные, глобальные сети);
• максимальное количество ЭВМ или пользователей, которые могут одновременно работать в сети;
• скорость передачи информации между узлами сети;
• топология сети – конфигурация линий связи, проложенных между узлами сети ("магистраль", звезда", "кольцо", "дерево" или их композиции);
• организация канала связи (сети коммутации каналов, сообщений, пакетов и интегральные);
• наличие или отсутствие центрального управления в сети (сети одноранговые или с выделенным сервером);
• метод доступа компьютеров к сети (временное разделение, предупреждение или разрешение конфликтов);
• виды используемых линий связи (выделенная или арендуемая телефонная линия, прямое кабельное соединение, радиоэфир и другие);
• тип используемого сетевого программного обеспечения и степень его однородности (гомогенные и гетерогенные сети);
• тип протокола связи – совокупность правил, регламентирующих формат и процедуры обмена информацией между узлами сети.
Каналами связи в глобальных сетях служат в основном телефонные линии. Так как по телефонным линиям могут передаваться в основном сигналы с частотой звукового диапазона, необходимо обеспечить преобразование цифровых сигналов, используемых от ЭВМ, в сигналы звуковой частоты. Преобразование цифровой информации в аналоговую форму (процесс модуляции) и обратно (процесс демодуляции) производится специальным устройством – модемом
(мо
дулятор–дем
одулятор). При передаче информации в локальных сетях ЭВМ не требуется преобразование ее из цифровой формы в аналоговую и наоборот. Поэтому информация в локальных сетях передается непосредственно в цифровом виде по кабелям.
Широкую популярность в компьютерном мире получили локальные сети ПЭВМ, имеющие магистральную (шинную) топологию, использующие сетевую аппаратуру, совместимую со стандартами Ethernet, и работающие под управлением сетевых операционных систем из семейств NetWare, Windows NT или UNIX. В качестве линий связи в локальных сетях используются коаксиальные кабели, кабели из витых проводов и оптоволоконные кабели.
Особое место в компьютерном мире занимает международная глобальная компьютерная сеть Internet
, которая стала началом новой эпохи в информатике. В основе сети – система серверов, связь между которыми обеспечивается общедоступными каналами связи (телефонными, спутниковыми и другими). Интенсивное развитие Internet
началось с 1989 года после создания технологии "всемирной информационной паутины" WWW (World Wide Web), а с 1995 года начался настоящий бум Internet
, превративший эту сеть в самое крупное, динамичное, доступное и универсальное средство массовой коммуникации. Internet
– это самый массовый и оперативный источник информации, крупнейший в мире источник развлечений, средство общения, пространство для бизнеса, инструмент для рекламы, а также необъятное поле для творчества.
В настоящее время Internet
объединяет более 30 млн постоянно подключенных к ней компьютеров, а число WWW-серверов превышает 2,5 млн. В 2000 году число пользователей Internet
во всем мире оценивалось более чем 140 млн человек. Примерно 75 млн из этих пользователей проживает в США и Канаде, 32 млн – в Европе, 24 млн – в Японии, 9 млн – в странах ЮгоВосточной Азии. Число российских пользователей Internet
в 2000 году оценивалось в 6 млн человек, а количество подключенных к сети российских компьютеров – более 2,5 млн.
Конец ХХ века по праву можно назвать эрой персональных компьютеров. Определение персональных компьютеров изначально было в большой степени расплывчато, так как эти компьютеры обладают целым рядом отличительных свойств и новых потребительских качеств, отсутствующих у их предшественников. Для уточнения этого определения в статье американских специалистов в области электронной техники Х. Тунга и А. Гупты, опубликованной в 1982 году, было сформулировано семь требований, предъявляемых к персональным компьютерам:
1) невысокая стоимость, сопоставимая со средней заработной платой и стоимостью сложной бытовой техники;
2) наличие периферийных устройств, необходимых для ввода-вывода и хранения значительных объемов информации;
3) наличие аппаратных ресурсов, достаточных для решения реальных задач (в частности, достаточной емкости памяти и вычислительной мощности процессора);
4) поддержка языков программирования высокого уровня, например
Бейсика, Паскаля, Си;
5) наличие операционной системы, которая способна поддерживать диалоговое общение, что упрощает взаимодействие пользователя с компьютером;
6) "дружественность" по отношению к пользователю, подразумевающую простоту в общении с компьютером, сопоставимую с простотой использования бытовой техники, и наличие широкой сети сбыта компьютеров;
7) достаточный универсализм, необходимый для решения широкого круга прикладных задач.
История развития ПЭВМ неразрывно связана с успехами в области микроэлектроники. В 1971 году фирма Intel изготовила первый в мире 4разрядный микропроцессор 4004. В 1972 году был выпущен микропроцессор 4040, в 1973 году – первый 8-разрядный микропроцессор 8008. В 1974 году фирма Intel выпустила усовершенствованный вариант 8080, который до начала 80-х годов стал фактическим стандартом для микрокомпьютерной индустрии.
Историю ПЭВМ принято отсчитывать от 1975 года, когда в США появилась первая коммерчески распространяемая микроЭВМ фирмы MITS с поэтическим названием "Альтаир-8800", построенная на основе микропроцессора 8080. Хотя возможности новой микроЭВМ были весьма ограничены и продавалась она как набор готовых плат и узлов, ее появление в компьютерном мире было встречено с большим энтузиазмом. В первые же месяцы было продано несколько тысяч комплектов. Пользователи "Альтаира" стали ее усовершенствовать, снабжая дополнительными устройствами. В том же 1975 году Билл Гейтс и Пол Аллен, ставшие впоследствии основателями крупнейшей фирмы по производству программных продуктов Microsoft, создали для "Альтаира" систему программирования на языке Бейсик, что позволило пользователям легко общаться с компьютером и разрабатывать для него программы. Все это также способствовало популярности первых персональных микроЭВМ.
Успех фирмы MITS, сегодня уже не существующей, заставил многие фирмы заняться производством ПЭВМ. К началу 80-х годов спрос на них возрос до сотен тысяч штук в год, они стали продаваться в полной комплектации, для них стали разрабатываться коммерчески распространяемые программы.
Следующая удачная модель ПЭВМ была создана в буквальном смысле
"на коленке" в гараже двумя молодыми американцами С. Возняком и С. Джобсом в 1976 году. Она получила название Apple-I. В 1977 году была изготовлена более совершенная модель Apple-II, оснащенная микропроцессором фирмы Motorola. Это был первый прообраз современного мультимедийного компьютера, который предоставлял возможности программирования цветной графики и звука. Компьютеры Apple-II оказались очень популярными в конце 70-х годов – их было продано порядка трех миллионов штук. В результате домашняя мастерская двух молодых людей превратилась в известную фирму Apple Computer. Отечественный аналог Apple-II выпускался под наименованием "Агат". Другими популярными моделями ПЭВМ в это время были TRS-80 и Osborne.
Первые ПЭВМ оснащались 8-разрядными микропроцессорами и по своим возможностям были еще далеки от профессиональных ЭВМ. Однако распространение ПЭВМ в конце 70-х годов привело к некоторому снижению спроса на большие и малые ЭВМ. Поэтому фирма IBM, ведущая компания по производству больших ЭВМ, решила попробовать свои силы и на рынке ПЭВМ. Разработки в этой области начались в 1980 году, причем решено было не конструировать новую ЭВМ "с нуля", а использовать блоки, изготовляемые другими фирмами. В качестве основного процессора был выбран новейший в то время 16-разрядный микропроцессор 8088 фирмы Intel, базовый объем оперативной памяти составлял 16 Кбайт с возможностью расширения до 64 Кбайт (впоследствии базовый объем памяти был увеличен до 64 Кбайт). В качестве внешних запоминающих устройств использовался односторонний 5дюймовый гибкий магнитный диск (дискета) емкостью 160 Кбайт и кассетный магнитофон. Видеосистема была построена на 12-дюймовом монохромном мониторе, отображающем только текстовую информацию.
12 августа 1981 года новая ПЭВМ под названием IBM PC (Personal Computer) была официально представлена публике, а примерно через два года она заняла ведущее место на компьютерном рынке, вытеснив модели ПЭВМ с 8-разрядными микропроцессорами. Поставки IBM PC в Европу начались в январе 1983 года.
В марте 1983 года появилась новая модель ПЭВМ фирмы IBM – PC/XT (eXtended Technology). Этот компьютер уже был оснащен накопителем на жестких магнитных дисках (НМЖД) емкостью 10 Мбайт и цветной видеосистемой, работающей в текстовом и графическом режимах. В том же году фирма Apple выпустила новые модели ПЭВМ – Apple-IIe и Lisa.
В 1984 году IBM выпускает компьютер PC/AT (Advanced Technology), построенный на новом, более производительном микропроцессоре Intel-80286 (выпущен в 1982 году). С тех пор компьютеры PC/AT фактически стали стандартом абсолютного большинства ПЭВМ. Уже в 1982 году фирма Columbia Data Products выпустила первую IBM-совместимую ПЭВМ и тем самым прекратила монополию фирмы IBM на производство своих ПЭВМ. Сегодня IBM-совместимые ПЭВМ составляют более 90% всех производимых в мире персональных компьютеров. Сама фирма IBM в 1987 году прекратила производство компьютеров PC/XT/AT и начала выпускать другое семейство ПЭВМ – PS/2 (Personal System/2), отличающееся по архитектуре от IBM PC.
Продолжать развитие линии IBM PC/XT/AT стали другие изготовители вычислительной техники, используя 32-разрядные микропроцессоры семейств 80386, 80486, Pentium фирмы Intel, а также аналогичные микропроцессоры фирм AMD, Cyrix, UMC, IDT, VIA и других производителей. Удельный вес продукции Intel на рынке микропроцессоров в 2000 году составил более 75%, AMD – около 24%. Мировыми лидерами по производству готовых ПЭВМ в настоящее время являются фирмы Compaq, Dell, Hewlett-Packard, IBM, NEC, Gateway, Acer, Packard Bell, Toshiba.
Конкуренцию монополии IBM-совместимых компьютеров составляют ПЭВМ семейства Macintosh фирмы Apple Computer, которая развивает свою собственную линию архитектуры ПЭВМ. Первый компьютер Macintosh был выпущен в 1984 году и уже был оснащен 32-разрядным микропроцессором (раньше, чем IBM PC). Именно на компьютерах Macintosh впервые стали широко применяться графические средства общения с пользователем и манипулятор "мышь", ставшие неотъемлемым атрибутом всех современных ПЭВМ. Компьютеры фирмы Apple наиболее успешно применяются как учебные и бытовые ПЭВМ.
Оригинальными моделями ПЭВМ, несовместимыми с продукцией фирм IBM и Apple и выпускавшимися в 80-х годах, были компьютеры семейств PET и Amiga фирмы Commondore, Atari и ABAQ фирмы Atari, ZX Spectrum фирмы Sinclair Research, Apricot фирмы Kwest. Но эти машины в качестве профессиональных практически не использовались и были заметны только на рынках бытовых и учебных компьютеров.
Когда в конце сороковых годов ХХ века только появились первые ЭВМ, мало кому приходило в голову, что в конце тысячелетия это будет самый продаваемый товар. В этой связи будет интересно вспомнить широко известную фразу бывшего президента фирмы IBM Томаса Уотсона, который в 1948 году заявил: "Миру нужна разве что дюжина компьютеров". Серийное производство ЭВМ началось в начале 50-х годов, и их парк стал увеличиваться стремительными темпами. Если в 1952–1953 годах число ЭВМ исчислялось десятками, то в 1965 году во всем мире использовалось около 40 тысяч ЭВМ, в 1970 году – свыше 100 тысяч, в 1975 году – более 200 тысяч.
Только в 1996 году в мире было продано около 70 млн персональных компьютеров, в том числе в США – 26,5 млн, и с каждым годом объемы выпуска компьютеров неуклонно растут. Начиная с 1996 года, в России каждый год продается более 1 млн персональных компьютеров. По сравнению с США и странами Западной Европы эта величина не очень большая, но с учетом состояния отечественной экономики этот объем продаж является значительным. Темпы роста объема продаж компьютеров в России в середине 90-х годов составили 25%, а в мире в целом – 16%. К началу 1996 года в мире насчитывалось около 200 млн персональных компьютеров, примерно 80% из них – это IBM-совместимые машины. Общее количество персональных компьютеров в России в 2000 году оценивалось в 7 млн.
Причинами столь грандиозного успеха IBM-совместимых ПЭВМ стали следующие факторы:
• невысокая стоимость;
• высокая надежность;
• высокая ремонтопригодность;
• низкие эксплуатационные издержки;
• возможность легкой модернизации компьютера в соответствии с требованиями по применению или с целью компенсации морального износа;
• простота пользования;
• высокие возможности по переработке информации;
• компактная конструкция;
• наличие развитой системы программного обеспечения, охватывающего практически все сферы человеческой деятельности.
Мощные ПЭВМ, объеденные в информационно-вычислительную сеть, способны обеспечить работу многих пользователей одновременно. В настоящее время стирается граница между ПЭВМ и АРМ: во-первых, технические характеристики ПЭВМ сопоставимы с техническими характеристиками АРМ и даже лучше; во-вторых, на базе ПЭВМ можно легко построить АРМ, снабдив ее специальным оборудованием и соответствующим программным обеспечением.
В основе громадной популярности компьютеров типа IBM PC лежит так называемый принцип открытой архитектуры
. Фирма IBM сделала свой компьютер не единым неразъемным устройством, а обеспечила возможность его сборки из независимо изготовленных частей подобно детскому конструктору. При этом методы сопряжения периферийных устройств с IBM PC не держались в секрете и были доступны всем желающим. Наибольшую выгоду от открытости архитектуры IBM PC получили пользователи, но при этом фирма IBM лишилась возможности пользоваться плодами успеха своего изобретения. В компьютерах IBM семейства PS/2 основные технические решения уже были защищены патентами, однако эти машины не стали такими же популярными, как PC XT/AT, несмотря на заложенные в них прогрессивные идеи.
Как же устроен IBM PC? Большинство таких ПЭВМ имеют настольное исполнение (типа desktop) и состоят из трех частей: системного блока, клавиатуры, осуществляющей ввод информации, и монитора (дисплея), отображающего текстовую и графическую информацию. Главным из перечисленных частей является системный блок, в нем располагаются все основные электронные узлы компьютера.
На основной электронной плате ПЭВМ, называемой системной платой
, размещаются только те устройства, которые выполняют вычисления: микропроцессор, устройства основной памяти и вспомогательные элементы. Схемы, управляющие периферийными устройствами, обычно выполнены на отдельных платах, которые вставляются в стандартные разъемы на системной плате. Питающие напряжения ко всем электронным схемам подводятся от общего блока питания. Все перечисленные устройства помещены в корпус, в котором также размещаются блок питания и устройства внешней памяти.
Значительное число ПЭВМ выпускаются и в портативном исполнении – типа laptop и notebook (наколенный и блокнотный). У этих машин системный блок, дисплей и клавиатура объединены в едином корпусе типа чемодана, при этом системный блок спрятан под клавиатурой, а дисплей сделан как крышка к клавиатуре. Еще более малыми размерами обладают карманные (pocket или handled) персональные компьютеры.
К системному блоку можно подключать дополнительные периферийные устройства, расширяя тем самым функциональные возможности ПЭВМ. Многие устройства подсоединяются через специальные кабели и разъемы, находящиеся на задней стенке системного блока, и поэтому называются внешними. Кроме монитора и клавиатуры такими устройствами являются:
• "мышь" – манипулятор, являющийся дополнительным к клавиатуре устройством ввода;
• джойстик – манипулятор в виде укрепленной на шарнире рукоятки с кнопками, употребляемый в основном для компьютерных игр и имитаторов;
• печатающее устройство (принтер);
• прочие внешние устройства – графопостроитель (плоттер), второй монитор, внешние устройства памяти, устройство ввода графической информации (сканер) и многие другие.
Некоторые устройства для ПЭВМ могут устанавливаться внутри системного блока. К ним обычно относятся:
• модем – устройство для обмена информацией с другими ЭВМ через телефонную сеть;
• сетевой адаптер – устройство для подключения ПЭВМ к локальной сети ЭВМ;
• устройство для работы с оптическими компакт-дисками (CD-ROM, CD-R, CD-RW, DVD-ROM). Такие устройства фактически стали обязательным атрибутом каждой современной ПЭВМ;
• накопитель на кассетной магнитной ленте (стример);
• накопитель на сменных магнитных и магнитооптических дисках большой емкости;
• звуковой адаптер – устройство, дающее возможность воспроизводить и записывать речь и музыку с помощью компьютера. К нему могут подключаться акустические системы, микрофон, электромузыкальные инструменты, джойстик. Такими устройствами оснащается большинство современных ПЭВМ;
• устройство (тьюнер) для приема радиовещательных или телевизионных сигналов, осуществляющее функции радиоприемника или телевизора.
По своим техническим параметрам и функциональным возможностям все ПЭВМ можно подразделить на три основные категории: профессиональные, бытовые, учебные. Распределение парка ПЭВМ по этим категориям в США в 90-х годах, где потребляется львиная доля персональных компьютеров, выглядит следующим образом: 56, 36 и 8% соответственно. В России из 7 млн ПЭВМ примерно 4,5 млн являются профессиональными.
Профессиональные ПЭВМ в зависимости от области применения в свою очередь можно подразделить на два характерных вида: для деловых приложений и для решения научно-технических задач. Наибольшее число установок ПЭВМ относится к деловой сфере (промышленность, торговля, транспорт, связь, государственное управление), где эффект от их внедрения наиболее значителен. Приведем далеко не полный список работ, которые можно делать с помощью ПЭВМ:
- подготовка текстовых документов;
- подготовка к изданию печатных изданий (газет, журналов, книг, рекламы);
- использование услуг глобальных и локальных сетей (электронная почта, информационно-поисковые системы);
- организация бухгалтерского учета и материальных ценностей;
- подготовка видеофильмов и демонстрационных программ;
- автоматизированное проектирование изделий и технологий;
- управление технологическими процессами;
- моделирование физических процессов;
- математические расчеты;
- создание и исполнение музыкальных произведений;
- создание автоматизированных измерительных установок.
Следующей по численности является группа бытовых ПЭВМ, используемых главным образом для электронных игр, хотя только играми область применения бытовых машин не ограничивается: они также широко используются для обучения детей и для работы на дому. Возрастание доли домашних ПЭВМ – одна из наиболее характерных тенденций мировой компьютерной индустрии. Например, уже в 1994 году около 40% семей в США и 15% семей в Западной Европе имели дома компьютеры. Предполагалось, что к 1999 году эта величина составит не менее 60 и 40% соответственно. Около половины из 20 млн проданных в 1995 году в США персональных компьютеров приходилось на долю домашних.
Процент "компьютеризации" российского населения существенно ниже, чем на Западе. По различным оценкам в России в 1995 году из 1,2 млн проданных ПЭВМ на долю домашних пришлось 15-20%, при этом общее количество бытовых ПЭВМ оценивается в 300-500 тыс. штук. При этом и в России отмечается устойчивая тенденция роста приобретений ПЭВМ для домашнего использования. К началу 2001 года доля российских семей, имеющих компьютер в личном пользовании, оценивалась в 5%.
По количеству установленных ПЭВМ сфера образования имеет невысокий удельный вес, но использование персональных компьютеров для обучения имеет исключительно большие перспективы. Однако до сих пор еще существует целый ряд нерешенных проблем (стратегических, технических, дидактических, психологических и экономических), связанных с компьютеризацией обучения. Тем не менее, уже сегодня ясно, что электронный и традиционный учебники будут использоваться наравне друг с другом. Развитие глобальных сетей ЭВМ и особенно международной сети Internet
вносит новые формы дистанционного обучения и образования.
Социальные последствия от внедрения ПЭВМ велики и заключаются в следующем:
• резкое увеличение творческого содержания человеческой
деятельности;
• нереализуемые ранее возможности распространения знаний и информации посредством сетей ПЭВМ;
• уменьшение роли непосредственного человеческого общения, как на работе, так и в быту;
• повышение уровня сервиса в непроизводственной сфере и сфере
услуг;
• всесторонний контроль и фиксация результатов профессиональной деятельности;
• "раскрепощение" творческой деятельности, в частности, отсутствие необходимости работать на рабочем месте.
По-видимому, уже никакие силы никогда не заставят пользователей отказаться от персонального компьютера на своем рабочем месте.
Все ЭВМ являются исполнителями программ. Под программой понимают описание, воспринимаемое ЭВМ и достаточное для решения определенной задачи. Совокупность программ для ЭВМ называется программным обеспечением
(ПО). В более широком смысле в состав программного обеспечения кроме самих программ включают языки программирования, процедуры, правила и документацию, необходимые для использования и эксплуатации программных продуктов.
В настоящее время для разных типов ЭВМ разработаны сотни тысяч программ, которые могут быть разделены на следующие основные классы:
• базовое, или встроенное, ПО;
• системное ПО, включающее операционные системы (ОС) и сервисные программы (утилиты);
• системы программирования;
• прикладное программное обеспечение.
Базовое ПО
обеспечивает непосредственное управление аппаратурой ЭВМ. Программы этого класса обычно размещаются в постоянной памяти ЭВМ и начинают свою работу сразу после включения компьютера.
Операционные системы
дополняют аппаратные средства любой ЭВМ, позволяя прикладным программам обращаться к устройствам ЭВМ, а пользователю – управлять работой машины. Сервисные программы дополняют функции операционных систем. С их помощью производятся такие работы, как диагностирование и тестирование аппаратуры ЭВМ, настройка устройств ЭВМ на максимальную производительность, подготовка к работе магнитных носителей информации, перенос информации с одного носителя на другой, засекречивание и рассекречивание конфиденциальной информации, обеспечение связи с вычислительной сетью, борьба с компьютерными вирусами и многие другие.
С помощью систем программирования
создаются все программы. Система программирования – это совокупность языка программирования и программных средств, предназначенных для создания программ для ЭВМ. В состав системы программирования входят транслятор, редакторы связей (компоновщик), библиотеки стандартных подпрограмм, программа-отладчик, справочные и обучающие подсистемы, текстовый редактор и другие компоненты, помогающие программисту в разработке программ.
Прикладные программы
обращены к пользователям, которые не обязаны уметь программировать или даже знать устройство ЭВМ. Цель прикладных программ заключается в том, чтобы с помощью ЭВМ решать свои профессиональные задачи, обучаться чему-либо, проводить свой досуг, играя в компьютерные игры.
Многие прикладные программы имеют общий характер, как, например, редакторы текстовой и графической информации, системы управления базами данных (СУБД). Другие прикладные программы ориентированы на автоматизацию конкретных видов деятельности: это, например, обучающие системы, системы проектирования изделий и технологий, бухгалтерские системы и другие.
Операционные системы ЭВМ обеспечивают выполнение двух главных задач: 1) управление вычислительными процессами, происходящими внутри ЭВМ и 2) предоставление пользователю средств общего управления ЭВМ.
В рамках первой задачи операционная система осуществляет взаимодействие всех программ с устройствами ЭВМ и друг с другом, распределение ресурсов ЭВМ (процессора, памяти, периферийных устройств) между программами, выявление различных событий, возникающих в процессе работы машины, и соответствующей реакции на них. Общее управление ЭВМ осуществляется на основе командного языка.
Операционные системы для микроЭВМ и ПЭВМ содержат следующие основные программные компоненты:
- файловую подсистему;
- драйверы периферийных устройств; -процессор командного языка.
Файловая подсистема и драйверы периферийных устройств в совокупности образуют ядро
операционной системы. В ядро входят также программы управления вычислительными процессами и оперативной памятью.
Файловая подсистема
– это хранилище программ и данных, организованное чаще всего на магнитных и оптических дисках. Файл
(file – папка для бумаг) – это поименованная совокупность данных, располагающаяся во внешней памяти ЭВМ и имеющая определенную внутреннюю структуру. Сведения о каждом файле, расположенном на магнитном или оптическом диске, сосредоточиваются в каталоге. Каталог доступен пользователю через командный язык операционной системы: его можно просматривать, добавлять в него новые файлы и удалять из него ненужные файлы. Каталог может иметь собственное имя и храниться в другом каталоге наряду с обычными файлами; так образуются иерархические (древовидные) файловые структуры.
Любая прикладная программа также имеет доступ к файловой подсистеме, для чего во всех языках программирования предусмотрены специальные процедуры. Файловая подсистема является достаточно крупной составной частью операционных систем ЭВМ.
Поддержка широкого набора периферийных устройств ЭВМ – одна из важнейших функций операционной системы. Осуществляется эта функция с помощью драйверов
(driver – водитель, шофер) – специальных программ, ориентированных на управление периферийными устройствами. Каждому типу устройства соответствует свой драйвер. Драйверы стандартных устройств ПЭВМ – монитора (дисплея), клавиатуры, дисковых накопителей, печатающего устройства, коммуникационных портов – образуют в совокупности базовую систему ввода-вывода
(BIOS, БСВВ). В IBM-совместимых ПЭВМ программы БСВВ заносятся в ПЗУ системной платы. Драйверы дополнительных устройств подключаются к операционной системе динамически при запуске ПЭВМ. Кроме этого, при запуске машины специальные программы БСВВ производят тестирование всех устройств ПЭВМ, и если тестирование завершается успешно, происходит запуск операционной системы.
Во всякой операционной системе имеется командный язык
, который позволяет выполнять управляющие действия: манипулировать магнитными дисками, каталогами и файлами, устанавливать режимы работы ЭВМ, получать информацию о текущем состоянии машины. Обозначение команды отражает, как правило, ее функциональное назначение: например, команда COPY означает копирование файла с одного носителя на другой; DIR – просмотр каталога магнитного диска; DATE и TIME – установку текущей даты и времени на часах компьютера; FORMAT – подготовку к работе магнитного диска.
Анализ и исполнение команд, включая загрузку готовых программ из файлов в оперативную память и их запуск, осуществляются специальной программой – командным процессором
.
Кроме ввода отдельных команд, которые немедленно выполняются, командный процессор предоставляет возможность составления целых программ, составленных из директив командного языка. Такая программа позволяет задать сложную последовательность управляющих действий, не прибегая к обычному языку программирования.
Однако пользователи, работающие с ПЭВМ, редко пользуются непосредственно командным языком. Они используют так называемые программы-оболочки, или программы-проводники, упрощающие задание общеупотребительных управляющих действий и предоставляющие ряд дополнительных услуг. Программы-оболочки обычно обеспечивают работу с файлами и каталогами, просмотр и редактирование файлов, запуск на выполнение программ, выдачу информационных сообщений о состоянии устройств компьютера, создание пользовательских меню для упрощения запуска часто используемых программ.
Наибольшее распространение на IBM-совместимых ПЭВМ получили операционные системы фирмы Microsoft MS-DOS и Windows, а также операционные системы фирмы IBM PC-DOS и OS/2. Наиболее популярной операционной оболочкой для ПЭВМ являются Norton Commander (авторы – Питер Нортон и Джон Соча) и ее многочисленные клоны.
Современная технология программирования строится на том, что программа решения некоторой задачи на ЭВМ описывается на языке, достаточно близком к естественной формулировке задачи и алгоритма ее решения. Но процессор ЭВМ непосредственно может исполнить только последовательность машинных команд. Структура машинной команды обычно содержит две части: код операции и адресную часть, указывающую на адреса ячеек памяти, в которых хранятся значения операндов, с которыми надо выполнить заданную арифметическую или логическую операцию. операндов Каждая конкретная команда может иметь различное количество операндов либо не иметь ни одного. Коды операций и адреса операндов представляются в виде чисел, записанных в какой-либо системе счисления, чаще в всего в шестнадцатеричной. Совокупность кодов операций процессора конкретной ЭВМ образует ее машинный язык.
Например, для микропроцессоров семейства 80x86, на основе которых построены все IBM-совместимые ПЭВМ, двоичный и шестнадцатеричный коды операции сложения содержимого регистров AX и BX на машинном языке имеют вид
00000011110000112
или 030С16
,
а коды операции вычитания из содержимого регистра AX содержимого регистра BX – вид
00101011110000112
или 2BC316
.
Все многообразие команд процессоров ЭВМ по своему функциональному назначению можно разделить на пять групп:
• пересылки информации между ячейками основной памяти и
регистрами процессора;
• арифметические операции (сложения, вычитания, умножения, деления и другие);
• логические операции (сравнение операндов и аналогичные); ветвления алгоритма (условного и безусловного переходов); специальные (останов процессора, сигнал прерывания и другие).
Программирование в машинных кодах является трудоемким процессом, характерным для начального этапа развития ЭВМ. В настоящее время такие программы составляются редко и преимущественно для специальных управляющих ЭВМ.
В процессе развития вычислительной техники стала очевидной возможность автоматизации получения программ. Основная идея автоматизации программирования состоит в разработке специальных искусственных языков, предназначенных для удобного и точного описания алгоритмов для ЭВМ. Но в отличие от естественных языки программирования должны быть строгими, позволяющими однозначно преобразовывать написанную на нем программу в программу на машинном языке. Автоматическое преобразование текста программы, написанной на языке программирования, в эквивалентный ему по смыслу текст на машинном языке, называется трансляцией
. Программа, осуществляющая трансляцию, получила название транслятора
.
В настоящее время существует и в той или иной степени используется несколько десятков языков программирования, предназначенных как для решения практически любых задач обработки информации (универсальные языки программирования), так и для решения какого-то узкого класса задач (специализированные языки программирования).
С другой стороны, все многообразие языков программирования фактически сводится к двум большим классам: машинно-ориентированных языков (низкого уровня) и машинно-независимых языков (высокого уровня).
Машинно-ориентированным языком является язык ассемблера
, операторы которого являются непосредственным отображением команд процессора конкретной ЭВМ. Язык ассемблера появился в 1950 году. Для написания операторов ассемблера используются не числовые, а мнемонические коды команд процессора ЭВМ, а для указания адресов операндов – не физические, а символические адреса ячеек памяти. При трансляции каждый оператор ассемблера преобразуется в одну машинную команду.
При программировании на ассемблере пользователь имеет доступ практически ко всем возможностям ЭВМ. Программы, написанные на этом языке, обычно бывают короче и выполняются быстрее, чем программы, написанные на языке высокого уровня. Ассемблером чаще всего пользуются для написания программ операционных систем ЭВМ. В то же время ассемблер является наиболее трудоемким языком программирования и требует от программиста глубоких знаний принципов работы ЭВМ. Пример
. Операторы ассемблера.
Const |
EQU |
1024 |
; объявление константы |
Cacl |
PROC |
; объявление подпрограммы |
metka: |
MOV |
AX,data |
; пересылка информации |
CALL |
Calc |
; вызов подпрограммы |
CMP |
AL,1 |
; команда сравнения |
JMP |
error |
; переход на метку |
ADD |
data,AX |
; команда сложения |
SUB |
CX,2 |
; команда вычитания |
MUL |
AX,16 |
; команда умножения |
DIV |
DX,2 |
; команда деления |
LOOP |
metka |
; команда цикла |
INT |
21H |
; вызов прерывания |
error: |
RET |
; выход из подпрограммы |
Языки программирования высокого уровня позволяют программисту абстрагироваться от конкретных свойств и характеристик ЭВМ, что способствует повышению производительности труда программиста, улучшению наглядности программы, облегчению ее модифицируемости и переносимости на другие ЭВМ. На ПЭВМ используются несколько наиболее популярных универсальных языков: Бейсик, Фортран, Паскаль, Си.
Язык Фортран (FORTRAN) является одним из самых старых языков программирования высокого уровня. Первые версии языка были разработаны сотрудником фирмы IBM Джоном Бэкусом в 1956-х году. Язык предназначен для программирования научно-технических задач исследовательского характера и нашел широкое применение на больших и малых ЭВМ. Фортран оказал громадное влияние на развитие программного обеспечения ЭВМ. На ПЭВМ он также активно используется благодаря тому, что для него накоплены обширные библиотеки стандартных подпрограмм. Наиболее популярными версиями языка являются Фортран-4 и Фортран-77.
Язык Бейсик (BASIC) был разработан в 1964 году сотрудниками Дартмутского колледжа Джоном Кемени и Томасом Куртцом (США). Бейсик одним из первых стал использоваться на микроЭВМ и ПЭВМ. Широкое распространение языка объясняется его простотой и наличием средств диалога с пользователем. В настоящее время существует довольно много реализаций этого языка, но наиболее популярны версии Бейсика для операционных систем MS-DOS и Windows. Бейсику отводится ведущая роль в образовании как языку обучения программирования.
Язык Паскаль (PASCAL) был разработан в 1969–1971 годах профессором Цюрихского технологического института Никлаусом Виртом как классический язык для обучения студентов программированию, но через некоторое время нашел широкое применение для решения сложных задач. Язык имеет четкое построение и позволяет работать с данными сложной структуры, снабжен средствами для реализации принципов модульного программирования.
Язык Си (С) был разработан в 1972 году американскими программистами Р. Керниганом и Д. Ричи, сотрудниками фирмы Bell Laboratories как инструмент для создания системных программ. Так, например, язык Си применялся при разработке операционных систем UNIX, MS-DOS, Windows. В языке имеются гибкие средства для эффективного использования аппаратуры ЭВМ. Порождаемые языком Си машинные программы компактны и имеют высокое быстродействие. Однако язык Си не имеет такого строгого построения, как Паскаль, что требует от программиста определенного навыка при составлении программ.
Отметим, что языки программирования Алгол (ALGOL, 1958) Кобол (COBOL, 1960), PL-1 (1964), которые были основными инструментами программистов в 60-х – 80-х годах, на ПЭВМ уже не получили такой популярности, как на больших и малых ЭВМ.
Широкое распространение среди программистов получили системы программирования для IBM-совместимых ПЭВМ, разработанные фирмами Borland International (Turbo Basic
, Turbo Pascal
, Turbo C
, Turbo C++
, Turbo Prolog
, Turbo Assembler
) и Microsoft (Quick Basic
, Quick Pascal
, Quick C
).
Все рассмотренные языки программирования ориентированы на реализацию процедурно-ориентированного
способа программирования. Программа на процедурном языке программирования состоит из последовательности операторов, задающих какие-либо действия. Основным оператором является оператор присваивания, служащий для изменения содержимого ячеек памяти. Однако во многих прикладных задачах существуют понятия, которые трудно представить в виде функции. Поэтому со второй половины 80-х годов получает распространение новая концепция разработки программ для ЭВМ, получившая название объектно-ориентированное программирование
. Концепция базируется на том, что для формализации алгоритма могут применяться объекты
– специальные структуры, объединяющие в себе данные и процедуры, которые производятся над этими данными. Объектно-ориентированный подход в программировании позволил значительно упростить разработку сложных программ. Первым популярным объектно-ориентированным языком программирования стал С++
, разработанный в 1983 году Бьѐрном Страуструпом из фирмы Bell Laboratories на основе стандарта языка Си и методологии объектно-ориентированного программирования. В дальнейшем на основе других популярных языков программирования был создан класс объектно-ориентированных языков и соответствующих систем программирования: Delphi
, Borland C++
, Visual Basic
, Visual C++
и другие.
Под системой программирования понимается совокупность языка программирования и программных средств разработки программ для ЭВМ.
Основой систем программирования является транслятор, который может быть двух видов: компилятором или интерпретатором. Транслятор-компилятор
делает перевод исходной программы, написанной на высокоуровневом языке программирования, на язык более низкого уровня, близкий к ЭВМ. Результат трансляции, сохраняемый в файле, называется объектной программой
и требует дополнительной обработки с целью окончательного перевода на машинный язык. Эта дополнительная процедура осуществляется специальной программой редактором связей
или компоновщиком
. Окончательный результат – это программа на машинном языке, которая также сохраняется в файле. Описанная схема преобразования текста программы называется компиляцией
и состоит, таким образом, из двух этапов: собственно трансляции и редактирования связей (компоновки). При этом существуют такие трансляторы-компиляторы, которые совмещают в себе и функцию редактора связей. Первые трансляторы для ЭВМ были компиляторного типа.
Транслятор-интерпретатор
производит непосредственное выполнение операторов исходной программы. При этом программа на машинном языке не сохраняется, сохраняются только результаты выполнения. Первые трансляторы-интерпретаторы были разработаны для микроЭВМ и языка Бейсик. Интерпретация удобна для отладки вновь создаваемых программ, но скорость выполнения программ низкая. Отлаженные программы целесообразно скомпилировать в машинную программу, скорость выполнения которой гораздо выше, чем при интерпретации.
Кроме транслятора в систему программирования могут входить следующие программные продукты:
• текстовый редактор, предназначенный для ввода и редактирования текста программы и записи его в файл;
• библиотеки стандартных подпрограмм (математических, графических, для работы с периферийными устройствами ЭВМ и других);
• редактор связей (компоновщик);
• отладчик – специальная программа, облегчающая процесс поиска и локализации ошибок в разрабатываемой программе;
• справочная подсистема, содержащая сведения по данному языку программирования и правилам пользования системой программирования;
• обучающая программа (тьютор), облегчающая процесс приобретения навыков пользования конкретной системой программирования.
Современные системы программирования носят интегрированный характер. Так, например, система программирования Turbo Pascal
имеет в своем составе центральную программу (файл TURBO.EXE
), совмещающую в себе функции текстового редактора, компилятора, интерпретатора, отладчика и справочника (при наличии дополнительного файла TURBO.HLP
). Базовая библиотека стандартных подпрограмм находится в файле TURBO.TPL
. Таким образом, ядро системы программирования состоит всего из трех файлов.
Стремительное развитие вычислительной техники и расширение сферы приложения ЭВМ привели к интенсивному развитию системы программного обеспечения. Развитие программного обеспечения пошло как вглубь (появились новые концепции операционных систем, языков программирования, баз данных и т.д.), так и вширь (прикладные программы приобрели самостоятельную ценность). По некоторым оценкам уже во второй половине 80-х годов на мировом рынке программных продуктов предлагалось порядка 35...50 тыс. прикладных программ. В настоящее время рынок программных продуктов увеличился во много раз и приобрел устойчивый характер, появилось много организаций, оказывающих услуги по распространению программного обеспечения для ЭВМ. В каждой развитой стране выпускается от 5 до 150 печатных изданий, информирующих пользователей ЭВМ о доступных компонентах программного обеспечения. В 1998 году объем продаж программного обеспечения составил более 250 млрд долларов. Среднегодовые темпы роста мирового рынка компьютерных программ составляют порядка 13,5% в год. Одним из основных инструментов распространения программ сегодня стала глобальная компьютерная сеть Internet
.
Условно прикладные программы можно разделить на методикоориентированные
и проблемно-ориентированные
. Примером первых служат пакеты прикладных программ, предназначенных для решения широкого круга математических задач. Сфера приложения таких программ заранее не определена. Наоборот, проблемно-ориентированные программы служат для решения конкретного, часто очень узкого класса задач. Это, например, редакционно-издательские системы, системы трехмерной машинной графики, экспертные системы и многие другие.
Прикладное программное обеспечение способствует внедрению средств вычислительной техники практически во все сферы человеческой деятельности. В промышленности – это системы управления, технической и технологической подготовки производства; в бизнесе – системы материального и финансового учета; в науке – автоматизированные системы научных исследований (АСНИ); в образовании – автоматизированные обучающие системы (АОС); в быту – компьютерные игры и развлечения; в связи – электронная почта; в медицине – диагностическое оборудование.
Наиболее широкое применение нашли прикладные программы в области автоматизации делопроизводства и управленческой деятельности. Здесь можно выделить пять "электронных технологий", ставших наиболее популярными:
1) текстовые процессоры, ориентированные на автоматизацию работы практически всех категорий пользователей компьютеров;
2) системы управления базами данных (СУБД), позволяющие создать собственную информационную систему и манипулировать данными, включенными в эту систему;
3) табличные процессоры, предназначенные для автоматизации подготовки проектов планов и отчетов административного характера;
4) системы машинной графики, служащие инструментом автоматизации проектирования и научных исследований;
5) информационно-вычислительные сети ЭВМ, предназначенные для обмена информацией между пользователями различных ЭВМ.
Существует четыре характерные группы пользователей ЭВМ, которые по-разному используют в своей деятельности вычислительную технику и программные продукты.
Первая и наиболее многочисленная группа – это рядовые пользователи
, которые работают с готовыми прикладными программами.
Следующий уровень пользователей – прикладные программисты
, которые создают прикладные программы для работы рядовых пользователей. Прикладные программисты используют в своей работе языки программирования высокого уровня и должны обладать более глубокими знаниями в области информатики, чем рядовые пользователи.
Особую группу пользователей образуют системные программисты
, разрабатывающие компоненты системного программного обеспечения. Системный программист – это, как правило, высококвалифицированный программист с большим стажем работы в данной области деятельности. Его работа связана с разработкой языков программирования и систем программирования, сервисных программ, отдельных компонентов операционных систем и операционных систем в целом. Поэтому системные программисты обладают наиболее глубокими знаниями в сфере информатики.
Еще одна группа пользователей – это обслуживающий персонал
и администрация
вычислительных центров коллективного использования ЭВМ. Эти работники следят за состоянием вычислительной техники, проводят ее техническое обслуживание и ремонт, поэтому они также должны обладать знаниями в области эксплуатации и технического обслуживания ЭВМ.
На практике информация всегда представляется в виде каких-либо сообщений
. Информационное сообщение связано с источником информации, приемником информации и каналом передачи. Сообщение от источника к приемнику передается в материально-энергетической форме (электрической, световой, звуковой и т.д.). Человек воспринимает сообщение посредством органов чувств. Технические устройства воспринимают сообщения с помощью специальной аппаратуры – датчиков. Информация может быть непрерывной, или аналоговой, либо дискретной. В некоторых случаях переход от непрерывного представления информационного сигнала к дискретному дает значительные преимущества при передаче, хранении и обработке информации. Для этих целей в информационной технике используются аналого-цифровые преобразователи; обратное преобразование информации осуществляется цифро-аналоговыми преобразователями.
Для представления дискретной информации в цифровых вычислительных машинах применяется алфавитный способ, основой которого является использование фиксированного набора символов любой природы, называемого алфавитом
. Символы из набора алфавита называются буквами, а любая конечная последовательность букв – словом в этом алфавите. При этом не требуется, чтобы слово обязательно имело языковое смысловое значение.
Для ввода в ЭВМ информация должна быть перенесена на специальный носитель, с которого она воспринимается машиной. Исходным носителем информации служит бумага. На перфокарты и перфоленты символы наносятся посредством совокупности пробитых и непробитых позиций. На магнитных носителях информации – лентах, дисках, барабанах и картах – для нанесения информации используется чередование участков с различной намагниченностью. Таким образом, для представления информации на указанных носителях используется алфавит, включающий в себя всего две буквы (есть пробивка, нет пробивки; есть намагниченность, нет намагниченности).
Очевидно, что процесс преобразования информации требует представления букв одного алфавита буквами или словами другого алфавита. Такое преобразование называется кодированием. Процесс обратного преобразования информации относительно ранее выполненного кодирования называется декодированием.
В вычислительной технике получило распространение двоичное кодирование информации, при котором вводимые в ЭВМ символы представляются средствами двоичного алфавита, состоящего из двух букв – символов 0 и 1.
Независимо от того, как изображает исходные данные пользователь (числа или строки символов), они преобразуются в последовательности двоичных цифр 0 и 1. При выводе информации осуществляется обратное преобразование двоичных данных в удобную для пользователя форму.
Двоичная цифра называется битом
. Группа из n
бит позволяет
представить 2n
комбинаций от 00...00 до 11...11. Представление данных группой из восьми бит называется байтом
. С помощью одного байта можно закодировать 28
=256 различных комбинаций. В информатике байт стал стандартной базовой единицей измерения количества информации. Содержание байта может интерпретироваться по-разному: оно может быть кодированным представлением символа внешнего алфавита, целым или вещественным числом, частью машинной команды и т.д. Интерпретацию байта фактически осуществляет программист в зависимости от контекста своей программы.
Биты в байте нумеруются справа налево, начиная с нуля. Четыре соседних бита в байте называются тетрадой
. Единица данных, кратная байту и равная разрядности регистров процессора ЭВМ, называется машинным словом
. Машинное слово является основной единицей данных, которой оперирует процессор ЭВМ. Длина слова может составлять 1, 2, 4, 8 и более байт.
Для представления больших объемов информации используются производные от байта крупные единицы измерения: килобайт (Кбайт), мегабайт (Мбайт), гигабайт (Гбайт). При этом выполняются следующие соотношения:
1 Кбайт = 210
= 1024 байт; 1 Мбайт = 220
= 1 048 576 байт; 1 Гбайт = 230
= 1 073 741 824 байт.
Процесс обработки информации в ЭВМ сопровождается преобразованием чисел из одной системы счисления в другую.
Система счисления
– это совокупность правил наименования и записи чисел. Существуют два вида систем счисления – позиционные и непозиционные.
Непозиционные системы счисления
появились значительно раньше позиционных систем. В них символы, обозначающие какое-то число, не меняют своего значения в зависимости от местоположения в изображении этого числа. Самая известная непозиционная система счисления – римская
, в которой для записи чисел используются буквы латинского алфавита. Буква I всегда означает единицу, буква V – пять, X – десять, L – пятьдесят, C – сто, D – пятьсот, M – тысячу и т.д. Например, десятичное число 267 записывается в римской системе счисления как CCLXVII.
В информатике применяются только позиционные системы счисления
. В каждой позиционной системе счисления используется определенный набор символов, называемых цифрами, последовательная запись которых изображает число. Количество символов в наборе соответствует основанию системы счисления. Позиция символа в изображении числа называется разрядом. Младший разряд целой части числа имеет номер 0. Каждой цифре соответствует число, которое меньше основания системы счисления. В зависимости от позиции цифры в числе ее значение умножается на степень основания, показатель которой равен номеру разряда.
Таким образом, целое положительное число A в позиционной системе счисления можно представить следующим выражением:
A
(n)
a
n
p
n
a
n
1
p
n
1
...
a
1
p
1
a
0
p
0
,
где p
– основание системы счисления, натуральное число; a
– цифра; n
– номер старшего разряда числа.
Показатели степени основания для дробной части числа изображаются отрицательными числами от –1 до . Смешанное число в общем виде можно представить следующим выражением:
A
( n)
a
n
p
n
a
n
1
p
n
1
...
a
1
p
1
a
0
p
0
a
1
p
1
...
a
m
p
m
.
В современной информатике используются двоичная, восьмеричная, десятичная и шестнадцатеричная системы счисления.
Двоичная система счисления имеет набор цифр {0,1} и p
=2. Двоичное число можно представить таким выражением:
A
( n)
a
n
2
n
a
n
1
2
n
1
...
a
1
2
1
a
0
2
0
a
1
2
1
...
a
m
2
m
. Пример
. 11012
= 1·23
+ 1·22
+ 0·21
+ 1·20
= 1310
.
Восьмеричная система счисления в настоящее время в информатике практически не используется. Она имеет набор цифр {0, 1, 2, 3, 4, 5, 6, 7} и p
=8.
Представление восьмеричного числа:
A
( n)
a
n
8
n
a
n
1
8
n
1
...
a
1
8
1
a
0
8
0
a
1
8
1
...
a
m
8
m
.
Пример
. 3778
= 3·82
+ 7·81
+ 7·80
= 25510
Десятичная система счисления используется в нашей повседневной жизни, имеет набор цифр {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} и p
=10. Представление десятичного числа:
A
( n)
a
n
10
n
a
n
1
10
n
1
...
a
1
10
1
a
0
10
0
a
1
10
1
...
a
m
10
m
.
Пример
. 152,710
= 1·102
+ 5·101
+ 2·100
+ 7·10-1
.
Шестнадцатеричная система счисления имеет набор цифр {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} и p
=16. Для изображения первых десяти цифр используются цифры десятичной системы счисления, а для изображения остальных цифр – шесть первых букв латинского алфавита. Представление шестнадцатеричного числа:
A
(n)
a
n
16
n
a
n
1
16
n
1
...
a
1
16
1
a
0
10
0
a
1
16
1
...
a
m
16
m
. Пример
. E7F816
= E·163
+ 7·162
+ F·161
+ 8·160
= 5938410
.
Двоичная система счисления получила исключительное распространение в вычислительной технике благодаря представлению цифры каждого разряда электронной схемой с двумя устойчивыми состояниями и простоте выполнения арифметических операций. Восьмеричная и шестнадцатеричная системы счисления представляет собой более компактную форму записи двоичных чисел, при которой три или четыре двоичные цифры заменяются либо на одну восьмеричную, либо на две шестнадцатеричные.
Поскольку люди и вычислительные машины пользуются различными системами счисления, следует знать принципы перевода чисел из одной системы счисления в другую. Преобразование числа из системы счисления с произвольным основанием в десятичное представление производится по вышеприведенным соотношениям. Далее рассмотрим другие правила перевода целых чисел ручным методом.
Правило 1
. Для перевода целого десятичного числа x
в систему счисления с основанием p
необходимо делить исходное число x
и образующиеся частные на p
до получения частного, равного нулю. Искомое представление есть последовательность остатков от деления, причем первый остаток есть младшая цифра.
Пример
. Перевод десятичного числа 236 в двоичное число:
Частные |
Остатки |
236
118
59
29
14
7
3
1
0
|
0 = а0
0 = а1
1 = a2
1 = a3
0 = a4
1 = a5
1 = a6
1 = a7
|
Записывая остатки от деления снизу вверх, получим: 23610
= 111011002
.
Правило 2
. Для перевода целого двоичного числа в шестнадцатеричную систему счисления необходимо исходное число справа налево сгруппировать по четыре цифры, а затем каждую группу записать одной шестнадцатеричной цифрой. Пример
. Перевод двоичного числа 1111010 в шестнадцатеричное число: 1111010(2)
= 0111 1010 = 7A(16)
.
Перевод двоичных чисел в восьмеричные осуществляется по правилу 2, но группировать двоичные цифры следует по три.
Правило 3
. Для перевода целого шестнадцатеричного числа в двоичное необходимо каждую цифру исходного числа записать в виде эквивалентного четырехбитного двоичного числа. Пример
. Перевод шестнадцатеричного числа 5AF в двоичное число:
5AF(16)
= 0101 1010 1111 = 01011010111(2)
.
Перевод восьмеричного числа в двоичное производится аналогичным образом, но при этом каждая восьмеричная цифра должна быть записана в виде трехбитного двоичного числа.
Для ручного перевода чисел из одной системы счисления в другую можно воспользоваться табл. 4.1.
Таблица 4.1 Таблица перевода чисел
Десятичное число |
Шестнадцатеричное число |
Восьмеричное число |
Двоичное число |
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
|
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
|
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
|
Система вещественных десятичных чисел, применяемая в ручных расчетах, предполагается бесконечной и непрерывной. Это означает, что при этом не накладывается никаких ограничений на диапазон используемых чисел и точность их представления (количество значащих разрядов или цифр). Реализовать такую систему чисел в технических устройствах невозможно. В ЭВМ, которые оперируют двоичными числами, размеры регистров процессора и ячеек памяти фиксированы, что накладывает ограничения на систему представимых чисел. Ограничения касаются диапазона допустимых чисел и точности их представления. Поэтому система машинных чисел оказывается конечной и дискретной, образуя подмножество системы вещественных чисел.
Для процессора любой ЭВМ существуют максимальное представимое число Zmax
и минимальное представимое число Zmin
, между которыми находится множество допустимых чисел (рис. 4.1). Существуют два таких множества – для положительных и отрицательных чисел. Если результат машинной операции превышает Zmax
, возникает состояние переполнения
, при этом дальнейшее выполнение программы не имеет смысла и обычно прекращается. Если результат операции оказывается меньше Zmin
, то фиксируется состояние антипереполнения
. Обычно при антипереполнении результат операции обращается в нуль. Область чисел от -Zmin
до +Zmin
, за исключением истинного нуля, называют машинным нулем
.
Рассмотрим далее форматы представления в ЭВМ вещественных чисел с фиксированной и плавающей точкой.
В системе команд процессора ЭВМ и языках программирования существуют два формата представления чисел: с фиксированной точкой (для целых чисел) и с плавающей точкой (для вещественных чисел).
Область
Представимые машинного Представимые числа нуля числа
Рис. 4.1. Система машинных чисел
Целые числа могут быть со знаком или без знака. Формат представления в памяти ЭВМ целых чисел без знака имеет вид, показанный на рис. 4.2. Значок ^
здесь и далее обозначает положение десятичной точки, отделяющей целую часть числа от дробной части. Все разряды такого числа являются значащими, а положение точки фиксируется после младшего значащего разряда. Диапазон представимых чисел: от 0 до 2n
-1
.
Рис. 4.2. Формат целых чисел без знака
Целые числа без знака используются в программировании для представления тех числовых объектов, которые принципиально не могут быть отрицательными. Это, например, адреса ячеек памяти, счетчики повторений циклов и другие подобные объекты. Длина формата обычно составляет один, два или четыре байта.
В формате целого числа со знаком один из разрядов отводится для кодирования знака числа S
(рис. 4.3). Обычно им является старший (левый) бит, а стандартное кодирование знака имеет такой вид: S
= 0 – число положительное, S
= 1 – число отрицательное.
Рис. 4.3. Формат целых знаковых чисел
Существуют два способа кодирования целых знаковых чисел: в прямом и дополнительном коде.
Прямой код
состоит в том, что знак числа помещается в старший разряд, а остальные биты используются для кодирования абсолютного значения числа. Диапазон представимых чисел составляет от -(2n
-1
-1) до +(2n
-1
-1). Число нуль при этом может быть как положительным (ему соответствует набор бит 00...00), так и отрицательным (10...00). Последнее обстоятельство является недостатком такого представления числа, поэтому прямой код получил ограниченное применение в ЭВМ.
Дополнительный код
состоит в том, что общий формат знаковых целых чисел сохраняется, но меняется кодирование отрицательных чисел. Положительные числа от 0 до 2n
-1
представляются в прямом коде, а для отрицательных чисел используется особое кодирование: число –1 кодируется битовым набором 11...11, а число –2n
-1
– битовым набором 10...00.
Получение дополнительного кода отрицательного числа -x
производится по следующему правилу:
x
доп.код.
2
n
x
,
где n
– количество двоичных разрядов.
Дополнительный код позволяет иметь единственное представление нуля 00...00. Диапазон представимых чисел при этом от -2n-1
до +(2n-1
-1). Очевидно, что диапазоны отрицательных и положительных чисел не являются симметричными. Обычная длина такого формата один, два или четыре байта.
Рассмотренные форматы вещественных чисел с фиксированной точкой имеют ограничения на диапазон принимаемых значений и представимые числовые значения (только целые числа). Однако существует немного прикладных задач, для решения которых достаточно оперировать только с целыми числами. Указанные ограничения преодолеваются использованием формата чисел с плавающей точкой. Этот формат иначе называется также полулогарифмическим или экспоненциальным форматом. В соответствии с этим форматом число должно быть представлено в виде
(
M)E(
)
.
Здесь число изображается как произведение некоторого другого числа на степень числа 10, являющегося основанием десятичной системы счисления. Число M
называется мантиссой
или значащей частью числа. Мантисса может быть любым знаковым числом, ее знак определяет знак всего числа. Число называется порядком
или экспонентой. Порядок может быть только целым знаковым числом. Буква Е обозначает основание десятичной системы счисления и разделяет мантиссу и порядок. Чтобы сообщить о представлении числа с повышенной точностью вместо буквы Е записывается буква D (от Double – удвоенный); в этом случае для мантиссы отводится больше разрядов.
Порядок определяет фактическое положение десятичной точки вместо положения, которое она занимает в изображении мантиссы. Если порядок положительный, точка перемещается ("плывет" – отсюда и название формата) вправо на число разрядов, равное значению порядка. Если порядок отрицательный, точка перемещается ("плывет") влево.
Пример
. Запись вещественных чисел:
–0.0956Е+2 = –9.56 = –0.0956·10+2 ;
+1.289Е-3 = +0.001289 = +1.289·Е10–3 .
Чтобы исключить неоднозначность записи чисел, во всех ЭВМ принято нормализованное
представление чисел с плавающей точкой, требующее, чтобы мантисса была правильной дробью, а старшая цифра ее отличалась от нуля. Кроме однозначности нормализованное представление обеспечивает также сохранение максимального количества значащих цифр мантиссы в результатах машинных операций. Классический формат числа с плавающей точкой представлен на рис. 4.4.
Рис. 4.4. Классический формат числа с плавающей точкой
Формат состоит из четырех полей:
• код знака мантиссы Sм
(он совпадает со знаком всего числа);
• код мантиссы длиной n
бит, являющейся правильной дробью;
• код знака порядка Sп
;
• код порядка длиной p
бит, являющегося целым числом.
Мантисса и порядок представляются в прямом коде.
Количество бит мантиссы и порядка существенно влияют на диапазон и точность представимых нормализованных чисел. Диапазон представимых чисел определяется только количеством битов порядка. Для расчета минимального и максимального чисел предназначены следующие формулы: X
min
2
2
p
;
p p
X
max
(1
2
n
)
2
2
1
2
2
1
.
С увеличением числа бит порядка диапазон представимых чисел очень быстро расширяется как в область очень больших, так и в область очень малых значений: p
6
Z
min
2
64
10
19
;
Z
max
2
63
10
19
;
p
7
Z
min
2
128
10
38
;
Z
max
2
128
10
38
; p
8
Z
min
2
256
10
76
;
Z
max
2
256
10
76
.
Таким образом, увеличение длины порядка всего на один бит удваивает показатель степени у 10 для минимального и максимального представимых чисел.
Количество бит мантиссы определяет точность представления чисел. Точность определяется максимальным значением относительной ошибки e
, вычисляемой по формуле e
max
2
n
1
. При этом имеют место следующие соотношения: n
24
e
max
2
23
10
7
; n
32
e
max
2
31
10
9
;
55
10
16
;
n
56
e
max
2
n
64
e
max
2
63
10
19
.
Про относительную ошибку 10N
говорят, что числа представимы с точностью N
-го десятичного разряда либо точность представления чисел составляет N
десятичных разрядов (цифр). Например, длина мантиссы 56 бит соответствует точности представления чисел до 16-го десятичного разряда.
В рассматриваемом формате нуль является особым числом. Оно представляется нулями во всех двоичных разрядах и называется истинным нулем. Существует также понятие машинного
нуля, под которым понимают минимальное представимое число Z
min
, то есть машинный нуль может быть и положительным, и отрицательным.
В некоторых машинных операциях может получиться число, мантисса которого равна нулю. Независимо от значения порядка такое число приравнивается нулю и называется псевдонулем
.
Типы и форматы данных, которыми оперируют современные вычислительные системы, установлены международным стандартом IEEE-854.
В языках программирования традиционно существуют две разновидности формата чисел с плавающей точкой: нормальной точности (длина формата 4 байта) и удвоенной точности (длина формата 8 байт). Точность представления таких чисел составляет 6-7 и 15-16 десятичных разрядов соответственно.
Арифметический сопроцессор IBM-совместимых ПЭВМ может работать с вещественными числами расширенной точности, занимающими в памяти 10 байт. Точность представления таких чисел составляет 19-20 десятичных разрядов.
Необходимо отметить, что из-за сложного формата представления вещественных чисел с плавающей точкой производительность ЭВМ при обработке данных, содержащих вещественные числа, существенно ниже, чем при обработке данных, содержащих только целочисленные значения. Производительность
– это одна основных оценок качества вычислительной машины, определяемая аналитическим или экспериментальным путем. Она отражает количество обобщенных операций (команд процессора), выполняемых ЭВМ в единицу времени. Производительность процессоров современных ЭВМ обычно измеряется в миллионах целочисленных операций в секунду (MIPS) или в миллионах операций с плавающей точкой в секунду (MFLOPS, мегафлопс). Так, например, производительность 32-разрядного микропроцессора Intel Celeron с тактовой частотой 700 МГц, предназначенного для массовых моделей IBM-совместимых ПЭВМ, составляет примерно 315 MIPS и 39 MFLOPS (эти параметры определены с помощью тестовой программы PC-DOCTOR фирмы Watergate Software Inc). Для сравнения, производительность 16-разрядного микропроцессора Intel 8088 с тактовой частотой 4,77 МГц, который использовался в компьютерах IBM PC и PC/XT, составляла всего 0,4 MIPS.
Термин алгоритм
своим происхождением связан с именем выдающегося восточного математика Аль-Хорезми, который еще в IX веке сформулировал правила выполнения четырех арифметических действий. Этими правилами мы пользуемся до сих пор. В современной математике под алгоритмом понимается конечная последовательность точно определенных действий, приводящих к решению поставленной задачи. Алгоритмы существуют не только в математике и информатике. Они сопровождают жизнь человека в форме различных инструкций и правил.
Устанавливаемая алгоритмом последовательность действий задается в словесной или графической форме. Для реализации алгоритма на ЭВМ используются алгоритмические языки или языки программирования.
Обычно требуется, чтобы алгоритмы обладали следующими свойствами.
1) Дискретность
. Это свойство алгоритма означает пошаговый характер получения результата.
2) Конечность
. Работа алгоритма должна завершаться за конечное число шагов.
3) Определенность
. Все предписания алгоритма должны допускать однозначную трактовку и быть понятными исполнителю – вычислительной машине или человеку.
4) Массовость
. Алгоритм должен давать решение целой группы задач, отличающихся исходными данными.
5) Результативность
. Свойство означает получение результата после выполнения над исходными данными заданной алгоритмом последовательности действий.
6) Эффективность
. Все шаги алгоритма должны выполняться за конечное время, которое должно находиться в разумных пределах. Например, метод полного перебора не используется для машинного анализа ходов шахматной партии.
Процесс подготовки и решения задач на ЭВМ остается пока достаточно сложным и трудоемким, требующим выполнения ряда этапов:
1) постановка (формализация) задачи;
2) выбор известного или разработка нового метода решения задачи;
3) разработка алгоритма решения задачи;
4) написание программы и ввод ее в память ЭВМ; 5)перевод программы в машинные команды (трансляция); 6)отладка и тестирование программы.
Рассмотрим далее содержание этих этапов.
Приступая к решению задачи, необходимо возможно точно описать (сформулировать) ее. Постановка и цель решения задачи раскрывают ее содержание. Задача описывается на уровне профессиональных понятий в той предметной области, для которой она выполняется. Формулировка задачи сводится к постановке ряда четких вопросов, например:
– Что дано?
– Что нужно найти?
– Какова исходная информация?
– Какие накладываются ограничения на исходные данные?
– Какие сделаны допущения?
В процессе постановки прежде всего следует определить цель решения задачи, под которой понимается тот конечный результат, который необходимо получить. Например, в производственно-экономических задачах цель в большинстве случаев заключается в максимизации прибыли либо в минимизации расходов.
Этот этап тесно связан с этапом формализации, так как целью его является сведение задачи к математической модели, для которой известен метод решения. Возможно, что для полученной модели существует несколько методов решения, и тогда из них следует выбрать наилучший.
Для построения математической модели необходимо иметь строгое представление о сущности исследуемого объекта или процесса, знать область допустимых значений исходных данных, участвующих в расчетах. Математическая модель должна быть представлена в виде функций от управляемых переменных. Существуют два типа моделей: аналитические и имитационные.
В аналитических моделях
поведение какой-либо системы описывается некоторыми функциональными соотношениями или логическими условиями, в которых отражаются внешние воздействия на систему, внутренние параметры системы, результаты поведения системы. Для построения аналитических моделей используется математический аппарат исследования операций, теории вероятностей, математической статистики, теории массового обслуживания, функционального анализа и др. Пример простейшей аналитической математической модели – теорема Пифагора для прямоугольного треугольника.
Сложность реальных технических систем часто затрудняет представление аналитической модели системы. В этом случае используют упрощенные модели, учитывающие доминирующие характеристики объекта.
Имитационные модели
используются в случаях, когда исследуемую систему невозможно описать аналитически. Имитационная модель представляет собой совокупность алгоритмов, отражающих поведение системы во времени при задании внешних воздействий на нее. Такие модели требуют больших трудозатрат на свое создание.
Выбор того или иного метода решения задачи определяется многими факторами, основными из которых являются достоверность и точность результатов решения, время решения задачи на ЭВМ, ограничения по объему памяти ЭВМ. Заметим, что для некоторых задач вычислительная мощность ПЭВМ оказывается недостаточной.
На этапе разработки алгоритма решения задачи устанавливается логическая последовательность действий, приводящих к конечному результату.
По характеру выполняемых операций алгоритмы могут быть численными, логическими, смешанными. По структуре алгоритмы подразделяются на линейные, разветвляющиеся, циклические, смешанные. Количество выполняемых по алгоритму действий определяет временную сложность алгоритма. Объем памяти ЭВМ, требуемый для реализации алгоритма, определяет емкостную сложность алгоритма.
Одновременно с разработкой алгоритма должна быть найдена структура исходной, промежуточной и выходной информации для решаемой задачи. Это необходимо для последующего выбора языка программирования.
Существует много способов описания алгоритмов, но наибольшее распространение получили следующие способы записи: словесный, графсхемный, язык проектирования алгоритмов (псевдокод), языки программирования.
Словесный способ
записи алгоритма представляет собой обычную математическую запись выражений, зависимостей, пояснений к ним и указаний последовательности выполняемых действий. Такой способ записи не требует от программиста дополнительной подготовки, однако он имеет ряд недостатков. Пояснения на естественном языке могут быть неоднозначны и противоречивы. Запись алгоритма для сложных задач громоздка и ненаглядна, она плохо формализована и не может непосредственно вводиться в ЭВМ.
Пример
. Записать словесным способом алгоритм решения линейного уравнения a
x
b
.
1) Задать значения параметров a
и b
.
2) Если a
не равно 0, то перейти к пункту 3. В противном случае перейти к пункту 5.
3) Вычислить x
a/b
и вывести значение переменной x
.
4) Перейти к пункту 9.
5) Если b
не равно 0, то перейти к пункту 6, в противном случае перейти к пункту 8.
6) Вывести текст "Решения нет".
7) Перейти к пункту 9.
8) Вывести текст: "Любое значение x
является решением".
9) Конец алгоритма.
Данный алгоритм линейного характера содержит разветвления вычислительного процесса. Существует правило, что если в каком-то пункте алгоритма нет проверки условия и нет специального указателя о том, какой пункт должен выполняться следующим, происходит переход к очередному по номеру пункту. В линейном алгоритме каждый пункт вычислительного процесса выполняется не более одного раза. При этом некоторые из пунктов, при определенном наборе исходных данных, могут вообще не выполниться ни разу.
Пример
. Записать словесным способом алгоритм вычисления суммы элементов последовательности
S
x
1
x
2
...
x
i
, где i
1,n
.
1) Задать значение n
и значения xi
.
2) Присвоить i
= 2.
3) Присвоить S
= xi
.
4) Увеличить значение S
на xi
.
5) Увеличить значение i
на 1.
6) Если i
не превышает n
, то перейти к пункту 4.
7) Вывести значение S
.
8) Стоп.
Здесь дан пример циклического алгоритма, в котором пп. 4, 5, 6 выполняются многократно и образуют цикл.
Граф-схемный
,
или блок-схемный
, способ записи структура алгоритма изображается графически в виде набора некоторых геометрических фигур – блоков и связей между ними. Внутри блока записывается информация с содержанием действий на данном этапе алгоритма. Связи, изображаемые с помощью стрелок, указывают последовательность действий и соединяют блоки между собой. В Единой системе программной документации (ЕСПД) существует государственный стандарт ГОСТ 19.701-90 "Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения", регламентирующий запись алгоритма графическим способом. Условные обозначения основных элементов схем алгоритмов и программ, которые устанавливает данный стандарт, приведены в приложении.
Способ записи алгоритма на специальном языке – псевдокоде
– основывается на естественном языке и представляет собой комбинацию двух способов записи: словесного и на языке программирования. Этот способ дает возможность описывать сложные действия, в нем отсутствуют строгие синтаксические правила записи действий, имеются некоторые конструкции, присущие языкам программирования.
Рассмотренные способы записи алгоритма еще не делают алгоритм понятным ЭВМ. Они являются предварительным описанием будущей машинной программы. Только алгоритмические языки
описывают алгоритм так, что он может непосредственно обрабатываться ЭВМ. Написанная на языке программирования программа вводится в ЭВМ, например, с клавиатуры и сохраняется на каком-либо машинном носителе, например, магнитном диске.
После разработки алгоритма и проверки правильности его работы наступает этап разработки программы. Программа представляет собой последовательность операторов языка программирования, записанную в соответствии со схемой алгоритма. Существует ряд методов программирования, ориентированных на получение надежных, пригодных для отладки, испытаний и сопровождения программ. К этим методам можно отнести:
1) программирование на языках высокого уровня, что позволяет разработчику абстрагироваться от особенностей используемой ЭВМ и оперировать абстрактными типами данных;
2) программирование с защитой от ошибок, то есть разработка программ, включающих дополнительные проверки входных и промежуточных данных на полноту, допустимость и правдоподобность получаемых значений;
3) структурное программирование, заключающееся в разработке алгоритмов и программ по правилам системного подхода.
Качество программы определяется набором требований, предъявляемых к программе, которые в зависимости от назначения программы могут меняться. Наиболее важными критериями качества программ являются: надежность программы, простота пользования, мобильность, удобство эксплуатации, эффективность, совместимость, стоимость, полная документируемость.
Надежность программы
– это свойство программы выдавать правильные результаты при всех возможных и допустимых исходных данных. При наличии ошибочных исходных данных программа должна распознавать данную ситуацию и не приводить к фатальным последствиям.
Простота пользования
программ стала в последнее время важнейшей характеристикой программы в результате широкого внедрения ПЭВМ в повседневную жизнь человека. Эта характеристика определяет наличие четко определенных условий и области применения данной программы ясно оговоренными ограничениями и пояснениями, облегчающими и ускоряющими использование программы, но исключающими ее неправильное применение. Программы, обладающие такой характеристикой, облегчают взаимодействие пользователя с ЭВМ.
Мобильность программы
и удобство эксплуатации
– свойства взаимосвязанные. Мобильность программы связана с возможностью переноса ее из одной среды функционирования в другую с минимальными затратами. Мобильность программы достигается за счет использования языков программирования высокого уровня и мобильных операционных систем, а также ориентации на распространенные технические средства ЭВМ. Однако выполнение требований мобильности приводит к снижению экономичности программы, которая характеризуется затратами процессорного времени и памяти ЭВМ.
Удобство эксплуатации означает, прежде всего, возможность дальнейшего улучшения программы без значительных переделок.
Эффективность программы
можно оценить параметром, значение которого прямо пропорционально быстродействию и обратно пропорционально объему использования ресурсов ЭВМ. Ресурсы ЭВМ состоят из пяти компонент: процессорного времени, основной памяти, внешней памяти, устройств ввода-вывода и программного обеспечения.
Совместимость программы
означает ее пригодность к выполнению на конкретной ЭВМ, оснащенной конкретной операционной системой. Например, в документации на программные продукты могут оговариваться тип используемого компьютера (например, PC/AT), тип процессора (80286, 80386), тип операционной системы (MS-DOS, Windows, OS/2, UNIX), версия операционной системы (MS-DOS 3.0, Windows 95), особые характеристики компьютера (минимальные тактовая частота процессора, объемы оперативной памяти и видеопамяти, разрешающая способность монитора), наличие дополнительных периферийных устройств ("мыши", джойстика, печатающего устройства, звукового адаптера и других).
Очевидно, что улучшение перечисленных характеристик неизбежно сказывается на стоимости программы
. Поэтому должен достигаться компромисс между степенью улучшения какой-либо характеристики и увеличением стоимости программы.
Документируемость программы
– это характеристика, связанная с сопровождающей ее информацией, в которой указываются назначение программы, порядок ее использования и адаптации к конкретным условиям эксплуатации. Современные программные средства имеют встроенные справочные подсистемы, работающие в диалоге с пользователем и заменяющие традиционные бумажные справочные документы.
Регламентирует процесс разработки компьютерных программ уже упомянутая ЕСПД, которая представляет собой комплекс взаимосвязанных государственных стандартов, определяющих общие положения, виды программ и программных документов, правила разработки, оформление программ, распространение документации, сопровождение программ независимо от их назначения и области использования. Введение стандартов в процесс создания программ улучшает технологию программирования и повышает качество программ.
Выбор языка программирования в значительной мере влияет на надежность работы программы и ее приспосабливаемость к отладке, испытаниям и сопровождению. Чем выше уровень языка программирования, тем меньше ошибок в разрабатываемых программах, тем легче понимать программы. Любая функция обработки данных на языке высокого уровня выражается меньшим числом операторов, чем на языке низкого уровня.
Программы на языке высокого уровня более надежны, так как выше степень автоматического обнаружения ошибок в процессе трансляции программы. Программа на языке высокого уровня отличается значительно большей наглядностью, которая обеспечивается соответствующим составом ключевых слов языка и возможностью модульного построения больших программ. Наглядность языка программирования полезна с нескольких точек зрения:
1) упрощается документирование программ;
2) в таких программах быстрее выявляются ошибки;
3) такая программа более удобна для сопровождения другим программистом.
Язык программирования высокого уровня наделяет программу важным свойством мобильности. Языки низкого уровня не обладают свойством мобильности, что означает перепрограммирование задачи при переносе ее решения на другие технические средства. Однако эффективность программ, реализованных на языках высокого уровня несколько ниже, чем у программ, реализованных на языках низкого уровня. При разработке программы следует помнить, что основные резервы эффективности программ лежат в области разумного выбора математических методов и алгоритмов.
Среди языков программирования высокого уровня существуют универсальные и специальные языки. Специальные языки создаются, как правило, на основе универсальных языков и обладают всеми преимуществами языков высокого уровня. Специальные языки предназначены снизить затраты на программирование специальных алгоритмов и программ. Так, например, для программирования имитационных моделей предназначен языки GPSS
и Simula
, систем управления базами данных (СУБД) – язык Clipper
, систем искусственного интеллекта – языки Lisp
и Prolog
, систем управления – языки Modula
и ADA
.
Включение в программу дополнительных операторов контроля данных позволяет уменьшить вероятность возникновения ошибочных ситуаций при работе программы. Существуют следующие виды проверок:
• проверки допустимости значений переменных (числовых, логических, символьных);
• проверки допустимости типов данных в выражениях программы;
• проверки допустимости значений индексов массивов;
• проверки выполнения операций ввода-вывода. При этом ошибки ввода-вывода можно разделить на два вида: связанные с устройством вводавывода и связанные с передачей данных.
Метод программирования с защитой от ошибок требует разумного подхода. Если над данными выполнять все мыслимые проверки, эффект от применения метода может стать отрицательным.
Современные системы программирования в процессе трансляции автоматически включают в исходную программу специальные подпрограммы, реализующие указанные виды проверок.
Структурное проектирование является воплощением системного подхода в процесс создания и эксплуатации программного обеспечения ЭВМ.
Логика алгоритма или программы должна опираться на минимальное число простых управляющих структур. Теорема о структурировании, доказанная Бемом и Джекопини, устанавливает, что логическая структура алгоритма или программы может разрабатываться с использованием трех элементарных алгоритмических структур: следования, разветвления (выбора), повторения (цикла). Графические изображения этих элементарных алгоритмов приведены на рис. 5.1.
Структура "следование" обеспечивает естественную последовательность выполнения действий и определяет линейную структуру алгоритма. Структура "разветвление" обеспечивает выбор того или иного выполняемого действия в зависимости от истинности либо ложности некоторого логического условия. Структура "повторение" предусматривает многократное повторение действия.
Существуют две принципиальные разновидности циклических структур. Циклическая структура "пока" (цикл с предусловием
) обеспечивает повторение действия пока логическое условие имеет значение "истина". Как только значение условия становится "ложь", выполнение действия прекращается и управление передается следующей алгоритмической структуре.
Циклическая структура "до" (цикл с постусловием
) обеспечивает выполнение действия один раз даже при начальном значении условия "ложь". Количество повторений действия в циклах "пока" и "до" заранее неизвестно, однако возможен вариант цикла, в котором количество повторений задается счетчиком.
Все базовые алгоритмические структуры имеют один вход и один выход. Использование в информатике таких структур повышает наглядность алгоритмов и программ, облегчает их отладку и модификацию.
Принцип модульного программирования состоит в разделении программы на функционально законченные части – модули. Модуль реализует часть общего алгоритма программы. В языках программирования модули оформляются в виде подпрограмм. Модули должны обладать независимой от других модулей внутренней структурой, иметь один вход и один выход, иметь
а) б)
в) г)
Рис. 5.1. Базовые алгоритмические структуры: а – следование; б) – разветвление;
в – цикл с предусловием; г – цикл с постусловием.
возможность вызова других модулей и передачи управления после окончания работы вызывающему модулю. Преимущества модульного программирования состоят в следующем:
• повышается надежность программы, так как относительно малый размер модуля (порядка 100 операторов языка программирования) позволяет провести более полное тестирование программы;
• облегчается локализация ошибок и упрощается отладка программы, обеспечивается возможность разработки программы коллективом программистов, так как каждый программист имеет дело с независимой от других частью программы;
• модульное построение программы позволяет выполнять ее на ЭВМ с небольшим объемом оперативной памяти (при этом используется оверлейная структура программы).
Модульная программа может иметь одну из следующих основных структур: монолитно-модульную, модульно-последовательную, модульноиерархическую (рис. 5.2).
Монолитно-модульная
структура включает в себя большой модуль, реализующий основную часть функций программы. Из этой части имеется небольшое число обращений к другим модулям небольшого размера. Преимущества модульного программирования в этом случае проявляются не в полной мере.
Модульно-последовательная
структура включает в себя несколько последовательно работающих модулей. Структура достаточно проста и наглядна, но может быть рекомендована для решения относительно простых задач.
Модульно-иерархическая
структура включает в себя модули, относящиеся к нескольким уровням подчиненности. Модули верхних уровней управляют работой модулей нижних уровней. Здесь реализуется принцип вертикального управления, когда принятие основных решений выносится на более высокий уровень. При этом становится понятной логика алгоритма и упрощается внесение изменений в программу. Такая структура позволяет решать очень сложные задачи.
Существуют три способа проектирования модульных программ: восходящий, нисходящий, встречный.
Восходящее
(снизу вверх, синтетическое) проектирование использует идею выделения крупных подалгоритмов и соответствующих им модулей. Каждый такой модуль автономно разрабатывается и проверяется. После разработки модулей осуществляется объединение их в единую программу, которая подвергается комплексной проверке.
Основные недостатки восходящего проектирования: сложность объединения отдельных модулей; трудность исправления ошибок, допущенных на ранних стадиях проектирования.
Нисходящее
(сверху вниз, аналитическое) проектирование начинается с постановки задачи и развивается далее путем разбиения ее на подзадачи. При этом считается, что если каждая подзадача решена правильно, а полученные
Рис. 5.2. Основные виды модульных структур программ: а – монолитно-модульная;
б – модульно-последовательная; в – модульно-иерархическая.
решения взаимосвязаны, то и первоначальная задача будет решена правильно. Разбиение исходной задачи на подзадачи производится до получения таких подзадач, решение которых выражается простыми алгоритмами.
Такой способ для проектирования программ в виде иерархической структуры позволяет решать громоздкие и сложные задачи. При этом имеется возможность проверять и отлаживать программу с начала разработки.
Реальная стратегия разработки алгоритмов и программ в большинстве случаев представляет собой разумное сочетание нисходящего и восходящего способов проектирования, называемое встречным
проектированием.
Программирование в стандартизованном стиле предполагает использование набора специальных приемов с целью получения единообразных, наглядных, приспособленных для изучения программ.
Программирование в стандартизованном стиле включает в себя правила размещения фрагментов текста программы, составления комментариев, выбора идентификаторов (имен), обеспечения наглядности логической структуры программы.
В общем случае программа, написанная на языке Паскаль, может состоять из следующих фрагментов:
- заголовочных комментариев;
- объявлений данных;
- внутренних процедур и функций; -основного текста.
Комментарии по своему назначению можно разделить на три основных вида: вводные, оглавления, пояснительные.
Вводные комментарии
помогают понять назначение, программные связи и ограничения, накладываемые на программу. Вводные комментарии должны содержать следующую информацию:
- идентификатор (имя) модуля;
- функциональное назначение модуля;
- используемый математический метод;
- описание входных и выходных данных;
- перечень вызываемых подпрограмм (модулей);
- описание внешних эффектов;
- принятые ограничения и допущения;
- сведения о разработчике;
- дата разработки;
- описание внесенных изменений.
Комментарии оглавления
включаются в программу головного модуля и дают представление об организации большой программы. В них приводятся перечни программных модулей, краткое описание назначения и указания подчиненности модулей.
Пояснительные комментарии
необходимы для пояснения частей программы, которые могут оказаться сложными для понимания при чтении только одних операторов программы. Каждый функционально законченный фрагмент программы, а также все точки ветвления алгоритма, использования переменных должны быть прокомментированы. Основные правила составления пояснительных комментариев – давать дополнительные сведения о цели выполняемых действий.
Комментарии не должны затруднять чтение текста программы. Их следует выделять пробелами и специальными символами, а также располагать со сдвигом вправо по отношению к операторам программы.
Правила выбора имен
. Идентификаторы констант, переменных, файлов, процедур и функций должны обладать свойством мнемоничности
, то есть отражать сущность описываемых с их помощью объектов. Осмысленный выбор имен переменных и подпрограмм имеет немаловажное значение в технологии программирования. Для правильного подбора имени объектов программы можно использовать следующие правила:
• сокращению подлежит не более трех первых слов из описания назначения объекта;
• в аббревиатуру всегда включаются начальные буквы слов;
• аббревиатура должна содержать от 6 до 15 букв; согласные буквы всегда важнее гласных; начало слова всегда важнее его конца.
Имя может быть составным, при этом для соединения частей имени в языках программирования обычно используют символ подчеркивания.
Правила обеспечения наглядности логической структуры программ
состоят в следующем:
• использовать дополнительные пробелы для выделения составных частей операторов;
• не располагать на одной строке текста программы более одного оператора;
• использовать дополнительные скобки для пояснения структуры выражений;
• использовать отступы для выделения структуры составных и вложенных операторов.
Соблюдение перечисленных правил облегчает чтение текста программы, поиск и исправление ошибок, модификацию программы.
Разработка программ для ЭВМ – это трудоемкий и сложный процесс, редко проходящий без ошибок. Основная цель этапа отладки – это выявление и устранение ошибок в программе. По существующим оценкам на отладку программист затрачивает от 20 до 40% времени, отводимого на разработку программы. Для больших программных комплексов со сложным алгоритмом работы продолжительность отладки может быть еще больше. Причинами ошибок, возникающих в процессе программирования, могут быть:
• неправильная постановка задачи;
• неправильная разработка алгоритма;
• неправильное программирование алгоритма; нарушение правил записи операторов программы; неудачный выбор исходных данных и многие другие.
Процесс отладки состоит в многократной последовательности действий по обнаружению, локализации и исправлению ошибок. Общая схема процесса разработки и отладки программы приведена на рис. 5.3.
Рис. 5.3. Схема процесса разработки и отладки программы
Возникающие в программе ошибки можно подразделить на два вида: синтаксические
, появление которых вызвано нарушением правил записи операторов языка программирования, и семантические
(смысловые), вызывающие ошибки при выполнении.
Большинство синтаксических ошибок выявляются транслятором, который производит поиск таких ошибок и в случае их обнаружения выдает сообщение, показывающее вид ошибки и место ее расположения.
Выявление семантических ошибок является более сложным и трудоемким процессом. При выполнении программы могут возникнуть следующие ситуации, вызванные присутствием в программе семантических ошибок:
• программа работает, но выдает неверные результаты либо не все предусмотренные результаты;
• программа повторяет одну и ту же последовательность действий ("зацикливается");
• выполнение программы внезапно прекращается (переполнение
разрядной сетки, деление на ноль, защита памяти и другие); программа не выдает никакого результата.
Семантические ошибки устраняются посредством выполнения программы с использованием специально подобранных исходных данных, для которых известен правильный ответ. Отладка программы на этапе выполнения может потребовать вывода промежуточных результатов вычислений; для этого в программу временно вводятся дополнительные операторы вывода. Такие дополнительные операторы называются отладочными
. Другой способ отладки выполняющейся программы называется трассировкой
и заключается в выводе информации о последовательности выполнения операторов программы и подпрограмм. Трассировка позволяет проверить правильность выполнения разветвлений алгоритма.
Современные системы программирования имеют, как правило, в своем составе специальную программу – отладчик
, которая помогает программисту в осуществлении указанных методов отладки.
После того как программа становится работоспособной, проводится ее тестирование
. Тестирование программы – это проверка правильности ее работы во всем диапазоне допустимых исходных данных. Из-за большого числа возможных сочетаний исходных данных провести полное тестирование сложной программы часто невозможно. Поэтому в длительно эксплуатируемой программе время от времени обнаруживаются какие-либо ошибки, и для коммерчески распространяемых программ необходима организация их сопровождения
во время эксплуатации. В процессе сопровождения программы, во-первых, устраняются ранее не выявленные ошибки; и, во-вторых, в программу вносятся изменения, повышающие ее качество.
Система Turbo Pascal
для персональных компьютеров типа IBM PC широко применяется для обучения программированию в учебных заведениях. Она была разработана американской фирмой Borland International в период с 1983 по 1992 годы. Было последовательно выпущено несколько версий этой системы: 3.0, 4.0, 5.0, 5.5, 6.0 и 7.0. Начиная с версии 5.5 в язык Turbo Pascal
были включены средства объектно-ориентированного программирования. После 1992 года на основе системы Turbo Pascal
были созданы системы объектно-ориентированного программирования Borland Pascal
и Delphi
.
Система программирования Turbo Pascal
является достаточно сложным программным комплексом. Ее основу составляют следующие компоненты:
- текстовый редактор
– предназначен для ввода и редактирования текста программы на языке Паскаль;
- транслятор
– предназначен для перевода исходной программы на языке Паскаль в последовательность машинных команд;
- библиотека стандартных подпрограмм
– состоит из файлов типа *.tpl и *.tpu, в которых содержатся процедуры и функции, реализующие стандартные вычислительные и логические алгоритмы;
- отладчик
– предназначен для облегчения поиска семантических ошибок в разрабатываемой программе;
- система помощи
– содержит краткие сведения о системе программирования Turbo Pascal
и операторах языка Turbo Pascal
. Справочная информация хранится в файле turbo.hlp.
Указанные компоненты объединяются в единое целое при помощи интегрированной среды программирования
(IDE – I
ntegrated D
evelopment
E
nvironment), иначе называемой оболочкой
. Наличие оболочки существенно облегчает работу программиста с различными составными частями системы программирования и автоматизирует процессы трансляции, компоновки, отладки и выполнения программ. Схема взаимодействия компонентов системы программирования Turbo Pascal
представлена на рис. 6.1.
Перед запуском системы программирования Turbo Pascal
необходимо определить, на каком накопителе компьютера (C:, D:, E: и т.д.) и в каком каталоге размещены файлы системы. Обычно эти файлы располагаются в каталоге с примерным наименованием TP6, TP7, PASCAL. Центральным программным файлом системы является turbo.exe. В качестве параметра для программы turbo.exe в командной строке можно указать имя файла с текстом программы, например (расширение имени pas можно не указывать):
E:\TP7\>turbo react.pas .
Рис. 6.1. Схема взаимодействия компонентов системы программирования
Turbo Pascal
После запуска программы turbo.exe на экране монитора появится окно оболочки системы Turbo Pascal
(рис. 6.2).
Рис. 6.2. Окно оболочки системы программирования Turbo Pascal 7.0
Управлять оболочкой системы программирования Turbo Pascal
можно при помощи меню, функциональных клавиш и "мыши". Вход в меню происходит после нажатия функциональной клавиши F10
либо следует установить курсор "мыши" в строку меню и нажать левую кнопку "мыши". Перемещаться по пунктам меню можно с помощью "мыши" или клавиш управления курсором. Выбор конкретного пункта в меню производится либо нажатием левой кнопки "мыши", либо клавиши Enter,
либо одновременным нажатием клавиши Alt
и клавиши выделенной красным цветом буквы наименования пункта, например, Alt+F
для выбора пункта File
.
Оболочка системы Turbo Pascal
является многооконной
и позволяет одновременно работать с несколькими объектами (файлами). При этом только одно окно (самое верхнее) всегда является активным. Остальные окна (нижние) в это время остаются пассивными (нерабочими). Схема многооконного интерфейса представлена на рис. 6.3. Отметим, что все свои сообщения система Turbo Pascal
выдает только на английском языке.
Окна можно циклически переключать между собой с помощью функциональной клавиши F6
или комбинации клавиш Shift+F6
. Для этих же целей можно использовать пункты меню Window
-Next
или Window
-Previous
соответственно. Если установить курсор "мыши" на видимое окно и нажать на левую кнопку "мыши", то это окно станет активным. С помощью комбинации клавиш Alt+0
(соответствующие пункты меню Window
-List…
) можно вывести на экран список всех открытых окон, в котором можно выбрать требуемое окно, чтобы сделать его активным.
Рис. 6.3. Пример многооконного интерфейса
С помощью функциональной клавиши F5
или пунктов меню Window
-Zoom
можно распахнуть окно на весь экран. Повторное нажатие клавиши F5
приведет окно к исходному размеру. Эти процедуры также можно выполнить с помощью "мыши", установив курсор "мыши" на кнопку сворачивания-разворачивания окна и затем нажав на левую кнопку "мыши".
В верхней границе каждого окна расположен его заголовок. Для программ на языке Паскаль в заголовке указано имя файла с программой, например, react.pas. Редактор автоматически присваивает файлам по умолчанию имена типа NONAME00.PAS, NONAME01.PAS и т.д. Для окон специального назначения в заголовке приводятся их наименования, например: Help
(помощь), Output
(вывод результата), Window List
(список окон) и другие.
Окна можно перемещать по экрану. Для этого следует установить курсор "мыши" на верхнюю границу окна, нажать на левую кнопку "мыши" и с нажатой кнопкой перемещать "мышь". С клавиатуры эта операция выполняется таким образом: нажимаем комбинацию клавиш Ctrl+F5
, после чего клавишами перемещения курсора переводим окно в нужное место. Для фиксации выбранного положения окна следует нажать клавишу Enter
.
Для изменения размера окна следует установить курсор "мыши" в правый нижний угол окна, нажать на левую кнопку "мыши" и с нажатой кнопкой перемещать "мышь". С клавиатуры эта операция выполняется следующим образом: нажимаем комбинацию клавиш Ctrl+F5
, нажимаем клавишу Shift
, далее клавишами перемещения курсора меняем размер окна, после чего нажимаем клавишу Enter
для фиксации размера окна.
Процедуры перемещения окна и изменения его размера можно выполнить и с помощью пунктов меню Window
-Size/Move
.
Комбинация клавиш Alt+F3
позволяет закрыть окно. Эту же процедуру можно сделать с помощью пунктов меню Window
-Close
либо установив курсор "мыши" на кнопку закрытия окна и нажав на левую кнопку "мыши".
Вызов справочной подсистемы происходит после нажатия функциональной клавиши F1
. С помощью комбинации клавиш Shift+F1
можно обратиться к справочнику по всем зарезервированным словам системы программирования и языка программирования Паскаль. Указанные действия можно также выполнить с помощью пунктов меню Help
-Contents
и Help
-Index
соответственно.
Ввод нового текста в окне редактора можно начать после выбора пункта меню File
-New
. При наборе текста программы курсор может принимать форму _ или █. В первом случае вновь вводимый текст будет смещать вправо все символы, находящийся справа от этого текста. Это режим вставки
текста. Второй случай соответствует режиму замены
. При этом вновь набираемый текст будет замещать уже имеющийся текст. Переключение курсора между этими режимами осуществляется клавишей Insert
.
Переход на новую строку выполняется нажатием клавиши Enter
. Для быстрого перемещения курсора по тексту программы следует использовать клавиши Home
(перевод курсора в начало строки), End
(перевод курсора в конец строки), PageUp
(перевод курсора на одну страницу вверх), PageDown
(перевод курсора на одну страницу вниз). С помощью комбинаций клавиш Ctrl+PageUp
и Ctrl+PageDown
можно быстро перейти в начало или конец программы соответственно. Для удаления ошибочно введенных символов следует использовать клавиши Delete
и Backspace
. Удалить строку целиком можно с помощью комбинации клавиш Ctrl+Y
.
Для просмотра текста программы можно также использовать линейки прокрутки. При перемещении "бегунка" линейки с помощью "мыши" происходит сдвиг текста в соответствующую сторону. Индикатор координат курсора находится в левой нижней части окна и показывает, в какой строке и в каком столбце находится курсор.
Для самого первого сохранения текста вновь вводимой программы в файле следует в меню выбрать пункты File
-Save As
. При этом откроется окно ввода имени файла (рис. 6.4). В верхней части этого окна отображаются: вверху – поле ввода имени файла Save File As
(по умолчанию там стоит *.pas) и окно Files
со списком файлов с расширением .pas из текущего каталога. В нижней части окна отображаются наименование текущего каталога и сведения о файле, на имени которого установлен курсор в списке файлов (имя, размер, дата и время создания). Для перехода между элементами интерфейса следует использовать курсор "мыши" или клавишу Tab
.
Рис. 6.4. Окно ввода имени файла.
Если в списке файлов выбрать какой-либо файл, то его имя автоматически появится в поле ввода имени файла. Имя файла должно содержать не более восьми символов (кроме пробелов и русских букв) и его следует набирать в поле ввода. Расширение .pas можно не вводить, так как оно добавляется автоматически. Сохранение файла произойдет либо после нажатия на клавишу Enter
, либо если установить курсор "мыши" на кнопку [ОК]
и нажать на левую кнопку "мыши". После сохранения файла в верхней строке окна редактора уже будет присутствовать не строка типа NONAME00.PAS, а выбранное имя файла. В дальнейшем для сохранения текста программы достаточно будет нажимать функциональную клавишу F2
, окно ввода имени файла уже появляться не будет. При этом предыдущий вариант файла сразу не уничтожается, а переименовывается с заменой расширения .pas на .bak.
С помощью пункта меню File
-Save all
можно одновременно сохранить на магнитном диске содержимое всех окон редактора. Текст программы можно вывести на печатающее устройство, если воспользоваться пунктом меню File
-Print
.
Для загрузки в окно текста программы из файла следует использовать функциональную клавишу F3
либо в меню выбрать пункты File
-Open
. При этом откроется стандартное окно ввода имени файла. Выбрав в списке файлов требуемое имя, следует нажать клавишу Enter
либо с помощью "мыши" нажать кнопку [ОК]
.
Особое место в процессе набора и редактирования текста программы занимают блоки. Блок
– это выделенная цветом группа строк текста, которой можно манипулировать как единым целым. С помощью специальных операций с блоками возможно легко дублировать в одной и той же программе повторяющиеся фрагменты или переносить фрагменты программы из одного окна в другое. Выделить блок можно с помощью клавиш управления курсором при одновременно нажатой клавише Shift
. Для выделения блока можно также использовать "мышь", если перемещать ее при одновременно нажатой левой кнопке. Блок можно скопировать в любое место текста программы, в котором установлен курсор, с помощью комбинации клавиш Ctrl+Insert
. Удалить блок из текста и сохранить в специальной области памяти, называемой clipboard или "карман", можно с помощью комбинации клавиш Shift+Delete
. При этом "карман" может содержать только один блок, который был помещен в него последним. Вставить из "кармана" удаленный блок в место, обозначенное курсором, можно с помощью комбинации клавиш Shift+Insert
. Блок можно удалить безвозвратно с помощью комбинации клавиш Ctrl+Delete
.
Операции копирования, удаления в "карман", вставки и безвозвратного удаления блока могут быть выполнены также с помощью пунктов меню Edit
-Copy
, Edit
-Cut
, Edit
-Paste
и Edit
-Clear
соответственно.
Отменить последнее выполненное действие по редактированию текста программы можно с помощью пункта меню Edit
-Undo
(в версии 7.0).
Выход из системы программирования Turbo Pascal
осуществляется путем нажатия комбинации клавиш Alt+X
либо через пункты меню File
-Exit
. Перед выходом из системы на экран может быть выведено окно с предложением сохранить на магнитном диске текст программы и допустимыми ответами Yes
или No
, если текст программы после последних изменений еще не был записан.
Такое же предупреждение может быть выведено и в случае закрытия окна.
Выполнить трансляцию программы с целью поиска в ней синтаксических ошибок можно с помощью функциональной клавиши F9
или выбрав пункт меню Compile
-Compile
. Для трансляции программы с одновременным запуском ее на выполнение следует воспользоваться комбинацией клавиш Ctrl+F9
пунктом меню Run
-Run
. Если транслятор не обнаружит в программе синтаксических ошибок, то программа станет выполняться. Если текст программы перед этим не был сохранен на магнитном диске, то откроется окно с предложением сохранить файл.
Для просмотра результатов работы программы можно убрать с экрана окно редактора с помощью комбинации клавиш Alt+F5
. Возврат в исходное состояние происходит после нажатия любой клавиши или кнопки "мыши". С этой же целью можно включить окно вывода, для чего следует выбрать пункт меню Window
-Output
.
Переключение режимов работы транслятора (интерпретация или компиляция) производится с помощью пунктов меню Compile
-Destination
-Memory
или Compile
-Destination
-Disk
соответственно.
С целью отладки программу можно исполнить в пошаговом режиме. Для этого предназначены функциональные клавиши F4
, F7
и F8
. Клавиша F4
запускает программу на выполнение до той строки, в которой находится курсор. Клавиша F7
дает пошаговое выполнение программы с заходом во все пользовательские процедуры и функции. Клавиша F8
тоже дает пошаговое выполнение, но без входа в процедуры и функции. Текущая строка программы при этом отмечается полосой голубого цвета. Прервать процесс отладки можно с помощью комбинации клавиш Ctrl+F2
.
Алфавит – это совокупность допустимых в языке символов и слов. Элементы алфавита языка Turbo Pascal
можно условно разделить на четыре группы:
• символы, используемые в идентификаторах;
• разделители; специальные символы; неиспользуемые символы.
Идентификатор – это имя любого объекта программы, которое может содержать буквы, десятичные цифры и символ подчеркивания. В качестве букв можно использовать 26 латинских букв (прописных и строчных). Помимо идентификаторов буквы могут использоваться в шестнадцатеричных константах (от A до F), строковых константах, служебных словах и комментариях. Прописные и строчные буквы в идентификаторах и служебных словах не различаются: например, NAME и Name будут идентичны. Однако в строках символов строчные и прописные буквы различаются. Цифры используются для записи числовых констант.
Идентификатор не должен начинаться с цифры, а знак подчеркивания может находиться в любой позиции. Длина идентификатора может быть любой, но значимыми являются первые 63 символа.
Разделители используются для отделения друг от друга идентификаторов, чисел, зарезервированных слов. В качестве разделителей можно использовать:
• пробел;
• управляющий символ (символы с кодами от 0 до 31); комментарий.
Комментарии заключаются в скобки {} либо в скобки (**) и могут занимать любое число строк. Комментарий, в котором за открывающей скобкой следует знак $, является управляющей директивой транслятора.
Специальные символы можно подразделить на три вида:
• знаки пунктуации;
• знаки операций;
• зарезервированные слова.
Допустимые в языке Turbo Pascal
знаки пунктуации и их назначения представлены в табл. 6.1.
Таблица 6.1 Знаки пунктуации языка Turbo Pascal
Знак |
Назначение |
{ }
(* *) [ ]
(. .)
( )
'
:=
; :
= , .. .
^
@
#
$
|
Скобки комментария
Альтернатива скобок комментария
Выделение индексов массива, элементов множества, размера строки Альтернатива квадратных скобок
Выделение выражений, списков параметров
Апостроф для выделения символа, строковой константы
Знак присваивания значения переменной, типизированной константе Разделение операторов и объявлений
Отделение переменной или типизированной константы от описания типа, константы от ее значения
Отделение идентификатора типа от описания типа, константы от ее значения
Запятая для разделения элементов списка
Разделение границ диапазона
Обозначение конца программы, десятичная точка, отделение полей в записи
Обозначение указателя, значения величины по ее указателю
Обозначение адреса
Обозначение символа по его коду
Обозначение шестнадцатеричного числа, директивы транслятора
|
Знаки операций предназначены для обозначения арифметических, логических или других действий. Они бывают двух типов: состоящие из небуквенных символов (+ – * /) и буквенные операции (div, mod, not и другие), относящиеся к зарезервированным словам. Зарезервированные слова включают служебные слова и имена директив. Их можно использовать только по своему прямому назначению и их нельзя переопределять.
Далее приведен полный перечень зарезервированных слов языка Turbo Pascal
версий 6.0 и 7.0 в алфавитном порядке:
absolute external near |
shr |
and far nil |
string |
array file not |
then |
asm for object |
to |
assembler forward of |
type |
begin function or |
until |
case goto packed |
uses |
const if private |
var |
constructor implementation procedure |
virtual |
destructor in program |
while |
div inherited (7.0) public (7.0) |
with |
do inline record
downto interrupt repeat else label set end mod shl
|
xor |
Примечание "(7.0)" означает, что данное зарезервированное слово присутствует только в седьмой версии языка.
Некоторые символы, например, %, &, " и другие, включая буквы русского алфавита, не применяются в языке Turbo Pascal
, но их можно использовать в комментариях и строках.
В программе, написанной на языке Turbo Pascal
, могут присутствовать следующие разделы:
- заголовок программы (Program);
- раздел объявления используемых модулей (Unit);
- раздел объявления меток (Label);
- раздел объявления констант (Const);
- раздел объявления типов (Type);
- раздел объявления переменных (Var);
- раздел объявления процедур и функций (Procedure, Function); -тело программы (обязательная часть).
Заголовок программы состоит из служебного слова Program, имени программы и завершается точкой с запятой. Каждый раздел объявления также начинается со служебного слова (Uses, Label, Const, Type, Var, Procedure, Function). Тело программы начинается словом Begin и заканчивается словом End, после которого ставится точка.
Пример
. Программа вычисления суммы двух чисел.
Program EXAMPLE; {Заголовок программы}
Var X,Y,Summa: Real; {Раздел объявления переменных}
Begin {Тело программы}
{Вывод сообщения на дисплей}
Write('Введите числа X и Y:');
Readln(X,Y); {Ввод двух чисел с клавиатуры}
Summa:=X+Y; {Вычисление суммы}
WriteLn('Сумма чисел X и Y: ',Summa); {Вывод результата}
End. {Конец программы}
Под типом данных понимается множество допустимых значений этих данных, а также совокупность операций над ними. В языке Turbo Pascal
существуют следующие группы данных:
• простые типы;
• структурированные типы;
• указатели;
• процедурные типы; объекты.
Среди используемых в языке типов есть стандартные (предопределенные) и определяемые программистом. Стандартные типы не требуют предварительного определения. К ним относятся целые типы, вещественные типы, логический тип (Boolean), символьный тип (Char), строка (String), текстовый файл (Text), указатель (Pointer). Все другие используемые типы данных должны быть определены в разделе объявления типов либо в разделе объявления переменных или типизированных констант.
Раздел объявления начинается словом Type, после которого определяются новые типы:
Type <имя типа>=<определение типа>;
Простой тип данных определяет упорядоченное множество значений параметра. В языке Turbo Pascal
имеются несколько групп простых типов:
• целые типы;
• перечисляемый тип;
• логический тип;
• диапазон; символьный тип;
• вещественные типы.
Все простые типы, кроме вещественных, называются порядковыми типами. Для величин порядкового типа определены стандартные процедуры и функции Dec, Inc, Ord, Pred, Succ.
В языке Turbo Pascal
имеется пять стандартных типов целых чисел и пять стандартных вещественных типов, характеристики которых приведены в табл.
6.2 и 6.3 соответственно.
Таблица 6.2 Целые типы данных
Тип |
Диапазон |
Формат |
Объем памяти, байт |
Shortint
Integer
Longint
Byte Word
|
–128..127
–32768..32767
–2147483648..2147483647
0..255
0..65535
|
Знаковый
Знаковый
Знаковый Беззнаковый
Беззнаковый
|
1
2
4
1
2
|
Таблица 6.3 Вещественные типы данных
Тип |
Диапазон |
Число значащих цифр |
Память, байт |
Real
Single
Double
Extended
Comp
|
2.9E–39 … 1.7E+38
1.5E–45 ... 3.4E+38
5.0E–324 ... 1.7E+308
3.4E–4932 ... 1.1E+4932 –2E-63 ... 2E+63
|
11 – 12 7 – 8
15 – 16
19 – 20
18
|
6
4
8
10
8
|
Хотя тип Comp считается вещественным типом, он содержит только целые числа из широкого диапазона, но порядковым не считается. Все вещественные типы, кроме Real, можно использовать только при наличии в ПЭВМ арифметического сопроцессора или при включенном эмуляторе сопроцессора, для чего следует использовать директивы транслятора {$N+} и {$E+} соответственно. Все современные IBM-совместимые ПЭВМ имеют в своем составе арифметический сопроцессор.
Стандартный символьный тип Char определяет полный набор символов в кодировке ASCII. Функция Ord от величины типа Char дает код соответствующего символа. Сравниваются величины символьного типа по своим кодам.
Стандартный логический тип Boolean представляет собой тип данных, элементы которого могут принимать только два значения: True (истина) и False (ложь). Размер данных логического типа 1 байт.
Перечисляемый тип не является стандартным и определяется набором идентификаторов, с которыми могут совпадать значения параметра. Этот тип объявляется следующим образом:
Type
<имя типа>=(<идентификатор 1>,...,<идентификатор N>); Важно, в каком порядке перечислены идентификаторы при определении типа, так как первому идентификатору присваивается номер 0, второму – 1 и т.д. Один и тот же идентификатор можно использовать для определения только одного перечисляемого типа. Функция Ord от величины перечисляемого типа дает порядковый номер ее значения.
Пример
. Объявление данных перечисляемого типа.
Type Operat=(Plus,Minus,Multiple,Divide);
В любом порядковом типе можно выделить подмножество значений, определяемое минимальным и максимальным значениями, в которое входят все значения исходного типа, находящиеся в этих границах, включая и сами границы. Такое подмножество определяет диапазон, который задается следующим образом:
Type <имя типа>=<мин. значение>...<макс. значение>;
Минимальное значение не должно быть больше максимального.
Пример
. Объявление данных порядкового типа.
Type Dozen=1..12;{Числа от 1 до 12}
AddSub=Plus..Minus; {Операции сложения и вычитания}
Выражение – это синтаксическая единица языка, определяющая способ вычисления некоторого значения. Выражения в языке Turbo Pascal
формируются по определенным правилам из констант, простых переменных и компонент массивов, полей записей, полей объектов, функций, знаков операций и круглых скобок.
Переменные – это параметры программы, значения которых могут изменяться в процессе ее выполнения. Все переменные программы должны быть объявлены с указанием их типов. Переменные могут определяться:
• в разделе объявления переменных программы;
• в разделе объявления переменных подпрограммы; в разделе объявления переменных модуля;
• в заголовке подпрограммы.
Раздел объявления переменных начинается со слова Var и имеет следующий вид:
Var <список переменных>:<тип>;
Списков переменных может быть несколько. В разделе объявления переменных кроме стандартных типов можно использовать типы, объявленные перед этим в разделе объявления типов, а также новые типы, вводимые только для конкретных переменных. В заголовке подпрограммы при объявлении переменных можно использовать только стандартные или ранее определенные типы.
Пример
. Объявление переменных.
Type
Operat=(Plus,Minus,Multiple,Divide);
Var
X,Y,Z: Real; |
{Стандартный тип} |
I,J,K: Integer; |
{Стандартный тип} |
Operator: Operat; |
{Ранее объявленный тип} |
Digit: 0..9; |
{Объявление нового типа} |
Переменные, объявленные не в подпрограмме, называются глобальными
и доступны во всех частях программы. Переменные, объявленные в подпрограмме, называются локальными
и доступны только этой подпрограмме.
Константами называются параметры программы, значения которых не меняются в процессе ее выполнения. В языке Turbo Pascal
возможно двоякое использование констант:
• непосредственное использование значения константы; использование идентификатора константы.
Объявление константы с помощью идентификатора осуществляется в разделе объявления констант Const
. При этом имеется две разновидности констант, задаваемых идентификаторами:
• обычные константы, тип которых определяется их значением; типизированные константы, для которых в явном виде указывается их тип.
Обычные константы могут быть целого, вещественного, символьного, строкового, логического типов, типизированные константы – любого типа, кроме файлового. Форматы объявления простой и типизированных констант соответственно:
Const
<имя константы>=<значение>;
<имя константы>:<тип константы>=<значение>;
Значения констант могут задаваться как конкретными величинами, так и константными выражениями.
Целые константы могут быть десятичные и шестнадцатеричные. Перед шестнадцатеричной константой должен стоять знак $. В языке Turbo Pascal
заданы две предопределенные константы, определяющие максимальные положительные значения данных типа Integer и LongInt:
MaxInt=32767;
MaxLongInt=2147483647.
Вещественные константы могут изображаться в форме с фиксированной точкой и плавающей точкой. В первом случае целая и дробная части числа обязательно присутствуют и отделяются друг от друга точкой. Во втором случае число записывается в экспоненциальном виде: <мантисса>E<порядок>.
Мантисса представляется в виде целого числа или как вещественное число с фиксированной точкой; порядок обозначается положительным или отрицательным целым числом.
Пример
. Простые целые и вещественные константы.
Const
I=1;
Y=1.0;
Z=-1E-5;
HEX=$B800;
J=-10;
X=-0.5;
W=7.5e+15;
Cir=2*3.1415926;
Строка символов – это последовательность любого количества символов, расположенных на одной строке и заключенных в апострофы. Максимальная длина строки – 126 символов. Строка, состоящая из одного символа, называется символьной константой. Нулевая строка не содержит между апострофами ни одного символа. При необходимости поместить в строку символ апострофа его следует удвоить. Для включения в строку символов, не имеющих физического изображения или отсутствующих на клавиатуре ПЭВМ, используется их код с символом # перед ним.
Пример
. Символьные константы.
Const
Symbols='TURBO-PASCAL';
Return=#13#10;{Коды управляющих символов CR и LF}
Типизированные константы фактически представляют собой переменные, которым присвоены начальные значения. Они могут использоваться наравне с обычными переменными, в том числе и в левой части операции присваивания. Пример
. Типизированные константы.
Const
Maximum: Integer=9999;
Re: Real=–0.5;
Bell: Char=#7; {Символ звукового сигнала}
В языке Turbo Pascal
существует ряд заранее разработанных функций, которые используются как готовые объекты. Все они объединены в стандартные модули. В данном разделе рассматриваются только наиболее часто используемые стандартные функции.
Арифметические функции можно использовать только с аргументами целого и вещественного типов. Если арифметическая функция используется с ключом трансляции {$N+}, то вместо результата типа Real она вычисляет величину типа Extended. Перечень арифметических функций приведен в табл. 6.4.
Таблица 6.4 Арифметические функции
Функция |
Назначение |
Тип результата |
Abs(x)
Arctan(x)
Cos(x)
Exp(x)
Frac(x)
Int(x)
Ln(x)
Pi
Sin(x)
Sqr(x)
Sqrt(x)
Random
Random(i) Randomize
Inc(x,n) Dec(x,n)
|
Абсолютное значение аргумента
Арктангенс аргумента Косинус аргумента
ex
Дробная часть аргумента
Целая часть аргумента
Натуральный логарифм аргумента
Число "пи"
Синус аргумента
Квадрат аргумента
Квадратный корень аргумента
Случайное число в интервале 0..1
Случайное число в интервале 0..i
Инициализация генератора случайных чисел
Увеличение/уменьшение значения целой переменной x
на n
. При отсутствии n
инкремент/декремент равен 1
|
Совпадает с типом x
Вещественный
Вещественный
Вещественный
Вещественный
Вещественный
Вещественный
Вещественный
Вещественный
Совпадает с типом x
Вещественный
Вещественный
Целый
Целый
Целый
|
Функции преобразования типа предназначены для преобразования типов величин. К их числу относятся следующие:
Chr(x) – преобразование кода в символ. Аргумент типа Byte, результат типа Char;
Ord(x) – преобразование любого порядкового типа в целый тип. Аргумент – величина любого порядкового типа, результат – типа Longint.
Round(x) – округление вещественного числа до ближайшего целого. Аргумент – величина вещественного типа, результат – типа Longint.
Trunc(x) – получение целой части вещественного числа. Аргумент – величина вещественного тип, результат – типа Longint.
Следующие функции позволяют выполнить ряд действий над данными порядкового типа. К ним относятся:
Odd(x) – проверка аргумента на нечетность. Аргумент – типа Longint. Результат – типа Boolean равен True, если аргумент нечетный, и False, – если четный.
Pred(x) – определение предыдущего значения величины x. Аргумент может быть любого порядкового типа. Результат – предшествующее значение того же типа, например, Pred(2)=1.
Succ(x) – определение последующего значения величины x. Аргумент может быть любого порядкового типа. Результат – последующее значение того же типа, например, Succ(2)=3.
Арифметические операции применимы только к величинам целых и вещественных типов. Они могут быть унарные и бинарные.
Унарный знак минус (–), поставленный перед величиной целого либо вещественного типа, приводит к изменению знака этой величины. Унарный знак плюс (+) не оказывает никакого влияния на величину. Бинарные арифметические операции приведены в табл. 6.5.
Таблица 6.5 Арифметические операции
Знак |
Операция |
Типы операндов |
Тип результата |
+
–
*
/
div
mod
|
Сложение
Вычитание
Умножение
Деление
Деление целых чисел
Остаток от деления
|
Целые
Хотя бы один вещественный
Целые
Хотя бы один вещественный
Целые
Хотя бы один вещественный
Целые или вещественные
Целые
Целые
|
Целый
Вещественный
Целый
Вещественный
Целый
Вещественный
Вещественный
Целый
Целый
|
Вещественный результат будет типа Extended, если используется директива трансляции {$N+}, и типа Real – в противном случае. Знаки операций +, –, * могут использоваться и с другими типами операндов, но тогда они имеют другой смысл. Знаки операций div и mod должны отделяться от операндов пробелами.
Логические операции применяются к величинам логического типа, результат операции – логического типа. Имеется одна унарная логическая операция not (отрицание) и три бинарные операции: and (И), or (ИЛИ), xor (исключающее ИЛИ). Знаки логических операций отделяются от операндов пробелами. Результаты логических операций определяются таблицами истинности (табл. 6.6 и 6.7).
Таблица 6.6
Таблица истинности операции not
x
|
not x
|
False True |
True
False
|
Таблица 6.7 Таблица истинности операций and, or, xor
X |
Y |
x and y |
x or y |
x xor y |
False
False
True
True
|
False True
False
True
|
False
False
False
True
|
False
True
True
True
|
False
True
True
False
|
Операции not, and, or, xor можно использовать для операций над отдельными битами целого числа. К битовым операциям относятся также операции сдвига shl и shr.
Операции отношения предназначены для сравнения двух величин, которые могут быть любого типа, кроме файлового. Результат сравнения имеет логический тип. К операциям отношения относятся следующие: = (равно); <= (меньше или равно); <> (не равно); >= (больше или равно); < (меньше); > (больше).
Операции отношения используются также для указателей, строк, множеств.
Вычисление значений выражений выполняется в определенном порядке. Вычисление начинается с определения переменных и констант, входящих в выражение. Дальнейшие действия выполняются в соответствии с их приоритетами. Для изменения последовательности вычислений служат круглые скобки. Количество парных круглых скобок в выражении может быть любым. Приоритеты всех действий, выполняемых при вычислении выражений, приведены в табл. 6.8.
Таблица 6.8 Приоритеты действий при вычислении выражений
Приоритет |
Тип действий |
Операции или элементы |
1
2
3
4
5
6
|
Вычисления в круглых скобках
Вычисления значений функций
Унарные операции
Операции типа умножения
Операции типа сложения
Операции отношения
|
( )
Функции
@, not, унарные + и – *, /, div, mod, and, shl, shr
+, –, or, xor
=, <>, <, >, <=, >=, in
|
Пример
. Логическое выражение: (X > 0) and (X < 5).
В этом примере сначала выполнятся операции сравнения, а затем логическая операция.
Операторы языка описывают алгоритмические действия и выполняются в том порядке, в котором они записаны в тексте программы. Соседние операторы отделяются друг от друга символом точки с запятой. Все операторы языка Turbo Pascal
подразделяются на две группы: простые и структурированные.
Простые операторы не содержат в себе никаких других операторов. К ним относятся:
• оператор присваивания;
• оператор безусловного перехода; вызова процедуры; пустой оператор.
Оператор присваивания (:=) предписывает выполнить выражение, заданное справа от оператора, и присвоить результат переменной, идентификатор которой расположен слева от оператора. Переменная и результат выражения должны иметь один и тот же тип (исключение – переменная имеет вещественный тип, а выражение – целочисленный). Допустимо присваивание любых типов данных, кроме файловых. Формат оператора присваивания:
<идентификатор>:=<выражение>;
Пример
. Оператор присваивания.
Rezult:=Sin(A)+Pi+1.0;
Оператор безусловного перехода Goto позволяет изменить последовательность выполнения операторов и перейти к выполнению программы, начиная с заданного оператора, отмеченного меткой. Эта метка должна быть указана в операторе Goto. Формат оператора Goto:
Goto <метка>;
Метки в языке Turbo Pascal
могут быть двух типов: в виде целого числа в диапазоне от 0 до 9999 и в виде идентификатора. Одной меткой можно пометить только один оператор. Метка от оператора оделяется двоеточием. Все используемые метки должны быть перечислены в разделе объявления меток, начинающемся зарезервированным словом Label.
Пример
. Использование оператора безусловного перехода. Label M1;
. . .
Goto M1; . . .
M1: Rezult:=Sin(A); . . .
При использовании оператора Goto необходимо помнить следующее:
1) метка, на которую передается управление, должна быть описана в разделе описания меток того блока основной программы, процедуры, функции, в котором эта метка используется:
2) областью действия метки является тот блок, в котором она описана, и переход возможен только в переделах этого блока;
3) недопустима попытка выйти за пределы блока или выполнить переход внутрь другого блока.
В соответствии с правилами структурного программирования оператор Goto должен применяться только
для преждевременного выхода из цикла или при обработке ошибок. В остальных случаях оператор Goto не допустим!
Оператор вызова процедуры служит для активизации стандартной либо предварительно описанной программистом процедуры. Формат оператора вызова процедуры:
<идентификатор процедуры> (список параметров);
Список параметров может отсутствовать. Пример
. Вызов процедуры One.
Program Prim;
Procedure One; Begin
|
. . .
End;
|
{Тело процедуры One} |
Begin |
{Начало программы Prim} |
One |
{Вызов процедуры One} |
End. |
{Конец программы Prim} |
Пустой оператор не содержит никаких символов и не выполняет никаких действий. Пустой оператор может быть помечен меткой и использован для безусловного перехода на него.
Пример
. Пустой оператор.
Begin . . . |
Goto Metka;. . . |
{Переход в конец блока} |
Metka:;
End.
|
{Пустой оператор с меткой} |
Структурированные операторы строятся из других операторов по строго определенным правилам. Все они подразделяются на четыре группы:
• составной оператор;
• условные (логические) операторы If и Case; операторы цикла (повтора) For, While, Repeat; оператор над записями With.
Составной оператор представляет собой группу из произвольного числа операторов, ограниченную операторными скобками Begin и End. Этот оператор воспринимается как единое целое и может находиться в любом месте программы, где допускается наличие оператора. Обычно составной оператор используется при написании условных операторов и операторов цикла. Формат составного оператора:
Begin <оператор 1;>
. . .
<оператор N >
End;
Условные операторы обеспечивают выполнение либо невыполнение некоторого оператора или группы операторов в зависимости от заданных условий. В языке TurboPascal
существуют два условных оператора: If и Case. Оператор If может принимать одну из двух форм:
1) If <условие> Then <оператор 1> Else <оператор 2>; 2) If <условие> Then <оператор>;.
Условие – это выражение логического типа, которое может быть простым или сложным. Сложные условия образуются с помощью логических операций not, and, or, xor. При записи условия могут использоваться все возможные операции отношения. Результат условного выражения имеет логический тип.
В первом случае, если значение условного выражения "истина" (True), выполняется <оператор 1>, если "ложь" (False) – <оператор 2>. Во втором случае, если результат выражения "истина", выполняется <оператор>, если "ложь", – оператор, следующий сразу за оператором If.
Один оператор If может входить в состав другого оператора If. В таком случае говорят о вложенности операторов:
If <условие 1> Then
If <условие 2> Then <оператор 1>
Else <оператор 2>;
При вложенности операторов каждое Else соответствует тому Then, которое непосредственно ему предшествует. Конструкции со степенью вложенности более двух-трех следует избегать.
Пример
. Условный оператор IF (первая форма).
If A > B Then D:=A+B Else D:=A-B;
Оператор выбора Case является обобщением оператора If и позволяет сделать выбор из произвольного числа имеющихся вариантов. Оператор состоит из выражения, называемого селектором, и списка параметров, каждому из которых предшествует список констант выбора (при этом список может состоять всего из одной константы). Формат оператора выбора:
Case <выражение-селектор> of
<список 1>: <оператор 1>;
. . .
<список N>: <оператор N>;
Else <оператор>
End;
Оператор Case работает следующим образом. Сначала вычисляется значение выражения-селектора, после чего выполняется тот оператор, константа выбора которого равна текущему значению селектора. Если ни одна из констант выбора не равна значению селектора, выполняется оператор, стоящий за словом Else. Если слово Else отсутствует, выполняется следующий после Case оператор. Селектор должен иметь порядковый тип. Список констант выбора состоит из произвольного числа значений или диапазонов, разделенных запятыми. Тип констант должен совпадать с типом селектора.
Пример
. Селектор целочисленного типа.
Case I of
1: Z:=I+10;
2: Z:=I+100;
3: Z:=I+1000
End;
Пример
. Селектор интервального типа.
Case I of
1..10: Z:=I+10;
11..20: Z:=I+100;
21..30: Z:=I+1000;
Else Z:=0
End;
Пример
. Селектор перечисляемого типа.
Var Season: (Winter,Spring,Summer,Autumn);
Begin
Case Season of
Winter: Writeln('Зима');
Spring: Writeln('Весна');
Summer: Writeln('Лето');
Autumn: Writeln('Осень')
End;
End;
Пример
. Селектор символьного типа.
Case Symbol of
'A','a': Writeln('Это буква "A"');
. . .
'Z','z': Writeln('Это буква "Z"')
End;
Операторы цикла используются для организации выполнения некоторой последовательности операторов более одного раза. Если количество повторов известно заранее, используется оператор For, если количество повторов неизвестно, применяются операторы Repeat или While.
Оператор цикла For может имеет два формата:
1) For <параметр цикла>:=<S1> to <S2> do <оператор>; 2) For <параметр цикла>:=<S1> downto <S2> do <оператор>;
Здесь S
1 и S
2 – выражения, определяющие соответственно начальное и конечное значения параметра цикла, <оператор> – цикла. Тело цикла может быть простым или составным оператором. Оператор For обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все значения параметров цикла от начального до конечного. Параметры цикла должны принадлежать к простому типу данных, кроме вещественного. Значение параметра S
1 при каждом повторе цикла последовательно увеличивается (при For...to) или уменьшается (при For...downto) только на единицу. Шаг, отличный от единицы, можно задать с помощью операторов цикла Repeat и While. В теле цикла запрещены операторы, меняющие значение параметра цикла, в противном случае цикл может оказаться бесконечным либо не выполниться ни разу. Количество повторов тела цикла в операторе For можно определить по табл. 6.9.
В теле оператора For могут находиться другие операторы цикла. При этом внутренние циклы называются вложенными
.
Таблица 6.9 Количество повторов тела цикла в операторе For
Оператор |
S
1 < S
2 |
S
1 = S
2 |
S
1 > S
2 |
For...to
For...downto
|
S
2–S
1+1 Не выполняется |
1
1
|
Не выполняется S
1–S
2+1 |
Пример
. Обнуление элементов матрицы.
For I:=1 to 10
For J:=1 to -5
A[I,J]:=0;
Оператор цикла Repeat имеет следующий формат:
Repeat <оператор>; . . .
<оператор>
Until <условие>;
Условие является выражением логического типа. Операторы, заключенные между словами Repeat и Until, являются телом цикла. Этот оператор цикла имеет три характерные особенности:
• выполняется, по крайней мере, один раз;
• тело цикла выполняется, пока условие равно "ложь";
• в теле цикла может находиться произвольное число операторных скобок Begin...End.
Цикл, организуемый с помощью операторов Repeat...Until, называется циклом с постусловием, так как условие окончания повторов проверяется после выполнения тела цикла. Внутри тела цикла должен находиться оператор, влияющий на значение условия, иначе цикл будет выполняться бесконечно.
Пример
. Вычисление суммы четных чисел в интервале от 0 до 10.
Program DemoRepeat;
Var I, Sum: Integer;
Begin
I:=0;
Sum:=0;
Repeat
Sum:=Sum+I;
I:=I+2
Until (I > 10);
Writeln('Сумма четных чисел в интервале 0..10 равна ',Sum) End.
Оператор While аналогичен оператору Repeat, но проверка условия выполнения тела цикла производится в самом начале оператора. Поэтому цикл, организуемый с помощью оператора While, называется циклом с предусловием. Формат оператора While:
While <условие> do <оператор>;
Условие – выражение логического типа, тело цикла – простой или составной оператор. Перед каждым повтором тела цикла вычисляется значение условия. Если результат равен "истина", тело цикла выполняется и снова вычисляется значение условия. Если результат равен "ложь", происходит выход из цикла и переход к следующему оператору. Если перед первым выполнением цикла значение условия было "ложь", тело цикла вообще не выполняется. Как и в операторе Repeat, внутри тела цикла должен быть оператор, определяющий условие выхода. Операторы цикла Repeat и While могут быть вложенными. Пример
. Вычисление суммы нечетных чисел в интервале от 0 до 10.
Program DemoWhile;
Var I, Sum: Integer;
Begin
I:=1;
Sum:=0;
While (I < 11) do
Begin
Sum:=Sum+I;
I:=I+2
End;
Writeln('Сумма нечетных чисел в интервале 0..10 равна ', Sum) End.
Во всех операторах цикла можно осуществить преждевременный выход из цикла, используя оператор безусловного перехода Goto. В версии 7.0 языка Turbo Pascal
в циклах можно использовать две новые стандартные процедуры – Break и Continue. Процедура Break позволяет досрочно выйти из цикла, не дожидаясь выполнения условия выхода. Процедура Continue позволяет начать новый повтор тела цикла, даже если предыдущий не завершен.
Структурированные типы данных определяют наборы однотипных или разнотипных компонент. Типы компонент образуются из других типов данных. В языке Turbo Pascal
существуют следующие структурированные типы данных:
• массив;
• строка (разновидность массива);
• запись;
• множество;
• файл.
Массив состоит из фиксированного числа элементов одного типа. Число элементов устанавливается при описании и в процессе выполнения программы не меняется. Каждый элемент массива имеет индекс, с помощью которого осуществляется доступ к отдельному элементу. Индекс представляет собой выражение простого типа, кроме LongInt и вещественного. Тип индекса определяет границы изменения значений индекса. Существуют две формы объявления массива:
1) Type
<имя типа>=array[тип индекса] of<тип компонент>;
Var
<идентификатор>:<имя типа>;
2) Var
<идентификатор>:array[тип индекса] of <тип компонент>;
Пример
. Описания одномерных и двумерных массивов соответственно.
Var
Vector: array [1..4] of Real;
Matrix: array [1..4,1..4] of Word;
Если при описании массива задан один индекс, массив называется одномерным или вектором, если два индекса – двумерным или матрицей, если n
индексов – n
-мерным. Размерность массива ограничена только объемом оперативной памяти конкретной ЭВМ. Для описания размерностей массива можно использовать предварительно описанные константы:
Const
G1=4;
G2=6;
Var
Mas: array[1..G1,1..G2] of Real;
Элементы массива располагаются в памяти ЭВМ последовательно. Элементы с меньшими значениями индекса хранятся в более низких адресах памяти. Многомерные массивы располагаются таким образом, что самый правый индекс возрастает самым первым. Объем памяти, занимаемый массивом, равен произведению количества элементов на объем памяти, занимаемый одним элементом.
После объявления массива каждый его элемент можно обработать, указав идентификатор массива и индекс элемента в квадратных скобках, например, Vector[2], Matrix[2,3]. Поэтому элементы массива называются также индексированными переменными, которые используются в программе так же, как и простые переменные. При работе с массивами возникает несколько типичных ситуаций, рассматриваемых в следующих примерах.
Пример
. Инициализация массива. For I:=1 to 4 do Vector[I]:=0.0;
Пример
. Ввод элементов массива.
For I:=1 to 4 do Readln(Vector[I]);
Пример
. Вывод элементов массива.
For I:=1 to 4 do Writeln(Vector[I]);
Пример
. Копирование массива.
For I:=1 to 4 do Vector[I]):=Matrix[I,2];
Пример
. Поиск наименьшего и наибольшего элемента массива.
Min:=1E20; {Инициализация выходных переменных}
Max:=-1E-20;
For I:=1 to 4 do
Begin
If (Vector[I] < Min) Then Min:=Vector[I];
If (Vector[I] > Max) Then Max:=Vector[I] End;
При задании значений массиву-константе компоненты указываются в круглых скобках и разделяются запятыми, например
Const
Vector: array[1..4] of Real=(1.0,2.0,3.0,4.0);
Для работы с массивом как с единым целым используется идентификатор массива без указания индекса. При этом возможны только три типа операций: присваивание, отношения "равно" и "не равно", а массивы должны быть идентичных типов и описаны таким образом:
Var A,B: array[1..20] of Real;
A = B;
Результат сравнения будет равен "истина", если значение каждого элемента массива A равно соответствующему значению массива B.
A <> B;
Результат сравнения будет равен "истина", если хотя бы одно значение элемента массива A не равно значению соответствующего элемента массива B. A:=B;
Все значения элементов массива B присваиваются соответствующим элементам массива A. Значения элементов массива B не изменяются.
Строка – это последовательность символов произвольной длины, но не более 255 символов. При использовании в выражениях строка заключается в апострофы. Строковые данные являются необходимым элементом программ, обрабатывающих текстовую информацию. Форматы описания строки:
1) Type
<имя типа>=string[максимальная длина строки];
Var
<идентификатор>:<имя типа>; 2) Var
<идентификатор>:string[максимальная длина строки];
Если максимальная длина строки отсутствует, то она предполагается равной 255.
Пример
. Объявления данных строкового типа.
Const
Common_Disk: string[2]='C:';
Var
File_Name: string[63]; Strk: string;
Для строк применимы операции конкатенации (сцепления) и сравнения.
Операция конкатенации (+) добавляет к первой строке вторую. Пример
. Сцепление двух строк.
Var
Str1,Str2,Str3: string;
. . .
Str1:='Turbo';
Str2:='Pascal';
Str3:=Str1+Str2; {В переменной Str3 – 'TurboPascal'} . . .
Сравнивать можно строки разной длины. Сравнение осуществляется слева направо в соответствии с ASCII-кодами соответствующих символов. Считается, что отсутствующие символы в более короткой строке имеют код меньше кода любого действительного символа. Например, 'XS' больше, чем 'X'.
Фактически строка из n
символов представляет собой массив из (n
+1) символов. К отдельным символам строки можно обратиться по индексу данного символа в строке, который является целочисленным выражением и записывается в квадратных скобках, например, Strk[3]. Нулевой элемент строки (например, Strk[0]) содержит ее текущую длину. Каждый символ строки занимает в памяти ЭВМ 1 байт.
Для обработки строковых данных в языке Turbo Pascal
имеются следующие стандартные процедуры и функции:
Delete(St,Poz,N) – процедура удаления N символов строки St начиная с позиции Poz;
Insert(St1,St2,Poz) – процедура вставки строки St1 в строку St2 начиная с позиции Poz;
Str(IBR,St) – процедура преобразования числового значения величины переменной IBR и помещение результата в строку St;
Val(St,IBR,Cod) – процедура преобразования числовой строки St в число целого или вещественного типа (переменная IBR). Cod – переменная целого типа, содержащая код успеха преобразования. Если значение Cod равно 0, преобразование выполнилось успешно, в противном случае переменная содержит номер позиции первого ошибочного символа;
Copy(St,Poz,N) – функция выделения из строки St подстроки длиной N начиная с позиции Poz.
Concat(St1,St2,...,StN) – функция сцепления строк St1, ..., StN в том порядке, в каком они указаны в списке параметров;
Length(St) – функция вычисления длины в символах строки St;
Pos(St1,St2) – функция поиска первого появления в строке St2 подстроки St1. Результат функции имеет целый тип и равен номеру той позиции, где находится первый символ подстроки St1. Если подстроки не найдено, результат функции равен 0;
UpCase(Ch) – функция преобразования строчной буквы в прописную. Аргумент функции и результат имеют символьный тип. Обрабатываются буквы только латинского алфавита.
Запись – это тип данных, состоящий из фиксированного числа компонентов разного типа. Компоненты записи называются полями. Форматы объявления записи:
1) Type
<имя типа>=record
<идентификатор поля>:<тип компоненты>;
. . .
<идентификатор поля>:<тип компоненты> end;
Var
<идентификатор>:<имя типа>; 2) Var
<идентификатор>:record
<идентификатор поля>:<тип компоненты>;
. . .
<идентификатор поля>:<тип компоненты> end;
Пример
. Объявление записей и переменных типа "запись".
Type
Data=record {Тип - дата рождения}
Year: Integer;
Month: 1..12; Day: 1..31 end;
Auto = record {Тип – сведения об автомобиле}
Nomer: Integer; |
{Номер автомобиля} |
Marka: String[20]; |
{Марка автомобиля} |
FIO: String[60]; |
{Имя владельца} |
Adres: String[120] end; |
{Адрес владельца} |
Var
Men: Data;
Driver: Auto;
В данных примерах запись Data содержит три поля, а запись Auto – четыре. Доступ к полям осуществляется через переменные типа записей Men и Driver соответственно. Идентификатор поля должен быть уникальным только в пределах записи, однако во избежание ошибок лучше делать его уникальным в пределах всей программы. Объем памяти, необходимой для записи, складывается из длин полей.
Обращение к значению поля осуществляется с помощью идентификатора переменной и идентификатора поля, разделенных точкой. Такая комбинация называется составным именем, например: Men.Year, Men.Month, Men.Day. Для присваивания полям значений используется оператор присваивания, например:
Men.Year:=1992;
Men.Month:=2;
Men.Day:=29;
Составные имена используются, в частности, в процедурах ввода-вывода, например:
Read(Input_File,Men.Year,Men.Month,Men.Day);
Write(Output_Filr,Men.Year,Men.Month,Men.Day);
Допускается применение оператора присваивания к записям в целом, если они имеют один и тот же тип. Можно объявить массив записей следующим образом:
Var
Person: array[1..250] of Data;
При задании значений константе-записи ее поля записываются в круглых скобках через точку с запятой. Для задания значения каждого поля сначала указывается имя поля, а затем через двоеточие – его значение, например:
Const Birthday: Data=(Year:1971; Month:12; Day:9);
Записи обычно используются для организации файлов на магнитных дисках. Записи могут служить для описания комплексных чисел, при этом действительная и мнимая части комплексного числа являются полями записи, например:
Var X,Y,Z: record |
{X, Y, Z - комплексные числа} |
Re: Real; |
{Действительная часть} |
Im: Real |
{Мнимая часть} |
end;
Обращения к полям записи посредством составных имен имеет громоздкий вид. Для преодоления этого неудобства предназначен оператор With, который имеет следующий формат:
With <переменная типа запись> do <оператор>;
В этом случае внутри оператора можно указывать только поле записи, например: With X do
Begin
Re:=-1.5;
Im:=1.7
End;
Операторы With могут быть вложенными, но уровень вложенности не может превышать девяти.
Множество представляет собой набор взаимосвязанных по какому-либо признаку или группе признаков объектов, которые можно рассматривать как единое целое. Каждый объект в таком наборе называется элементом множества. Все элементы множества должны иметь простой тип, который называется базовым типом множества. Базовый тип задается диапазоном или перечислением. В выражениях значения элементов множества указываются в квадратных скобках, например: [a,b,c], ['a'..'z']. Если множество не имеет элементов, оно называется пустым и обозначается как [].
Число элементов множества не может быть больше 256, порядковые номера элементов должны находиться в пределах от 0 до 255. Форматы объявления множества:
1) Type
<имя типа>=set of <элемент 1, ... , элемент N>;
Var
<идентификатор>:<имя типа>;
2) Var
<идентификатор>:set of <элемент 1, ..., элемент N>; Пример
. Объявления переменных типа множество.
Type
Simple=set of (3,5,7,11,13);
Number=set of 1..99;
Var
Prostoe: Simple;
Nomer: Number;
Letter: set of ('i','j','k');
Один элемент множества занимает в памяти ЭВМ 1 бит.
При задании значений константе-множеству ее элементы перечисляются через запятую (допустимо указывать диапазоны) и помещаются в квадратные скобки, например:
Const Digit: Number = [1..9];
Для множеств определены следующие операции:
+ – объединение множеств;
– – разность множеств;
* – пересечение множеств;
= – проверка эквивалентности двух множеств;
<> – проверка неэквивалентности двух множеств;
<= – проверка, является ли левое множество подмножеством правого множества;
>= – проверка, является ли правое множество подмножеством левого множества; in – проверка, входит ли элемент, указанный слева, в множество,
указанное справа.
Результатом операций объединения, разности и пересечения является множество, остальные операции дают результат логического типа.
Файл в языке Turbo Pascal
представляет собой последовательность компонент одного типа, расположенных на периферийном устройстве ПЭВМ. Компоненты могут быть любого типа, кроме файла и объекта. Число компонент в файле не объявляется. Такие файлы называются типизированными. Форматы объявления файла:
1) Type
<имя типа>=file of <тип компонент>; Var
<идентификатор>:<имя типа>; 2) Var
<идентификатор>:file of <тип компонент>; Пример
. Объявления файловых переменных.
Type
Number=file of Integer;
Symbol=file of 'A'..'Z';
Var
Int_File: Number;
Real_File: file of Real;
Sym_File: file of Symbol;
Prnt: Text;
Стандартный тип Text определяет файл, содержащий символы, объединенные в строки, а каждая строка завершается специальными символами "Перевод каретка" (CR) и "Перевод строки" (LF) с десятичными кодами 10 и 13. При этом тип Text не эквивалентен типу file of Char.
В языке Turbo Pascal
можно использовать файл без типа, при объявлении которого не указывается тип компонент, например:
Var UnTyp: file;
Файловые переменные имеют специфическое применение. Над ними нельзя выполнять никаких операций. Их можно использовать лишь для выполнения операций с файлами.
Рассматриваемые до сих пор объекты программы обладали тем свойством, что память под них выделяется еще на этапе трансляции программы. Структуры данных такого типа называются статическими
. Программы, содержащие статические структуры данных, обладают тем недостатком, что им требуются значительные ресурсы и оперативной, и внешней памяти.
В языке Turbo Pascal
имеется возможность по ходу выполнения программы выделять и освобождать дополнительную память для размещения в ней данных. Таким образом организуются динамические
структуры данных. Память ЭВМ при этом используется более эффективно, так как в среднем программе с динамическими структурами данных требуются меньшие объемы памяти.
Возможность создания динамических структур данных связана с наличием в языке Turbo Pascal
особых типов данных – указателей
. Указатель дает адрес объекта определенного типа, называемого базовым типом. Формат объявления указателя:
Type
<тип указателя>=^<идентификатор типа>;
Пример
. Объявление переменной-указателя.
Type
Mas=array[1..100] of Real; {Базовый тип}
Point=^Mas; {Указатель на массив вещественных чисел}
Var
Vector=Point;
В данном примере Point является указателем (ссылкой) на переменную типа Mas. Для обращения к значению переменной типа Point служит идентификатор Vector^.
Переменная-указатель занимает 4 байта памяти и является носителем фактического адреса в памяти ЭВМ величины базового типа. Значение этой переменной можно задать с помощью стандартных процедур New или GetMem, использования адресного оператора @, присваиванием ей значения другой переменной этого же типа. Указателю можно присвоить значение nil, означающее отсутствие ссылки на какой-либо объект (фактически в этом случае указателю присваивается нулевое значение).
В языке Turbo Pascal
имеется стандартный тип Pointer, который дает указатель, не связанный ни с каким конкретным базовым типом. Операция получения адреса объекта имеет следующий вид:
X:=@Y; {X - адрес переменной Y}
Использование указателей совместно со стандартными процедурами New и Dispose позволяет осуществить динамическое распределение памяти.
Процедура New(P), где P – указатель, позволяет выделить область памяти такого размера, в котором можно разместить объект базового типа. Указатель принимает значение адреса выделенной области.
Процедура Dispose(P), где P – указатель, позволяет освободить область памяти, на которую ссылается указатель P, для последующего использования. После выполнения процедуры значение указателя P становится неопределенным.
Пример
. Реализация динамического массива.
Program DYNAMIK;
Type
Mas=array[1...500] of Real;
Point=^Mas;
Var
P: Point; i: Word;
Begin
New(P); {Выделение области памяти для 500 чисел}
For i:=1 to 500 do read(P^[i]);
For i:=500 downto 1 do write(P^[i]);
Dispose(P); {Освобождение области памяти} End.
В практике программирования довольно часто встречается ситуация, когда одну и ту же группу операторов, реализующих определенную цель, требуется повторить без изменений в нескольких других местах программы. Чтобы избавить программиста от такого нерационального занятия, в 1957 году
М. Уилксом была предложена концепция подпрограмм, которая получила широкое распространение практически во всех языках программирования.
Подпрограмма
– это именованная логически законченная группа операторов языка, которую можно вызвать для выполнения любое количество раз из различных мест программы. В языке TurboPascal
существуют две разновидности подпрограмм: процедуры и функции.
Процедура
– это независимая поименованная часть программы, предназначенная для выполнения определенных действий. По структуре ее можно рассматривать как небольшую программу. После однократного описания процедуру можно вызвать по имени из последующих частей программы. После выполнения процедуры программа продолжится с оператора, следующего непосредственно за оператором вызова процедуры. Имя процедуры не может находиться в выражении в качестве операнда.
Функция
аналогична процедуре, но имеет два отличия:
1) функция передает в программу результат своей работы в виде значения простого типа;
2) имя функции может находиться в выражении как операнд.
Все процедуры и функции языка TurboPascal
подразделяются на две группы: стандартные и определенные пользователем.
Стандартные процедуры и функции являются частью языка и могут вызываться по имени без предварительного описания.
Процедуры и функции пользователя организовываются самим программистом в соответствии с правилами языка. Предварительное описание таких подпрограмм обязательно.
В отличие от стандарта языка Паскаль в версии TurboPascal
не реализованы стандартные процедуры Get, Put, Pack, UnPack, Page.
Все параметры, которые использует подпрограмма, можно разбить на две категории: локальные и глобальные. Локальные параметры
объявляются внутри подпрограммы и доступны только ей самой. Глобальные параметры
объявляются в основной программе и доступны как самой программе, так и всем ее подпрограммам. Обмен информацией между программой и подпрограммой может осуществляться только с помощью глобальных параметров.
Подпрограмма может использовать глобальные параметры двояким образом: непосредственно обращаясь к параметру по имени либо используя механизм формальных параметров. Подпрограмма может непосредственно использовать любые глобальные параметры, кроме тех, которые имеют те же имена, что и ее локальные параметры.
Процедура предназначена для выполнения какой-то законченной последовательности действий. Объявление процедуры включает заголовок и тело процедуры:
Procedure <имя> (<формальные параметры>);
<разделы описаний>
Begin
<раздел операторов - тело процедуры>
End;
Имя процедуры – идентификатор, уникальный в пределах программы. Разделы описаний в процедуре – такие же, как и в основной программе. Формальные параметры могут отсутствовать. Формат оператора вызова процедуры:
<имя процедуры> (<список фактических параметров>);
Список фактических параметров может отсутствовать.
Несколько параметров, записываемых в объявлении процедуры и операторе вызова, разделяются запятыми. Фактические параметры должны совпадать по количеству и типам с формальными параметрами процедуры. Пример
. Процедура ввода N
целых чисел.
Program Prim;
Type
Arr=array[1..100] of Integer;
Var
Vector: Arr;
Kol: Byte;
Procedure InpInt(var Mas:Arr; N:Byte);
Var i:Integer;
Begin {Тело процедуры InpInt}
Writeln('Введите ',N,' целых чисел');
For i:=1 to N do Readln(Mas[i])
End;
Begin {Тело основной программы}
. . .
{Здесь должна быть проверка N<=100 перед вызовом процедуры}
. . .
InpInt(Vector,Kol); {Вызов процедуры InpInt} . . . End.
Объявление функции содержит зарезервированное слово Function, имя функции, список формальных параметров в круглых скобках, затем через двоеточие записывается тип функции, являющийся типом возвращаемого значения. Функция может возвращать значения следующих типов: порядкового, вещественного, строкового, указатель. В теле функции хотя бы раз имени функции должно быть присвоено значение. Формат объявления функции:
Function <имя> (<формальные параметры>):<тип результата>; <разделы описаний>
Begin
<раздел операторов>
End;
Пример
. Функция вычисления факториала числа N
.
Function Factorial(N: Byte): LongInt;
Var i: Byte;
Begin
Factorial:=N;
For i:=(N-1) downto 2 do
Factorial:=Factorial*i;
End;
Для досрочного выхода из подпрограммы предусмотрена процедура Exit. Досрочно прекратить выполнение программы можно с помощью процедуры Halt.
Формальные параметры указывают, с какими параметрами следует обращаться к этой подпрограмме (количество параметров, их последовательность, типы). Они задаются в заголовке подпрограммы в виде списка формальных параметров, разбитого на группы, разделенные точками с запятыми. В группу формальных параметров включаются однотипные параметры одной категории. В языке Turbo Pascal
существует четыре категории формальных параметров:
• параметры-значения, которые в подпрограмме не изменяются;
• параметры-переменные, которые подпрограмма может изменить и передать в основную программу;
• параметры-константы (используются только в версии 7.0); параметры-подпрограммы (параметры процедурного типа).
Для каждого формального параметра следует указать его имя и через двоеточие тип, а в случае параметра-переменной или параметра-константы - его категорию. Тип формального параметра может быть практически любым, однако в заголовок подпрограммы нельзя вводить новый тип. Например, нельзя записать:
Function Max(A: array[1..100] of Real): Real;
Чтобы правильно объявить данную функцию следует в основной программе объявить тип-массив, а затем использовать его в заголовке функции, например:
Type
Vector: array[1..100] of Real;
Function Max(A: Vector): Real;
При обращении к подпрограмме формальные параметры заменяются на соответствующие фактические вызывающей программы или подпрограммы.
Параметр-значение
не может быть файлового типа. Если параметровзначений одного типа несколько, их можно объединить в одну группу, перечислив их имена через запятую, а затем через двоеточие указать общий тип, например:
Procedure One(Max,Min: Real; Number: Word);
Function Two(X,Y: Integer): Real;
В качестве фактического параметра на месте параметра-значения при вызове подпрограммы может быть любое выражение допустимого для присваивания типа, например:
One(Abs(Max),Abs(Min),Sqr(N));
Rezult:=Two(X+Y,X-Y);
Параметр-переменная
указывается в заголовке подпрограммы аналогично параметру-значению, но перед именем параметра записывается слово Var. Действие слова Var распространяется в пределах одной группы параметров (до ближайшей точки с запятой). Тип параметров-переменных может быть любым, включая файловый.
Пример
. Объявление подпрограммы с разными параметрами:
Procedure MxMn(Mas:Vector; Var Max,Min:Real; Num:Word);
Здесь Max и Min – параметры-переменные, Mas и N – параметры- значения.
Параметр-константа
указывается в заголовке подпрограммы аналогично параметру-значению, но перед именем параметра записывается слово Const.
Действие слова Const распространяется в пределах одной группы параметров. Параметры-константы предназначены для передачи в подпрограмму параметров больших размеров. Тип такого параметра может быть любым, кроме файлового.
В языке Turbo Pascal
можно использовать параметры-переменные и параметры-константы без указания типа. В этом случае фактический параметр может быть переменной любого типа, а согласование формальных и фактических параметров возлагается на программиста.
Язык Turbo Pascal
допускает, чтобы подпрограмма вызывала саму себя. Такой прием программирования получил название рекурсивное обращение. Для некоторых алгоритмов рекурсивное оформление подпрограммы может быть более компактным и эффективным, но следует помнить, что количество рекурсивных вызовов ограничено. Классическим примером рекурсивной подпрограммы служит функция вычисления факториала числа.
Пример
. Рекурсивное вычисление факториала числа N
.
Function Factorial(N: Byte): LongInt;
Begin
IF N in [0,1] Then Factorial:=1
Else Factorial:=N*Factorial(N-1) End;
В языке Turbo Pascal
ввод-вывод данных осуществляется через файловые переменные. Процесс ввода-вывода в программе состоит из следующих основных действий:
1) связать файловую переменную с конкретным внешним файлом или устройством (используется процедура Assign);
2) открыть файл (используются процедуры Reset, Rewrite, Append);
3) осуществить передачу информации (используются процедуры Read, Write, ReadLn, WriteLn);
4) закрыть файл (используется процедура Close).
В языке Turbo Pascal
предусмотрены три категории файлов: текстовые (тип Text), типизированные (file of <тип>), файлы без типа (file). Работа с этими категориями файлов несколько отличается друг от друга.
Обычно все файлы считаются файлами последовательного доступа. Однако для типизированных файлов и файлов без типа с помощью процедуры Seek можно установить режим произвольного доступа.
Требование закрытия файла должно обязательно соблюдаться для файла, в который производилась запись.
Во время трансляции в программу обычно автоматически включаются средства проверок операций ввода-вывода. При возникновении ошибки программа автоматически завершается. Проверку ошибок можно отключить с помощью директивы транслятора {$I-}. В этом случае при возникновении ошибок ввода-вывода программа прерываться не будет, а результат операции ввода-вывода можно проверить с помощью функции IOResult.
Во всех описываемых ниже стандартных процедурах и функциях идентификатор F принадлежит файловой переменной.
Assign(F,Name) – процедура, связывающая файловую переменную F с файлом или устройством, имеющим имя Name. Name – константа или переменная строкового типа.
Close(F) – процедура закрытия файла.
Erase(F) – процедура уничтожения файла.
Remane(F,NewName) – процедура переименования файла. Параметр NewName – константа или переменная строкового типа.
Reset(F) – процедура открытия существующего файла.
Rewrite(F) – процедура открытия нового файла.
Для работы с каталогами на магнитных дисках имеются специальные процедуры ChDir, GetDir, MkDir, RmDir.
Eof(F) – логическая функция, которая принимает значение "истина", если в результате последней операции ввода-вывода обнаружен конец файла. В противном случае функция имеет значение "ложь".
IOResult – функция, возвращающая результат последней операции ввода-вывода. Возвращает число 0, если операция завершилась успешно, или другое число – в противном случае.
Периферийные устройства ПЭВМ, с которыми осуществляется обмен информацией, могут быть описаны как файлы со следующими стандартными именами:
CON – консоль, с которой по умолчанию связаны стандартные файловые переменные Input (клавиатура) и Output (дисплей);
PRN или LPT1 – печатающее устройство;
NUL – фиктивное устройство, которое поглощает выводимую информацию. При вводе с такого устройства возникает ситуация "конец файла". Используется главным образом для отладки программ.
Текстовый файл представляет собой совокупность символов, разделенных на строки, оканчивающийся признаком конца строки.
В языке Turbo Pascal
предусмотрены две стандартные файловые переменные для текстового файла: Input и Output. Переменная Input по умолчанию связана с клавиатурой, а переменная Output – с дисплеем. Эти устройства автоматически открываются при запуске программы и автоматически закрываются после работы программы.
Для работы с тестовыми файлами в языке Turbo Pascal
предназначены следующие процедуры и функции:
Append(F) – процедура открытия существующего файла для
добавления в его конец информации;
Read(F,<список ввода>) – процедура чтения информации из файла;
ReadLn(F,<список ввода>) – процедура чтение строки из файла;
Write(F,<список вывода>) – процедура записи информации в
файл;
WriteLn(F,<список вывода>) – процедура записи строки в файл;
Eoln(F) – логическая функция, которая принимает значение "истина", если в результате последней операции ввода-вывода обнаружен признак конца строки или признак конца файла. В противном случае функция имеет значение "ложь".
Если в указанных процедурах ввода-вывода отсутствует файловая переменная, то автоматически используется переменная Input для ввода и переменная Output для вывода.
Список ввода в процедурах Read и ReadLn представляет собой переменные, разделенные запятыми, которым присваиваются вводимые значения. Переменные могут быть целого, вещественного, символьного и строкового типов. Их количество может быть любым. Процедура ReadLn, так же как и процедура Read, читает значения переменных, но непрочитанная часть строки, включая признак конца строки, пропускается. Если список ввода отсутствует, процедура Read не выполняет никаких действий, а процедура ReadLn будет ждать нажатия клавиши ENTER. Так как в текстовом файле информация хранится в виде символов, то при вводе числовых значений автоматически производится их преобразование в двоичный формат.
Список вывода в процедурах Write и WriteLn – это перечисленные через запятую выражения, значения которых выводятся в текстовый файл. Выражения могут быть целого, вещественного, символьного, строкового и логического типов. Число элементов списка может быть любым. Если список вывода отсутствует, процедура Write не выполняет никаких действий, а процедура WriteLn выводит пустую строку. При выводе числовых значений происходит их автоматическое преобразование в символьную форму. Логические значения выводятся в виде слов TRUE или FALSE.
При выводе информации в текстовый файл по умолчанию отводится количество позиций, равное размеру этой информации. Например, при выводе символа отводится одна позиция, при выводе строки – число позиций, равное длине строки, при выводе целого числа – число позиций, равное числу значащих цифр плюс одна позиция для знака отрицательного числа. Это необходимо учитывать при выводе последовательных элементов информации (например, нескольких чисел) и предусматривать меры, чтобы отдельные элементы информации не сливались друг с другом: вывод разделяющих пробелов, разнесение информации по разным строкам и т.д. Исключение составляют вещественные числа – под них выделяется 17 позиций, и при выводе они выравниваются по правому краю выделенного поля.
Изменить стандартную форму вывода можно с помощью форматов вывода, которые записываются следующим образом:
WriteLn(<выражение>:M); {Первый формат}
Write(<выражение>:M:N); {Второй формат}
Форматы M и N представляют собой выражения целого типа. Первый формат можно использовать при выводе значений любого типа, и он определяет размер поля, в которое выводится значение. Выводимая информация выравнивается по правому краю поля. Если для вывода информации выделенного поля недостаточно, оно автоматически увеличивается до нужного размера. Для вывода вещественного числа всегда отводится не менее восьми позиций, даже если значение M меньше 8.
Второй формат используется только для вывода вещественных чисел. Значение N определяет число знаков, выводимых после десятичной точки. Если используется второй формат, то вещественное число представляется в форме с фиксированной точкой, иначе – с плавающей точкой.
Если значение M отрицательное, то выравнивание информации будет производиться по левому краю поля.
Пример
. Вывести на дисплей таблицу умножения целых чисел от 1 до 9.
Program EXAMPLE;
Var i,j: Byte;
BEGIN
WriteLn('ТАБЛИЦА УМНОЖЕНИЯ':45);
Write(' ':10);
For j:=1 to 9 do Write(j:6);
WriteLn;
For i:=1 to 9 do
Begin
Write(i:6,' ':4);
For j:=1 to 9 do Write((i*j):6); WriteLn
End END.
При работе с типизированными файлами используются следующие процедуры и функции:
Read(F,<список ввода>) – процедура чтения информации из файла;
Write(F,<список вывода>) – процедура записи информации в
файл;
Seek(F,Num) – процедура позиционирования на заданную компоненту файла. Нумерация компонент начинается с 0. Num – выражение целого типа;
Truncate(F) – процедура удаления хвостовой части файла начиная с текущей позиции;
FilePos(F) – функция, вычисляющая номера текущей компоненты
файла (целого типа);
FileSize(F) – функция, вычисляющая текущий размер файла в компонентах (целого типа).
Пример
. Из текстового файла прочитать попарно вещественные числа, считая в каждой паре первое число действительной, а второе – мнимой составляющей, и записать их в файл комплексных чисел.
Program EXAMPLE;
Type
Complex=record
Re,Im: Real end;
Var
File_1: Text;
File_2: File of Complex;
X: Complex;
FileName: String;
BEGIN
Write('Введите имя текстового файла: ');
Readln(FileName);
Assign(File_1,FileName)
Write('Введите имя файла комплексных чисел: ');
Readln(FileName);
Assign(File_2,FileName);
Reset(File_1);
Rewrite(File_2);
While not Eof(File_1) do
Begin
ReadLn(File_1,X.Re,X.Im);
Write(File_2,X)
End;
Close(File_1);
Close(File_2) END.
В языке Turbo Pascal
модуль (Unit) по определению считается отдельной программой. Если подпрограмма является структурным элементом Pascal
-программы и не может существовать вне ее, то модуль представляет отдельно хранимую и независимо транслируемую единицу. Модуль является совокупностью констант, типов, переменных и подпрограмм, предназначенных для использования другими программами и модулями. Сам по себе модуль не является исполняемой программой, так как его объекты используются другими программами.
В языке Turbo Pascal
существуют правила построения и разработки модулей. Но чаще всего используются программные средства следующих стандартных модулей, в которых содержатся все стандартные процедуры и функции языка:
SYSTEM – основная библиотека подпрограмм;
DOS – содержит подпрограммы для работы с операционной системой;
CRT – содержит подпрограммы для работы с клавиатурой и дисплеем; PRINTER – содержит средства для работы с печатающим устройством; OVERLAY – содержит средства для разработки оверлейных программ; GRAPH – библиотека графических подпрограмм.
Модуль GRAPH хранится в файле GRAPH.TPU, остальные из перечисленных модулей входят в состав библиотечного файла TURBO.TPL. Только модуль SYSTEM подключается к любой программе автоматически, все остальные становятся доступны после указания их имен в разделе объявления модулей, начинающемся со слова Uses.
Самый простой по содержанию – модуль PRINTER, который делает доступным вывод текстовых файлов на печатающее устройство. В нем определяется файловая переменная Lst типа Text, связанная с устройством PRN. После подключения модуля вывод на печать может производиться через файловую переменную Lst.
Пример
. Вывод на печатающее устройство.
Uses Printer;
. . .
WriteLn(Lst,'Вывод на печатающее устройство');
Достаточно часто на практике используются константы, переменные и подпрограммы модуля CRT, с помощью которых разрабатываются средства управления текстовым выводом на дисплей, вводом с клавиатуры и звуковым генератором.
При работе с дисплеем через модуль CRT весь экран разбивается на строки, а каждая строка – на позиции, в каждую из которых можно поместить один символ. Для каждой позиции можно задать цвет фона (задний план) и цвет символа (передний план). В текстовом режиме цвет символа может иметь код от 0 до 15, цвет фона – от 0 до 7. При необходимости символ можно сделать мерцающим, для чего следует к коду цвета символа прибавить 128.
В режиме текстового вывода используются следующие координаты экрана: левый верхний угол имеет координаты (1,1); горизонтальная координата возрастает слева направо, вертикальная – сверху вниз. Если на экране определено окно, все координаты отсчитываются относительно границ окна.
Управление звуковым генератором строится по схеме Sound–DelayNoSound.
Списки констант и переменных модуля CRT приведены в табл. 6.10, 6.11, 6.12. Если логической переменной модуля CRT присвоить значение True, происходит разрешение того или иного режима работы программы; значение False запрещает этот режим.
Таблица 6.10 Константы режимов работы дисплея
Имя |
Значение |
Режим работы дисплея |
BW40
BW80
Mono
CO40
CO80
Font8x8
|
0
2
7
1
3
256
|
Черно-белый, 40 символов, 25 строк
Черно-белый, 80х25
Монохромный, 80х25
Цветной, 40х25
Цветной, 80х25
Цветной, для видеоадаптера EGA/VGA, 43/50 строк
|
Таблица 6.11 Константы цветов модуля CRT
Имя |
Значение |
Цвет |
Имя |
Значение |
Цвет |
Black
Blue
Green
Cyan
Red
Magenta
Brown LightGray DarkGray
|
0
1
2
3
4
5
6
7
8
|
Черный
Синий
Зеленый
Голубой
Красный
Фиолетовый
Коричневый
Светло-серый
Темно-серый
|
LightBlue
LightGreen
LightCyan
LightRed
LightMagenta
Yellow
White
Blink
|
9
10
11
12
13
14
15
128
|
Ярко-синий
Ярко-зеленый
Ярко-голубой
Розовый
Малиновый
Желтый Белый
Мерцание
|
Таблица 6.12
Переменные модуля CRT
Имя |
Тип |
Значение |
CheckBreak
CheckEof
CheckShow
DirectVideo
LastMode
TextAttr
WindMin
WindMax
|
Boolean
Boolean
Boolean
Boolean
Word
Byte
Word
Word
|
Разрешение/запрещение Ctrl+Break
Разрешение/запрещение Ctrl+Z
Разрешение/запрещение "снега" на экране Разрешение/запрещение прямого доступа к видеопамяти
Код последнего видеорежима
Значение текущего байта атрибутов символов Координаты левого верхнего угла и правого нижнего угла текущего окна соответственно
|
Функции модуля CRT:
KeyPressed – логическая, возвращает значение "истина", если на клавиатуре была нажата какая-либо клавиша, или "ложь" – в противном случае. Если к моменту обращения к функции не была нажата ни одна клавиша, программа приостанавливает свою работу;
ReadKey – типа Char, читает один символ с клавиатуры, не отображая его на дисплее. Приостанавливает исполнение программы до нажатия на любую клавишу, кроме Shift, Ctrl, Alt, CapsLock, NumLock, ScrollLock;
WhereX – типа Byte, возвращает горизонтальную координату текущей позиции курсора относительно границ текущего окна;
WhereY – типа Byte, возвращает вертикальную координату текущей позиции курсора относительно границ текущего окна.
Процедуры модуля CRT:
ClrEol – удаляет все символы от текущей позиции курсора до конца строки без перемещения курсора;
ClrScr – очищает экран (окно) и помещает курсор в левый верхний угол экрана (окна);
DelLine – удаляет строку, в которой находился курсор, и перемещает все нижестоящие строки на одну позицию вверх;
InsLine – вставляет пустую строку в позицию курсора;
Delay(T) – задерживает выполнение программы на T миллисекунд;
GotoXY(X,Y) – перемещает курсор в заданную точку экрана (окна), где
X – номер столбца, Y – номер строки;
HighVideo – устанавливает повышенную яркость символов; LowVideo – устанавливает пониженную яркость символов;
NormVideo – устанавливает нормальную яркость символов;
TextBackGround(Color) – устанавливает цвет Color фона;
TextColor(Color) – устанавливает цвет Color символов;
TextMode(Mode) – устанавливает текстовый режим;
Sound(F) – генерирует звук с частотой F герц;
NoSound – выключает звук;
Window(x1,y1,x2,y2) – определяет текстовое окно на экране, x1, y1 – координаты левого верхнего угла, x2, y2 – правого нижнего угла.
Пример
. Использование возможностей модуля CRT.
Program DemoWindow;
Uses CRT;
Var i: Byte;
Ch: Char;
BEGIN
ClrScr;
TextBackGround(LightGray);{Установка цвета фона окна}
TextColor(Black); {Установка цвета символов}
Window(20,8,60,17); {Определение первого окна}
ClrScr;
WriteLn;
WriteLn('********ТЕХНОЛОГИЧЕСКИЙ ФАКУЛЬТЕТ*******'); WriteLn;
WriteLn('*******Пакет программ "Статистика"******');
Window(55,25,77,25); {Определение второго окна}
ClrScr;
Write('Нажмите клавишу ENTER ');
ReadLn;
TextMode(CO80) {Очистка экрана и установка режима} END.
Модуль DOS содержит большое количество специальных процедур и функций, ориентированных на использование возможностей операционной системы MS-DOS. Большинство подпрограмм модуля предназначено для опытных программистов. На начальном уровне программирования можно воспользоваться следующими подпрограммами из модуля DOS:
GetDate(Year,Month,Day,DayOfWeek) – процедура возвращает текущую дату со встроенных часов компьютера (год, месяц, число, день недели);
GetTime(Hour,Minute,Second,Sec100) – процедура возвращает текущее время со встроенных часов компьютера (часы, минуты, секунды, сотые доли секунды);
DiskFree(Disk) – функция типа LongInt вычисляет число
свободных байтов на указанном дисковом накопителе;
DiskSize(Disk) – функция типа LongInt вычисляет полный объем указанного дискового накопителя в байтах.
Функции имеют параметры типа Word. Если Disk=0, то анализируется текущий накопитель, Disk=1 соответствует накопителю A:, Disk=2 – накопителю B: и т.д. Если параметр Disk не соответствует номеру накопителя компьютера, обе функции возвращают значение –1.
Возможность работы с графикой – одно из наиболее очевидных преимуществ персональных компьютеров. Поэтому фактически во всех системах программирования для персональных компьютеров предусмотрен какой-либо набор операторов и процедур для вывода графической информации. Система программирования Turbo Pascal
содержит графический интерфейс BGI
(Borland Graphics Interface), предназначенный для программирования графических изображений. В состав BGI входят модуль Graph (файл graph.tpu), содержащий все константы, процедуры и функции BGI-графики, управляющие программы (драйверы) видеосистемы (файлы типа .bgi), а также файлы шрифтов (файлы типа *.chr). Модуль Graph подключается в программе с помощью оператора Uses.
В IBM-совместимой ПЭВМ могут быть установлены различные видеоадаптеры, поэтому компьютер будет способен работать с разными типами мониторов, отображать различное число точек на экране и различное число цветов. Чтобы одна и та же программа могла работать на компьютерах с разными видеоадаптерами, в BGI-графике часть программы, выполняющих непосредственное взаимодействие с видеоадаптером, вынесена в отдельный файл с расширением *.bgi.
Фактически во всех современных компьютерах применяются видеоадаптеры, совместимые со стандартом VGA (Video Graphics Array), поэтому для работы с графикой необходим драйвер egavga.bgi.
Отметим, что модуль Graph содержит большое число программных объектов, полное описание которых можно найти в соответствующей литературе.
Графические режимы работы видеосистемы компьютера характеризуются двумя основными параметрами – разрешающей способностьюи цветовой глубиной изображения. Разрешающая способность
, или разрешение
(resolution), показывает, сколько отдельных точек, из которых состоит изображение на экране монитора, можно отобразить. Эти точки получили название пиксели
(pixel – picture element). Например, если разрешение составляет 640 на 480 пикселей, или 640480, то на экране изображение занимает 480 строк по 640 точек в каждой строке, всего 307200 точек. Цветовая глубина
(color depth) показывает, сколько цветов одновременно
могут отображаться на экране. Например, при цветовой глубине 16 каждый пиксел на экране можно окрасить в один из 16 цветов; при этом для кодирования цвета одного пиксела требуется 4 бита памяти (24
=16). Таким образом, и разрешение, и цветовая глубина существенно зависят от объема видеопамяти, в которой хранится числовой образ изображения. Основные режимы работы видеосистемы типа VGA и соответствующие константы модуля Graph приведены в табл. 6.13.
Таблица 6.13 Режимы работы видеоадаптера VGA
Константа |
Разрешение |
Цветовая глубина |
VGALo |
640200 |
16 |
VGAMed |
640350 |
16 |
VGAHi |
640480 |
16 |
Рассмотрим далее фрагмент программы, в которой устанавливается графический режим VGAHi. При этом предполагается, что файл драйвера egavga.bgi находится в каталоге E:\TP6\BGI.
Пример
. Инициализация графического режима.
USES CRT,Graph;
VAR driver,mode: INTEGER;
BEGIN driver:=Detect; {определение видеоадаптера} mode:=VGAHi; {задание графического режима} InitGraph(driver,mode,'E:\TP6\BGI');{инициализация}
. . .
END.
В приведенном фрагменте в переменную driver записывается результат выполнения функции Detect, которая возвращает в виде кода тип видеосистемы компьютера. Переменная mode хранит константу, задающую требуемый видеорежим. Процедура InitGraph включает графический экран. Ей передаются три параметра: код типа видеосистемы, код графического режима и путь к файлу драйвера. Первые два параметра передаются по ссылке, поэтому они должны быть переменными типа INTEGER.
Отметим, что не всегда инициализация графики проходит успешно. Может оказаться, что не найден файл egavga.bgi или видеоадаптер не поддерживает требуемый видеорежим. Поэтому после вызова процедуры InitGraph рекомендуется проверять результат инициализации. Для этого предусмотрена переменная GraphResult, в которую после вызова любой процедуры или функции модуля Graph заносится код ее завершения. Если этот код не равен константе grOK, то имеет место ошибка. Характер ошибки можно определить с помощью функции GraphErrorMsg, возвращающей краткое описание ошибки в виде текстовой строки.
Пример
. Усовершенствованная процедура инициализации графики. USES CRT, Graph;
. . .
PROCEDURE StartGraph(mode:INTEGER; path:STRING); VAR driver,error: INTEGER;
. . . BEGIN
driver:=Detect;
InitGraph(driver,mode,path); error:=GraphResult;
IF error <> grOK THEN
BEGIN
Writeln('Ошибка графики: ',GraphErrorMsg(error));
Halt(1) {завершение программы с кодом 1}
END
END; . . .
BEGIN
StartGraph(VGAHi,'E:\TP6\BGI'); . . .
ReadKey; {задержка до нажатия клавиши}
CloseGraph; RestoreCRTMode END.
В данном примере программы реализуется усовершенствованный алгоритм инициализации графического режима, предусматривающий в случае неудачи выдачу аварийного сообщения и прекращение работы программы. В конце программы, работающей с модулем Graph, должны вызываться процедуры закрытия графического режима CloseGraph и восстановления исходного текстового режима RestoreCRTMode.
Оперативно переключать видеорежимы в программе можно при помощи процедуры SetGraphMode(режим).
В BGI
-графике предусмотрена возможность создания невидимого окна (viewport) в заданном месте экрана. Весь последующий графический вывод будет производиться в это окно, а координаты будут отсчитываться от левого верхнего угла окна. Это удобно при необходимости перемещать картинку – достаточно нарисовать ее в окне, а при переносе просто указать новые координаты окна.
Окно создается процедурой SetViewPort(x1,y1,x2,y,2clip), где x1, y1 – координаты левого верхнего угла окна; x2, y2 – координаты правого нижнего угла; clip – параметр типа Boolean, указывающий, будут ли отсекаться элементы изображения, выходящие за рамки окна (clip=True), или они будут рисоваться (clip=False).
Для уничтожения окна и перехода к системе координат экрана следует выполнить процедуру SetVierwPort(0,0,GetMaxX,GetMaxY,TRUE).
Все рисование в BGI
-графике выполняется по координатам. Начало координат – точка (0,0) – лежит в левом верхнем углу экрана, ось OX направлена слева направо, а ось OY – сверху вниз. Каждая координата изменяется от 0 до некоторого максимального значения. Эти значения можно определить с помощью функций GetMaxX и GetMaxY, которые возвращают максимально возможные координаты точки по координатам X и Y соответственно. Так, для видеорежима с разрешением 640480 допустимые координаты лежат в диапазонах [0..639] и [0..479]. Центр экрана при этом находится в точке с координатами (GetMaxX div 2, GetMaxY div 2).
Рисовать можно любым из 15 цветов, кроме черного (черным может быть только фон). Цвета задаются с помощью констант: Black, Blue, Green, Cyan, Red, Magenta, Brown, Yellow, White, LightGray, DarkGray, LightGreen, LightCyan, LightMagenta.
Цвет фона задается процедурой SetBKColor(цвет). Цвет точек и линий изображения (но не цвет заливки!) задается процедурой SetColor(цвет). Процедура ClearDevice очищает графический экран и заполняет его фоновым цветом.
Все изображаемые объекты можно условно разделить на два вида: контурные и закрашенные. Контурные объекты
образуются точками и линиями (отрезок, дуга, сектор, круг, эллипс, прямоугольник). Закрашенные объекты
образуются сплошными закрашенными областями (закрашенный прямоугольник, закрашенный эллипс). В табл. 6.14 приведены процедуры рисования контурных объектов. Все угловые величины, используемые в качестве параметров в процедурах модуля Graph, отсчитываются в градусах против часовой стрелки.
Таблица 6.14 Процедуры рисования контурных объектов
|
Arc(x,y,sa,sb,r) |
Рисует дугу с центром в точке с координатами (x,y), начальным углом sa, конечным углом sb и радиусом r |
|
Circle(x,y,r) |
Рисует окружность с центром в точке с координатами (x,y) и радиусом r |
|
Ellipse(x,y,sa,sb,a,b) |
Рисует эллипс или сектор эллипса с центром в точке с координатами (x,y), начальным углом sa, конечным углом sb, полуосями a и b |
|
Line(x1,y1,x2,y2) |
Проводит отрезок из точки с координатами (x1,y1) в точку с
координатами (x2,y2)
|
|
PutPixel(x,y,c) |
Задает цвет точки с координатами
(x,y), код цвета – с
|
|
Rectangle(x1,y1,x2,y2) |
Рисует прямоугольник с концами
диагонали в точках с координатами (x1,y1) и (x2,y2)
|
|
Sector(x,y,a1,a2,r1,r2) |
Рисует сектор с центром в точке с координатами (x,y), начальным углом a1, конечным углом a2, начальным радиусом r1 и конечным радиусом r2 |
Обращение к процедуре SetColor(цвет) должно быть выполнено до процедуры рисования объекта. Толщина и внешний вид линии контура объекта определяются с помощью процедуры SetLineStyle(s,p,t), где s – вид линии: SolidLn (сплошная); DottedLn (в виде точек); CenterLn (штрихпунктирная); DashedLn (пунктирная); p – всегда 0; t – толщина линии: NormWidth (один пиксел); ThickWidth (три пиксела).
Помимо перечисленных процедур рисования, есть возможность рисовать линии невидимой кисточкой, перемещающейся от точки к точке. Процедуры рисования кистью представлены в табл. 6.15.
Таблица 6.15 Процедуры и функции рисования кистью
MoveTo(x,y) |
Перемещает кисть в точку с координатами(х,у), ничего не рисуя |
MoveRel(dx,dy) |
Перемещает кисть в точку, отстоящую от текущей на dх и dу, ничего не рисуя |
LineTo(x,y) |
Проводит линию из текущей точки в точку с координатами(х,у) |
LineRel(dx,dy) |
Проводит линию из текущей точки в точку, отстоящую от текущей на dх и dу |
GetX |
Возвращает текущую координату кисти по координате х |
GetY |
Возвращает текущую координату кисти по координате y |
Процедуры MoveRel и LineRel используют относительную систему координат, поэтому координаты в них могут указываться и со знаком "минус".
Рисование окружностей на экране монитора сопряжено со следующей трудностью. При любом разрешении экрана число точек по вертикали и по горизонтали не равно друг другу и подбирается таким образом, чтобы каждая точка выглядела квадратиком. Поэтому окружности и дуги будут искажаться и выглядеть эллипсами. То же самое справедливо и при рисовании любых объектов с равными размерами по осям X и Y, например, квадратов. Для разрешения данной проблемы предусмотрены процедура
GetAspectRatio(xa,ya), которая записывает текущее соотношение сторон экрана в переменные xa и ya типа Word, и процедура SetAspectRatio(xa,ya), которая для всех последующих процедур рисования окружностей и дуг учитывает соотношение сторон. Поэтому, если в программе рисуются окружности или дуги, в ее начале должны присутствовать следующие операторы:
VAR Xasp,Yasp: Word;
. . .
GetAspectRatio(Xasp,Yasp);
SetAspectRatio(Xasp,Yasp);
Процедура SetColor(цвет) не определяет ни цвет, ни вид заливки (сплошная, штриховкой, точками). Характер заливки графического объекта задается с помощью процедуры SetFillStyle(p,c), где c – цвет закрашивания, p – константа вида заполнения. Возможные варианты заливки и соответствующие им константы представлены в табл. 6.16.
Таблица 6.16
Варианты заливки графических объектов
EmptyFill |
LtSlashFill |
LtBkSlashFill |
InterleaveFill |
SolidFill |
SlashFill |
HatchFill |
WideDotFill |
. . . . .
. . . . .
. . . . .
.
|
LineFill |
BkSlashFill |
XhatchFill |
CloseDotFill |
. . . . . . .
. . . . . . .
. . . . . . .
. . .
|
У заливаемых объектов сохраняется цвет контура, который определяется процедурой SetColor. Очевидно, что процедуры SetFillStyle и SetColor должны выполняться до
соответствующих процедур рисования.
С помощью процедуры FillEllipse легко нарисовать закрашенную окружность, если а=b. Процедура FloodFill предназначена для закраски произвольных замкнутых областей. Достаточно указать координаты любой точки внутри области и цвет границы области. Если область незамкнутая, то закраска распространится на весь экран. Отметим, что заливка произвольной области выполняется достаточно медленно, поэтому этой процедурой рекомендуется пользоваться в исключительных случаях. Перечень процедур заливки представлен в табл. 6.17.
В некоторых случаях при закраске областей со сложным контуром при помощи процедуры FloodFill возникает сообщение о нехватке памяти. В этом случае можно увеличить размер видеобуфера с помощью процедуры SetGraphBufSize(размер), причем эта процедура должна быть выполнена до вызова процедуры InitGraph. Например, выделить дополнительные 8
Кбайт памяти под видеобуфер можно таким образом: SetGraphBufSize(1024*8).
В графическом режиме возможен вывод текстовых сообщений. В BGIграфике реализована достаточно сложная система работы с текстом, основанная на векторных шрифтах, образы которых хранятся в файлах с расширением *.chr. Проблема при этом состоит в том, что в системе программирования Turbo Pascal
шрифты не содержат русских букв. Как выход из положения можно использовать растровый системный шрифт формата 88, являющийся копией текущего шрифта операционной системы. Если на компьютере работает программа поддержки русского алфавита в текстовых и графических режимах работы видеоадаптера, то выводимый текст будет содержать русские буквы.
Таблица 6.17 Процедуры заливки графических объектов
Bar(x1,y1,x2,y2) |
Рисует закрашенный прямоугольник с концами диагонали в точках с координатами(x1,y1) и (x2,y2). |
|
Bar3D(x1,y1,x2,y2, depth,top) |
Рисует закрашенный объемный прямоугольник с концами диагонали в точках с координатами(x1,y1) и
(x2,y2) и глубиной цвета depth. Если top=True, верхняя грань закрашивается, если top=False – нет.
|
|
FillEllipse(x,y,a,b) |
Рисует закрашенный эллипс с центром в точке с координатами(x,y) и полуосями длиной a и b. |
|
PieSlice(x,y,a1,a2,r) |
Рисует закрашенный круговой сектор с центром в точке (x,y), начальным углом a1, конечным углом a2 и
радиусом r
|
FloodFill(x,y,c) |
Закрашивает замкнутую область с цветом границы c, начиная с точки с координатами(x,y) |
Тип шрифта задается процедурой SetTextStyle(f,d,s), где f – константа выбора шрифта; d – направление вывода шрифта (HorizDir – слева направо, VertDir – снизу вверх); s – размер шрифта (целое число от 0 до 4). Константа f может принимать значения, которые приведены в табл. 6.18.
Вывод текста в графическом режиме производится с помощью процедур OutText(s) и OutTextXY(x,y,s), где s – выводимая текстовая строка; x, y – координаты точки привязки. Процедура OutText выводит текст в точке нахождения кисти.
Точка привязки текстовой строки зависит от способа выравнивания текста, задаваемого процедурой SetTextJustify(j). Если представить текст, вписанным в прямоугольник, то возможные варианты привязки текста зависят от значения константы j (табл. 6.19).
Таблица 6.18 Константы шрифтов модуля Graph
Константа |
Тип шрифта |
Образец шрифта |
DefaultFont |
Системный шрифт 88 |
|
TriplexFont |
Шрифт
trip.chr
|
|
SmallFont |
Шрифт
litt.chr
|
|
SansSerifFont |
Шрифт
sans.chr
|
|
GothicFont |
Шрифт
goth.chr
|
|
Таблица 6.19 Константы привязки текста
Горизонтальный текст |
Вертикальный текст |
LeftText |
Левый верхний угол |
BottomText |
Правый нижний угол |
CenterText |
Центр |
CenterText |
Центр |
RightText |
Правый нижний угол |
TopText |
Левый верхний угол |
Видеопамять адаптера типа VGA делится на видеостраницы. Видеостраница содержит двоичный образ изображения, выводимого на экран монитора. При этом видеостраница, которая содержит информацию, отображаемую на экране монитора в текущий момент времени, называется активной, или видимой. Остальные видеостраницы, информация из которых не видна на экране, являются пассивными, или скрытыми. В пассивных видеостраницах можно заранее подготовить изображение и вывести его при подстановке скрытой видеостраницы вместо видимой. Для направления всего вывода на какую-либо видеостраницу используется процедура SetActivePage(n), где n – номер видеостраницы (0 или 1). Процедура SetActivePage(1) направляет весь вывод на скрытую страницу. Для переключения видеостраниц есть процедура SetVisualPage(n), которая устанавливает номер видимой страницы. Вызов SetVisualPage(1) сделает изображение из скрытой видеостраницы видимым, причем все изображение появится сразу и практически мгновенно.
Процесс работы с видеостраницами в общем виде можно представить следующим образом:
SetVisualPage(0); |
{На экране видим видеостраницу 0} |
SetActivePage(1); . . . |
{Рисуем на видеостранице 1} |
{Рисуем картинку, на экране ничего не происходит} . . .
SetVisualPage(1); {На экране видим страницу 1}
Существующие в BGI-графике 15 экранных цветов можно изменять, присваивая каждому цвету конкретный оттенок. Можно сделать, например, цвет White не белым, а розовым или зеленоватым. При этом набор из 15 произвольных цветов называется палитрой
. Эффект от смены палитры состоит в том, что результат немедленно будет виден на экране для уже нарисованных объектов, что позволяет даже с 15 цветами добиться эффекта плавного изменения цвета.
Оттенок каждого из 15 цветов палитры устанавливается процедурой SetRGBPalette(n,r,g,b), где n – номер изменяемого цвета (от 0 до 15); r, g, b – относительное количество красного, зеленого и синего цветов соответственно в получаемом оттенке (значения от 0 до 255). Равные значения r, g, b дают оттенки серого цвета.
В следующем примере красный прямоугольник на экране плавно "выцветает" за счет уменьшения доли красного цвета в палитре с 255 до 0.
Пример
. Изменение палитры цветов.
Uses CRT,Graph; Var i: Byte;
. . .
{цвет заливки – красный}
SetFillStyle(SolidFill,Red);
{рисуем прямоугольник во весь экран}
Bar(0,0,GetMaxX,GetMaxY); For i:=255 downto 0 do begin
SetRGBPalette(Red,i,0,0);
Delay(1000) end; . . .
7. ОСОБЕННОСТИ РАЗРАБОТКИ ПРОГРАММ ДЛЯ
Анализ использования программных систем способствовал появлению понятия "жизненный цикл программ". Жизненный цикл содержит два периода: разработки и использования.
Период разработки
состоит из трех стадий: предпроектной, проектирования и внедрения.
Основная цель предпроектной
стадии состоит в обосновании необходимости и целесообразности создания конкретной программной системы. Стадия проектирования
включает такие работы, как разработку метода и алгоритма решения поставленной задачи; написание программ; отладку программной системы; разработку технической документации. Внедрение
программной системы обычно выполняется разработчиком совместно с пользователем и состоит, как правило, из этапов опытной эксплуатации и ввода в эксплуатацию. На этой стадии производится обучение пользователя.
Период использования
является особо важным в жизненном цикле программ. Он состоит из двух параллельно выполняемых процессов: эксплуатации программных средств и их сопровождения.
Если термин "эксплуатация" понятен, то под сопровождением понимается комплекс мер по поддержанию того или иного программного средства в работоспособном и актуальном состоянии. Цель сопровождения состоит в эффективном и экономичном исправлении функционирующей программы, что отодвигает моральное старение программы.
Связь пользователя с ПЭВМ осуществляется с помощью дисплея (монитора), клавиатуры и специальных периферийных устройств.
Клавиатура остается пока основным устройством ввода информации в ПЭВМ. В техническом аспекте клавиатура представляет собой совокупность механических датчиков, воспринимающих давление на клавиши и замыкающих определенную электрическую цепь. Наиболее распространены два типа клавиатур: с контактными и бесконтактными переключателями. Работой клавиатуры управляет контроллер клавиатуры, установленный на системной плате компьютера. Контроллер клавиатуры периодически проверяет состояние переключателей, установленных под клавишами. Замыканию и размыканию любого из этих переключателей (то есть нажатию и отпусканию клавиши) соответствует уникальный цифровой код, называемый скэн-кодом
. Этот код передается операционной системе ПЭВМ.
Почти все современные IBM-совместимые ПЭВМ используют расширенную Windows-клавиатуру, имеющую 104 или 105 клавиш. На такой клавиатуре имеется около 60 алфавитно-цифровых клавиш и еще около 40 клавиш, предназначенных для управления машиной и исполнением программ. В ранних моделях IBM-совместимых ПЭВМ применялись расширенная и стандартные клавиатуры, имеющие 101/102 и 83/84 клавиши соответственно.
Большинство современных настольных ПЭВМ используют растровые мониторы на базе электронно-лучевых трубок. В растровых мониторах электронный луч "рисует" точечное изображение, как в обычном телевизоре, линия за линией, начиная с левого верхнего и заканчивая нижним правым углом экрана. В портативных компьютерах используются дисплеи на жидких кристаллах (LCD-дисплеи).
Видеосистема ПЭВМ может работать в двух режимах: текстовом и графическом. В текстовых режимах на экран можно выводить символьные тексты и простые рисунки, составленные из символов псевдографики. Графические режимы используются для формирования сложных рисунков. В обоих режимах изображение состоит из отдельных пикселов. Если в графическом режиме имеется возможность управлять каждым пикселом, то в текстовом режиме весь экран разбивается на прямоугольники размером 8x8, 8x14 или 8x16 точек, в каждом из которых отображается один символ.
В текстовом режиме существуют два стандартных формата вывода изображения:
25 строк по 40 символов в каждой строке; 25 строк по 80 символов в каждой строке.
В текстовом режиме могут одновременно отображаться 16 цветов. В графическом режиме также имеется несколько стандартных форматов для вывода изображений, например:
320х200 точек; 640х200 точек; 640х350 точек; 640х480 точек; 800х600 точек; 1024х768 точек; 1280х1024 точек; 1600х1200 точек.
Количество одновременно отображаемых цветов в графическом режиме может быть 4, 16, 256, 32768 (215
), 65536 (216
), 16777216 (224
).
Мониторы могут воспроизводить цветные или монохромные изображения. Монохромные мониторы вместо отдельных цветов отображают промежуточные градации яркости между черным и белым цветами.
Изображение, выводимое на экран монитора, хранится в закодированном виде в специально отведенной для этого области памяти. Видеопамять содержит коды отображаемого символа и коды атрибутов символов. Атрибут символа определяет его цвет, цвет фона, степень яркости, признаки мерцания и подчеркивания. В тестовом режиме работы видеосистемы для кода каждого символа и его атрибута отводится по одному байту.
Видеопамять разделена на видеостраницы, каждая из которых содержит информацию об изображении полного экрана. Многостраничная организация видеопамяти позволяет мгновенно менять изображения на экране и реализовывать эффекты перемещения графических объектов.
Управление монитором осуществляется специальным электронным устройством – видеоадаптером, который содержит следующие основные устройства: видеоконтроллер, управляющий выводом изображения на экран монитора; видеопамять, в которой хранится двоичный образ выводимого изображения; постоянное запоминающее устройство, содержащее программы управления видеоконтроллером.
Манипулятор "мышь" является дополнительным координатным устройством ввода информации в ПЭВМ. "Мышь" представляет собой коробочку, внутри которой установлен массивный шарик и электронное устройство, соединяемое кабелем с системной платой ПЭВМ. Свое название манипулятор получил благодаря форме и принципу работе: он легко помещается в ладони, "бегает" под управлением пользователя по поверхности рабочего стола, а соединительный кабель напоминает мышиный хвост. При перемещении "мыши" по гладкой поверхности вращение шарика преобразуется электронным устройством в перемещение курсора на экране монитора.
"Мышь" имеет две или три кнопки, по своему назначению аналогичные часто употребляемым клавишам клавиатуры. Как правило, в программах левая кнопка "мыши" соответствует клавише Enter, правая – клавише Esc.
Неотъемлемой частью "мыши" является ее драйвер, осуществляющий программную связь "мыши" с ПЭВМ. Программа драйвера хранится в файле с примерным названием MOUSE.COM, MOUSE.EXE или MOUSE.SYS.
Трекбол представляет собой "перевернутую мышь". У него приводится в движение не сам корпус устройства, а только его шар. Трекболы обычно применяются в портативных ПЭВМ вместо "мыши" и размещаются в корпусе их клавиатуры.
Джойстик – это игровой манипулятор, предназначенный для ввода в ПЭВМ аналоговой информации. Он представляет собой рукоятку, качающуюся в двух взаимно перпендикулярных плоскостях. На рукоятке имеются две кнопки для дополнительного управления движущимся по экрану объектом.
Все IBM-совместимые ПЭВМ имеют в своем составе динамическую головку громкоговорителя. Стандартные звуковые возможности ПЭВМ ограничены: она не может воспроизводить одновременно более одного тона и невозможно регулировать уровень звука. Звуковые возможности ПЭВМ существенно расширились с появлением звуковых адаптеров, использующих цифровые методы синтеза звука. Большинство современных ПЭВМ, оснащенных таким адаптером и акустическими системами, может не только озвучивать компьютерные игры, но и воспроизводить информацию с компактдисков, записывать звук с микрофона и других источников.
Массовое внедрение ПЭВМ практически во все области человеческой жизни изменили требования к качеству программ и способам их взаимодействия с пользователем. Основной способ общения пользователя с ПЭВМ – диалоговый, или интерактивный. Широкая доступность ПЭВМ и программ для них стимулировала разработчиков на изготовление программных продуктов, ориентированных на малоподготовленного и непрофессионального пользователя и обладающих отличными потребительскими свойствами: легкостью в изучении и освоении, удобным и понятным управлением, наглядным представлением выводимых результатов, надежностью в эксплуатации. Возникло понятие "дружественного интерфейса человек-ЭВМ", означающее максимальное приспособление формы взаимодействия человека и ЭВМ к общепринятым нормам человеческого общения, физиологическим особенностям восприятия информации. Современные технические средства ПЭВМ позволяют использовать графику, цвет, анимацию, звук. Примитивный вывод результатов работы ЭВМ в виде столбцов чисел, нуждающихся в дополнительной расшифровке, был присущ для ранних ЭВМ и безвозвратно ушел в прошлое.
Другое важное свойство дружественного интерфейса – помощь человеку в управлении программой, освобождение его от необходимости запоминать множество всевозможных деталей. Общепринятый сегодня способ построения диалога в форме многоуровневых меню и встроенных кратких инструкций позволяет быстро ориентироваться и уверенно управлять даже малознакомой программой. Один из классических примеров организации дружественного диалога – это операционная оболочка NortonCommander.
В сложных программных комплексах разработчиками предусматриваются демонстрационные и обучающие программы, предназначенные для того, чтобы пользователь мог самостоятельно познакомиться с возможностями этого комплекса и усвоить правила работы с ним.
Необходимо отметить, что для создания качественной программы программисту необходимо затратить достаточно много усилий на организацию ввода и вывода информации в программе и на организацию взаимодействия программы с ее пользователем. Они соизмеримы с усилиями, затрачиваемыми на программирование основного алгоритма программы, по которому решается конкретная задача.
Понятие "окно" является одним из основных в области создания программного обеспечения для ПЭВМ.
Современные подходы в организации взаимодействия программы с пользователем, называемого видеоинтерфейсом, предполагают структурирование экранного пространства, основанное на использовании для отображения различных видов информации отдельных прямоугольных областей экрана – окон. Окно
– это ограниченная область экрана монитора компьютера, выполняющая те же функции, что и полный экран. Впервые технология окна была реализована в исследовательской лаборатории PARS фирмы Xerox в Пало-Альто (США) в начале 70-х годов. С тех пор средства организации окон включены в практически все языки программирования для ПЭВМ.
Важным свойством окон является независимое управление каждым из них с возможностью присутствия нескольких окон на экране. Окна могут частично или полностью перекрываться, изменять свои размеры, цвет, появляться и исчезать.
Любой достаточно развитый видеоинтерфейс содержит средства динамического создания и удаления окон, изменения их размеров и местоположения на экране. Окна используются для отображения текстовой или графической информации, формирования системы меню, организации управления программой и реализации других функций. Тщательно продуманный оконный интерфейс, удобство управления им могут во многом определить успех той или иной программной системы. В настоящее время сложились достаточно определенные фактические стандарты построения в программах оконных систем (например, стандарт фирмы IBM под названием SAA/CUA), которым следует большинство разработчиков программных продуктов для ПЭВМ. Все современные системы объектно-ориентированного программирования имеют средства создания оконных систем.
Язык программирования Turbo Pascal
в модуле CRT содержит небольшое количество базовых средств организации окон на экране в текстовом режиме. Для расширения возможностей языка Turbo Pascal
фирмой Borland разработаны библиотеки подпрограмм Turbo Professional
, Object Professional
, Turbo Vision
(Turbo Vision
входит в состав системы Turbo Pascal
версий 6.0 и
7.0), которые содержат более развитые средства программирования оконного видеоинтерфейса и сложных многоуровневых меню.
Диалоговая программа для ПЭВМ, в общем случае, состоит из заставки, системы меню и набора процедур, функционирующих под управлением меню. Заставка – это своеобразная "визитная карточка" программы. Она выводится на экран монитора сразу после старта программы и содержит информацию о названии программы, ее назначении, авторе и другие сведения. Заставка может оформляться как отдельная процедура. Простой и наиболее распространенный алгоритм работы с заставкой состоит в следующем:
• очистка экрана;
• вывод заставки на экран;
• удерживание заставки на экране в течение фиксированного времени либо до нажатия на клавиатуре ("мыши") какой-либо клавиши (кнопки); очистка экрана (по необходимости);
• вывод главного меню программы и т.д.
Пример
. Вариант оформления заставки.
Program INTRODUCTION;{$X+}
Uses Crt;
Procedure Intro; {Процедура вывода заставки на экран} Var i: Byte;
Const
Screen: array [1..25] of string[39]=
(' **************************************',
' *ТУЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ*',
' * *',
' * ТЕХНОЛОГИЧЕСКИЙ ФАКУЛЬТЕТ *',
' * *',
' * КАФЕДРА *',
' * АВТОМАТИЗИРОВАННЫХ СТАНОЧНЫХ СИСТЕМ*',
' * *',
' * *',
' * *',
' * КОНТРОЛЬНО-КУРСОВАЯ РАБОТА *',
' * ПО ИНФОРМАТИКЕ *',
' * СТУДЕНТА ГР. 620211 Федорова А.В. *',
' * *',
' * РАСЧЕТ НОМИНАЛЬНЫХ ПОКАЗАТЕЛЕЙ *',
' * ТЕХНОЛОГИЧЕСКОЙ ЯЧЕЙКИ *',
' * С РАДИАЛЬНЫМ РОБОТОМ *',
' * *',
' * *',
' * *',
' * *',
' * *',
' * *',
' * ТУЛА 2002 *',
' **************************************);Begin
TextMode(BW40); {Установить режим 40x25}
For i:=1 to 24 Do Writeln(Screen[i]);
Write(Screen[25]);
ReadKey; |
{Ждать нажатия клавиши} |
TextMode(CO80) |
{Установить режим 80x25} |
End; |
{Конец процедуры} |
BEGIN
Intro END.
В данном примере текст заставки выводится в рамке, выполненной из символов звездочки. С этой же целью для изображения рамки можно использовать и иные подходящие символы, например символы псевдографики.
Диалог в форме меню является наиболее популярным способом общения пользователя с программой на ПЭВМ. При этом на экран монитора выдается список возможных действий (работ), из которых пользователь должен выбрать одно, которое нужно ему в данный момент. Выбор производится по следующим признакам: по номеру действия в списке, по первой букве названия действия, перемещением специального указателя. Указатель может быть в виде стрелки либо в виде цветного прямоугольника – фона, на котором выделяется текст. В список действий обязательно включаются выдача подсказок и завершение работы программы.
Меню должно быть простым и понятным для пользователя. Если в программе не предполагается вывод заставки, то уже меню будет являться "визитной карточкой" программы, а поэтому оно должно проектироваться и оформляться особенно тщательно.
Поскольку большая сложная программа обычно предусматривает выполнение многих действий, обойтись одним списком часто не удается. В этом случае создается иерархическая структура из нескольких списков. В главное меню включается укрупненный перечень групп работ. После обращения к конкретной группе появляется частное меню, содержащее список отдельных работ.
Популярный вариант организации иерархического меню следующий. В верхней строке экрана размещается главное меню, содержащее названия групп работ. При выборе определенной группы работ под ее названием появляется новый список, содержащий список частных действий. Нижняя строка экрана может содержать тексты подсказок. Для управления выбором нужных действий используется ограниченное число клавиш клавиатуры (управления курсором, Home, End, Tab, Enter, Esc, F1 – F12) с игнорированием нажатия остальных. Одновременно с клавиатурой может использоваться и "мышь": для выбора действия следует попасть курсором "мыши" в нужный текст и нажать на кнопку "мыши".
Стало популярным использование вместо названий действий не слов, а пиктограмм – маленьких картинок, схематично изображающих смысл действия. Пиктограммы уменьшают языковые проблемы и удобны для восприятия, но воплотить их в программе сложнее, чем словесные обозначения. Многие современные программы, в том числе операционная система Windows, используют пиктограммы для управления своей работой.
Командный диалог применяется в тех случаях, когда предполагается, что один и тот же человек будет использовать программу регулярно, так как он специалист и ему требуется высокая скорость работы.
Суть такого диалога состоит в том, что все возможные управляющие действия оформляются в виде системы команд, которые должен изучить и запомнить пользователь. В качестве команд подбирают сокращенные (часто однобуквенные) наименования функций, которые может выполнить диалоговая программа. Команда может быть выполнена также путем нажатия функциональной клавиши или одновременного нажатия двух-трех клавиш на клавиатуре. Такие клавиши или их комбинации получили название оперативных или "горячих" (hot keys).
В этом типе диалога экран оформляется более просто. В каком-то месте экрана может быть выделено место для ввода команды. Часто отводится место для вывода диагностических сообщений, подсказок, информации общего характера.
Командный тип диалога является основным в диалоговых операционных системах. Он широко применяется, например, в простых текстовых редакторах, так как такими редакторами пользуются в основном подготовленные пользователи. Многие программы, в том числе система программирования Turbo Pascal
, имеют комбинированное управление: как с помощью системы меню, так и с помощью командного диалога.
Суть объектно-ориентированного, или непосредственного, диалога состоит в том, что программа воспроизводит на экране дисплея ситуацию (обстановку), максимально приближенную к той, с которой обычно имеет дело пользователь. Это может быть, например, план застройки города (для архитектора), сборочный чертеж механизма (для конструктора), принципиальная схема устройства (для разработчика электронной аппаратуры) и другие. Управление программой осуществляется специально назначенными клавишами клавиатуры, "мышью", джойстиком. Диалоговые средства при этом становятся незаметными. Такой способ управления диалоговой программой чаще всего оказывается самым эффективным. Объектно-ориентированный диалог используется, например, в программах-тренажерах, системах автоматизированного проектирования, компьютерных играх. Его воплощение в программе наиболее сложно, но зато он является и наиболее "дружественным", так как моментально осваивается пользователем.
В современных программах используются одновременно несколько типов диалога. Например, компьютерная игра начинается меню-заставкой для выбора режима ее работы, а продолжается диалогом непосредственного типа.
Имеющиеся в современных компьютерах возможности синтеза звука позволяют снабжать программные средства звуковым и музыкальным сопровождением. Это облегчает контроль за работой программ, переводит часть второстепенной информации со зрительного на слуховой канал.
Звуковое сопровождение может оказаться полезным для продолжительных недиалоговых периодов работы ЭВМ, когда нет необходимости наблюдать за экраном. Звук здесь применяется как дополнительное средство контроля этапов решения задачи на компьютере. Звуковое сопровождение при этом может носить самый разнообразный характер: от некоторого количества элементарных сигналов до имитации человеческого голоса.
Звуковые сигналы могут быть также уместны, например, при формировании заставок, подсказок, сообщений об ошибках.
Звуковое сопровождение аварийных ситуаций, возникающих в процессе выполнения программы, служит для экстренного привлечения внимания пользователя и является обязательным требованием при разработке качественных (надежных) программ. Звучание при этом может быть разовым, бесконечным (до прерывания его пользователем) или повторяющимся через определенные промежутки времени. Обычно генерируются резкие звуки сирены, гонга, ударов и другие подобные сигналы.
Мелодичные звуковые ряды (электронная музыка) могут использоваться при выводе заставки, в игровых программах и других случаях.
Простейшим способом генерации звука в программе для ПЭВМ является вывод на дисплей управляющего символа с кодом 7. В языке Turbo Pascal
это можно сделать, например, с помощью процедуры Write(#7). Стандартные процедуры управления динамиком в языке Turbo Pascal
Sound и NoSound осуществляют генерацию звука с заданной частотой, а продолжительность звучания устанавливается с помощью процедуры Delay. С помощью этих процедур и операторов цикла можно создать самые разнообразные звуковые эффекты, для чего используются наборы частот, соответствующие нотам и записанные в элементы массива. При этом ноты записываются в один массив, а продолжительность звучания каждой ноты – в другой. Соответствие нот частотам представлено в табл. 7.1.
Таблица 7.1
Таблица частот (в Гц)
Нота |
Большая октава |
Малая октава |
Октава 1 |
Октава 2 |
Октава 3 |
До |
131 |
262 |
523 |
1040 |
2093 |
До# |
139 |
277 |
554 |
1103 |
2217 |
Ре |
147 |
294 |
587 |
1176 |
2349 |
Ре# |
156 |
311 |
622 |
1241 |
2489 |
Ми |
165 |
330 |
659 |
1311 |
2637 |
Фа |
175 |
349 |
698 |
1391 |
2794 |
Фа# |
185 |
370 |
740 |
1488 |
2960 |
Соль |
196 |
392 |
784 |
1568 |
3136 |
Соль# |
208 |
415 |
831 |
1662 |
3322 |
Ля |
220 |
440 |
880 |
1760 |
3520 |
Ля# |
233 |
466 |
932 |
1866 |
3729 |
Си |
248 |
494 |
988 |
1973 |
3951 |
Следует подчеркнуть, что использование звука должно носить умеренный характер. Программа, перенасыщенная звуковыми эффектами, будет быстро утомлять пользователя. В качественной программе должна быть предусмотрена возможность отключения звука.
Пример
. Программа генерации гаммы.
Program DemoGamma;
Uses CRT;
Const
M:array[1..7] of Word=
|
(262,294,330,349,392,440,494); T:array[1..7] of Word= |
{Ноты} |
(100,110,120,130,140,150,160);
Var i:Byte;
BEGIN
While not KeyPressed do
Begin
For i:=1 to 7 do Begin
Sound(M[i]);
Delay(T[i]);
NoSound
End
End END.
|
{Длительность} |
При работе с цветом программист обязан так подбирать цвета изображений на экране монитора, чтобы дать пользователю наиболее благоприятный (эргономичный) для глаз набор цветов. Существует ряд элементарных правил, соблюдение которых поможет достичь в какой-то мере цветовую гармонию на экране.
1. Изображения, цвета которых выбраны случайным образом, выглядят слишком яркими, что делает их трудными для восприятия. Поэтому при выборе цветов следует придерживаться какой-либо системы.
2. Если в изображении используется от двух до пяти цветов, для фона лучше всего выбрать дополнение для этих цветов.
3. Если в изображении используется большое количество цветов, то фон лучше сделать серым.
4. Если два цвета, примыкающие друг к другу, не гармонируют, их лучше разделить тонкой черной линией.
5. Желтый цвет лучше использовать на белом фоне, а синий – на черном.
6. Меньше всего глаза устают при использовании нескольких цветов одного и того же тона, двух дополнительных цветов и их смесей или цветов постоянной светлости.
Выполнение на ЭВМ большинства программ сопровождается вводом и выводом информации, для чего используются разнообразные периферийные устройства. Современные ЭВМ способны хранить во внешней памяти многие тысячи файлов практически без ограничения их объема. Для управления вводом-выводом и хранения информации в вычислительных системах существуют специальные средства. Совокупность правил, определяющих особенности размещения данных на периферийных устройствах, и методов доступа к ним составляет систему организации данных
. Совокупность средств операционной системы ЭВМ, обеспечивающая доступ к данным, называется системой управления данными
или файловой системой
.
Напомним, что файл
– это поименованная совокупность данных, хранимая во внешней памяти ЭВМ и имеющая определенную внутреннюю структуру. Имя файла составляется по определенным правилам и включает в себя до восьми символов (в операционной системе типа MS-DOS или PC-DOS), каждый из которых может быть буквой, цифрой или одним из разрешенных специальных знаков. В операционных системах семейства Windows 95/98/Me максимальная длина имени файла может достигать 255 символов. Имя файла может иметь расширение, которое отделяется точкой и содержит не более трех символов.
Пример
. Имена файлов в операционной системе MS-DOS (PC-DOS).
TURBO.EXE
PETROV.PAS
REPORT_2.TXT
Имя файла выбирается по тем же правилам, что и имя переменной в языках программирования, то есть оно должно быть мнемоничным. Расширение имени обычно указывает на тип данных в файле. Список некоторых расширений имен файлов, ставших стандартными в ПЭВМ, приведен в табл. 8.1.
Для обращения к группам файлов применяются групповые имена файлов, образуемые с помощью символов * и ?. Символ * в имени файла трактуется как "любая последовательность символов", символ ? – как "любой один символ".
Пример
. Групповые имена файлов.
*.EXE – все файлы с расширением EXE;
A*.TXT – все файла типа TXT, имена которых начинаются с буквы A;
PETROV.* – все файлы любых типов, имеющие имя PETROV;
B??.PAS – все файлы типа PAS, имена которых содержат три символа.
Первый символ – буква B; *.* – все файлы.
Для долговременного хранения программ и данных в ПЭВМ используются накопители на гибких и жестких магнитных дисках (НГМД и НЖМД соответственно). НЖМД для ПЭВМ часто называют "винчестерскими", так как технические параметры одного из первых НЖМД совпали с калибром популярного ружья Винчестера. Чтобы сослаться на конкретное устройство дисковой памяти, каждому накопителю присвоен идентификатор – латинская буква с последующим двоеточием: от A: до Z:. Идентификаторы A: и B:
обычно присваиваются НГМД, а C:, D:, E: и т.д. – НЖМД.
Таблица 8.1 Общепринятые расширения файлов в MS-DOS и Windows
Расширение имени |
Назначение |
ARJ, LZH, RAR, ZIP
BAK
ASM, BAS, C, PAS
BAT
BIN, DRV, SYS
CFG, INI
COM, EXE
DAT
DB, DBF
HLP
TMP, $$$
TXT, LST, DOC
MID, WAV, VOC
AVI, MOV
BMP, GIF, PCX, JPG
|
Файлы, содержащие архивную информацию
Предыдущая (резервная) копия файла
Файлы с программой на языке программирования
Командный файл операционной системы
Файлы, содержащие программу-драйвер
Файл конфигурации программной системы
Исполняемые файлы
Файл данных
Файл базы данных
Файл со справочной информацией
Временные файлы
Текстовые файлы
Файлы, содержащие звуковую информацию
Файлы, содержащие видеоизображение
Файлы, содержащие графические изображения
|
Схема дискового накопителя представлена на рис. 8.1. Магнитный диск в накопителях для микроЭВМ и ПЭВМ имеет диаметр 2,5, 3,5 или 5,25 дюймов (63, 89 или 133 мм соответственно) и представляет собой металлическую или неметаллическую пластину круглой формы, покрытую слоем ферромагнитного материала. Для сравнения, в накопителях ЕС и СМ ЭВМ диаметр дисков составлял 14 дюймов (356 мм). В процессе работы магнитный диск приводится во вращение от электродвигателя М1. Частота вращения гибкого диска 300 или 360 мин-1
, частота вращения жестких дисков гораздо выше: 3600…7200 мин-1
(в эксклюзивных моделях накопителей – 10000…15000 мин-1
).
Устройства дисковой памяти, используемые в ЭВМ, отличаются друг от друга конструкцией, емкостью, быстродействием и стоимостью. Но всем им присуще общее свойство: данные запоминаются на концентрических окружностях, расположенных на магнитной поверхности диска и называемых дорожками
. Количество бит информации, которое может храниться на поверхности магнитного диска, зависит от его геометрических размеров и
плотности записи. При заданных размерах диска плотность записи
Рис. 8.1. Схема записи информации на магнитный диск определяется количеством дорожек на поверхности диска и информационной емкостью каждой дорожки. Емкость дискового накопителя определяется также количеством рабочих поверхностей. В гибких дисках для записи информации используется одна или обе поверхности. В НЖМД для увеличения емкости используется несколько дисков, объединенных в пакет.
Количества поверхностей и дорожек на каждой поверхности диска являются физическими параметрами каждого конкретного типа накопителя. Для каждой поверхности имеется своя магнитная головка для записи и воспроизведения информации. Для перемещения магнитных головок предназначен шаговый электродвигатель М2. В процессе работы головки в НГМД прижимаются к поверхности магнитного диска, а в НЖМД головки "парят" над поверхностью диска под действием аэродинамических сил.
Для НЖМД вместо параметра "количество дорожек" чаще всего указывается характеристика "количество цилиндров". Цилиндр образуют дорожки, находящиеся одна под другой, то есть на одинаковом расстоянии от центра диска. Каждая дорожка делится на сегменты постоянной информационной емкости, называемые секторами
. В IBM-совместимых ПЭВМ емкость сектора равна 512 байт. Каждому цилиндру и сектору внутри дорожки присваивается уникальный номер.
Различают накопители со сменными и постоянными дисками. Обычно НЖМД имеют несменяемые диски, а НГМД – сменяемые, поэтому гибкие диски служат средством обмена информацией между отдельными ПЭВМ.
В ПЭВМ в настоящее используется только один вид гибких дисков с диаметром 3,5 дюйма типа DS/HD. Ранее использовались дискеты диаметром 8 и 5,25 дюйма. Существует несколько разновидностей форматов дискет, различающихся плотностью записи информации (табл. 8.2).
Таблица 8.2 Стандартные параметры ГМД
Размер в дюймах |
Емкость, килобайт |
Обозначение дискеты |
Количество дорожек |
Количество секторов |
5,25
5,25
5,25
3,5
3,5
3,5
|
360
720
1200 720
1440
2880
|
DS/DD
DS/QD
DS/HD
DS/DD
DS/HD
DS/ED
|
40
80
80
80
80
80
|
9
9
15 9
18
36
|
Если форматы гибких дисков стандартизированы, то формат жесткого диска задается в процессе изготовления накопителя. Каждая модель НЖМД имеет свои собственные параметры. В табл. 8.3 в качестве примера приведены форматы некоторых НЖМД различной емкости.
Для подготовки магнитных дисков к работе выполняется операция, называемая форматированием
, в процессе которой на диске производится формирование дорожек и секторов. После форматирования выполняется инициализация
диска, в результате которой на диск записывается дополнительная служебная информация, образующая файловую структуру диска. Форматирование и инициализация магнитного диска в операционной системе MS-DOS производятся командой FORMAT, например:
>FORMAT A: – форматирование гибкого диска в накопителе A:.
В процессе инициализации один физический НЖМД большой емкости может быть поделен на несколько логических накопителей, или томов
. При этом каждому тому присваивается собственный идентификатор.
Таблица 8.3 Параметры НЖМД
Емкость накопителя,
Мбайт
|
Количество цилиндров |
Количество секторов на дорожке |
Количество магнитных головок |
41
116
504
2437
|
820
762
1024
4960
|
17
39
63
63
|
6
8
16
16
|
Файловая структура магнитного диска предполагает наличие на нем каталога файлов
. Каталог состоит из множества записей, содержащих сведения о хранящихся на диске файлах. Каждая запись каталога содержит имя файла и расширение имени, размер файла, адрес его расположения на диске, дату и время создания файла, атрибуты файла и другие необходимые сведения. Любое обращение к файлу предваряется обращением к каталогу диска с целью определения местонахождения этого файла, после чего с файлов выполняются требуемые действия.
Простейшая (одноуровневая) структура каталога (рис. 8.2, а) обычно используется для гибких дисков. Для доступа к данным в НЖМД, хранящих сотни и тысячи файлов, применяется древовидная (многоуровневая) структура каталогов (рис. 8.2, б). В вершине древовидной структуры находится корневой каталог, создаваемый в процессе инициализации диска. Ветви дерева образуют подкаталоги, которые создаются и удаляются командами операционной системы. Имена подкаталогам присваиваются при их создании по тем же правилам, как и любым другим файлам.
Для того чтобы найти файл на диске с древовидным каталогом, операционная система должна просмотреть всю цепочку каталогов по пути от корневого каталога до подкаталога, хранящего искомый файл. Перечень всех имен каталогов на пути к файлу называется маршрутом
. Имена подкаталогов в маршруте разделяются символом \. Поскольку корневой каталог имени не имеет, то запись маршрута от корневого каталога начинается с символа \. Таким образом, полная спецификация файла включает в себя идентификатор накопителя, маршрут и имя файла, например:
E:\USER\PETROV\REPORT.TXT .
Рис. 8.2. Примеры файловых структур на магнитных и оптических дисках:
а – одноуровневый каталог; б – древовидная структура каталогов.
Накопители на магнитных лентах (НМЛ) получили очень широкое распространение в вычислительной технике благодаря таким своим качествам, как большая информационная емкость, возможность практически неограниченного во времени хранения информации, многократное использование носителя, высокая надежность и низкая стоимость. На магнитной ленте достигнута самая низкая стоимость хранения одного бита данных, поэтому она широко применяется для архивного хранения больших массивов информации.
Магнитная лента представляет собой двухслойную композицию, состоящую из тонкой пластиковой основы и рабочего слоя из порошкового ферромагнитного материала. В вычислительной технике используются ленты шириной 12,7 мм (0,5 дюйма), 6,35 мм (0,25 дюйма) и 3,81 мм (0,15 дюйма). Для хранения широкой ленты служат катушки; узкие ленты заправляются в кассеты или картриджи.
Кассетные НМЛ получили распространение в качестве дешевой внешней памяти микроЭВМ. Они выгодно отличаются от катушечных накопителей простотой и компактностью конструкции, удобством в эксплуатации. Информация на кассетную магнитную ленту записывается последовательно бит за битом, количество дорожек записи – 4 или 9.
Файлы на магнитных лентах располагаются последовательно один за другим, поэтому чтобы получить доступ к n
-му файлу на ленте, следует пропустить (n
–1) файл. Такая схема доступа к данным называется последовательной, поэтому НМЛ называются устройствами последовательного доступа. В отличие от них дисковые накопители называются устройствами прямого, или произвольного, доступа. Каталоги файлов на магнитных лентах обычно не создаются.
Оптические диски, или компакт-диски (CD, КД), изначально были разработаны для высококачественной записи музыки. В последнее десятилетие они получили широкое распространение в качестве устройств внешней памяти ЭВМ благодаря своим малым размерам, большой емкости, надежности и долговечности в работе. Такие диски оказались очень удобными для поставки многих программ и массивов данных, поэтому практически все современные программные продукты распространяются на компакт-дисках.
Информация на компьютерных компакт-дисках кодируется путем чередования участков диска, отражающих и не отражающих свет. Компактдиск состоит из поликарбонатной основы, отражающего слоя и защитных слоев. Диаметр такого диска составляет 5,25 или 3,5 дюйма. Компакт-диск имеет всего одну дорожку записи в форме непрерывной спирали Архимеда, идущей от наружного диаметра диска к внутреннему. Хранение файлов на компьютерных компакт-дисках принципиально организовано таким же образом, как и на магнитных дисках.
Для работы с компакт-дисками предназначаются специальные CDприводы. Воспроизведение информации с компакт-диска происходит при помощи луча миниатюрного полупроводникового лазера. Луч, попадая на отражающую поверхность, отклоняется на фотодетектор, который интерпретирует это как двоичная единица. Луч, попадающий во впадину, рассеивается и поглощается, при этом фотодетектор фиксирует двоичный ноль. Частота вращения диска в процессе считывания информации обычно не превышает 6000 мин-1
. Загрузка компакт-диска в привод и выемка из привода производятся с помощью выдвижной панели или кассеты. Практически все CDприводы способны воспроизводить музыку с аудиодисков.
Наиболее широко распространены 5,25-дюймовые компакт-диски типа CD-ROM (Read-Only-Memory), которые допускают только воспроизведение информации. Максимальная информационная емкость CD-ROM составляет 650–700 Мбайт. На диски типа CD-R (Recordable) и CD-RW (Read-Write) можно записывать однократно (для CD-R) или многократно перезаписывать информацию (для CD-RW), используя для этого специальные приводы. Такие диски могут служить образцами для дальнейшего тиражирования информации или для создания архивов. Еще более высокой емкостью обладают диски типа DVD (Digital Versatile Disk) – от 4,7 до 17 Гбайт, но для работы с ними необходимы специальные DVD-приводы.
По мере увеличения емкости оперативной памяти ЭВМ и повышения ее быстродействия возникла идея использовать часть памяти для имитации (моделирования) работы дискового накопителя. Главная цель такой "подмены" – повышение производительности работы дисковой подсистемы ЭВМ, так как обращения к памяти происходят быстрее, чем к дисковому накопителю с механическим перемещением магнитных головок. Электронный диск бывает также полезен и в случае, когда на ЭВМ отсутствует НЖМД.
Моделируемый в оперативной памяти дисковый накопитель называют электронным, или виртуальным, диском. При выключении питания ЭВМ и перезапуске операционной системы содержимое такого диска полностью теряется, поэтому он предназначен не для длительного хранения данных, а для их использования. Работа с электронным диском осуществляется так же, как с физическим дисковым накопителем, которому присвоен собственный идентификатор. Но при этом необходимо помнить, во-первых, что при работе с электронным диском следует периодически копировать его содержимое на реальный магнитный диск; во-вторых, что емкость электронного диска ограничена.
Электронными дисками иногда называются также устройства внешней памяти, построенные на микросхемах перепрограммируемых ПЗУ и имитирующие работу НЖМД. Такие накопители обладают на порядок более высоким быстродействием, чем обычные НЖМД, так как не имеют никаких движущихся частей, однако их емкость относительно мала, а стоимость еще достаточно велика.
При выполнении программ на ЭВМ любая последовательность вводимых или выводимых данных рассматривается как файл независимо от физической сущности периферийного устройства. Файлы на магнитных носителях имеют имена, а для идентификации остальных файлов используются имена периферийных устройств, принятые в данной операционной системе. Например, в операционных системах MS-DOS и Windows приняты следующие обозначения периферийных устройств: CON (дисплей для вывода или клавиатура для ввода), PRN (печатающее устройство), COM (последовательный коммуникационный порт), NUL (фиктивное устройство) и другие.
На логическом уровне файл состоит из отдельных логических записей, которые могут быть фиксированной или переменной длины. На физическом уровне файл является набором выделенных ему блоков внешней памяти (физических записей), каждый из которых хранит одну или несколько логических записей файла. Минимальный размер физической записи – один сектор магнитного диска. Если файл полностью располагается в смежных секторах магнитного диска, то он называется непрерывным
.
Фрагментированный
файл занимает на диске несколько несмежных областей.
Файлы могут иметь последовательную и произвольную организацию и называться соответственно файлами последовательного и прямого доступа. При последовательной организации
логические записи располагаются в порядке их поступления в файл. Выборка данных из файла происходит лишь в порядке их физического расположения. Файлы с последовательной организацией могут быть созданы на носителе данных любого типа.
Файлы произвольного доступа
могут быть созданы только на магнитных дисках. Такой файл состоит из логических записей фиксированной длины и пронумерованных. Номер записи указывает на ее место относительно начала файла. В файле наряду с заполненными записями могут находиться и пустые записи. Произвольная организация широко используется в файлах баз данных.
Обработка любого файла в программе начинается с процедуры открытия файла
. Файл может быть открыт только для чтения, записи, дополнения и для других операций. В языке Turbo Pascal
для этой цели служат стандартные процедуры RESET, REWRITE, APPEND.
В программе может быть одновременно открыто несколько файлов. Во всех случаях открытому файлу выделяется область оперативной памяти, называемая буфером
. Буфер предназначен для временного хранения передаваемых данных и повышения производительности операций вводавывода. Размер буфера обычно кратен информационной длине сектора магнитного диска (512 байт).
Завершаются операции ввода-вывода процедурой закрытия файла
, в результате которой освобождается буферная память, а сам файл занимает выделенную ему область внешней памяти. В языке Turbo Pascal
для этой цели служит стандартная процедура CLOSE.
Операционные оболочки, или файловые менеджеры, существенно упрощают работу пользователя с файловой системой ПЭВМ и предоставляют дополнительные возможности по управлению компьютером. Эти программы появились относительно давно, в эпоху операционных систем типа CP/M и MSDOS, имевших неудобный командный язык. Первой удачной, а поэтому ставшей чрезвычайно популярной универсальной операционной оболочкой для IBM-совместимых ПЭВМ, стала программа Norton Commander, которая появилась в 1986 году. Оболочка Norton Commander стала популярной в результате удачно спроектированного многооконного видеоинтерфейса с пользователем, имеющего систему иерархических меню, управляемых и клавиатурой, и "мышью". Оболочка наглядно отображала файловую структуру магнитных дисков и делала более удобным ввод команд операционной системы. На основе идеи Питера Нортона было разработано целое семейство клонов Norton Commander:
- PIE Commander (PIE Systems International, Россия);
- DOS Controller (Сорен Краг, Германия); -Volcov Commander (Всеволод Волков, Украина);
- DOS Navigator (RIT Research Labs, Молдова);
- NDN (Денис Смирнов, Россия);
- WinCommander (Мегасофт, Россия);
- Windows Commander (Кристиан Гислер, Германия);
- FAR manager (Евгений Рошаль, Россия);
- DISCo Commander (DISCo, Россия); -WinNavigator (AGNI, США-Россия); -Frigate (WnSoft, Россия).
Независимо от происхождения все операционные оболочки предназначены главным образом для запуска программ, отображения на экране монитора содержимого файловой структуры накопителей на магнитных дисках, манипулирования файлами и каталогами (создание, удаление, просмотр содержимого, модификация, переименование, копирование), поиска файлов и каталогов, поиска информации внутри файлов.
Несмотря на то, что операционные системы семейства Windows имеют в своем составе собственную оболочку для управления файлами Explorer ("Проводник"), оболочки типа Norton Commander остаются до сих пор популярным инструментом управления ПЭВМ (отметим, что разработан специальный вариант Norton Commander для Windows). Все оболочки типа Norton Commander имеют в своей основе одинаковые принципы построения и функционирования, различаясь лишь в деталях. Основные функциональные возможности оболочек и приемы работы с ними рассмотрим на примере оболочки Norton Commander версий 3.0 и 4.0, ставших в компьютерном мире эталоном среди операционных оболочек.
Перед запуском оболочки необходимо определить, на каком накопителе (C:, D:, E: и т.д.) и в каком каталоге размещены ее файлы. Обычно эти файлы располагаются в каталоге с примерным наименованием NC. При этом центральным программным файлом оболочки является, например, nc.exe или vc.com. Запуск оболочки осуществляется с помощью командной строки:
C:\NC\>nc
После запуска центральной программы на экране монитора появятся одно или два окна оболочки. Схема структуры экрана операционной оболочки показана на рис. 8.3.
Рис. 8.3. Схема экрана операционной оболочки Norton Commander
(Показана только левая панель полной высоты в режиме Full)
На экране цветного монитора будут отображаться две панели
синего цвета (или одна из них, справа или слева). Эти панели являются основными деталями экрана оболочки. В них отображаются списки имен каталогов и файлов. Имена файлов, как правило, выводятся строчными буквами, а имена каталогов – прописными, и они предшествуют файлам. Панели обычно занимают весь экран, но есть возможность сделать панели половинной высоты.
В правом верхнем углу правого окна могут располагаться часы
. В процессе работы оболочки на экране могут появляться окна красного цвета, сообщающие о каких-либо ошибках, и диалоговые окна, предлагающие выбрать какой-либо параметр, например идентификатор накопителя.
На одной из панелей располагается маркер
, являющийся курсором оболочки. Маркер представляет собой выделение слова другим фоном (обычно серо-зеленым) и указывает на текущий файл или каталог. Панель, на которой находится маркер, является активной
; противоположная панель при этом является неактивной
. Если компьютер оснащен манипулятором "мышь", то на экране будет присутствовать курсор "мыши", который представляет собой прямоугольник, имеющий цвет, контрастный цвету панели (на синем фоне курсор "мыши" будет красного цвета).
Экран оболочки может исчезнуть автоматически, если в течение некоторого времени компьютер не используется. Вместо экрана оболочки обычно выводится заставка (screen saver) в виде звездного неба. Экран оболочки можно погасить принудительно, если переместить курсор "мыши" в правый верхний угол экрана. Для возобновления работы с оболочкой следует нажать на любую клавишу клавиатуры или переместить "мышь".
Для перемещения маркера между панелями предназначена клавиша Tab
. Для перемещения маркера внутри панели используются клавиши управления курсором и клавиши Home
, End
, PageUp
, PageDown
. Клавиши Home
и
End
перемещают маркер соответственно в начало или конец списка каталогов и файлов, а клавиши PageUp
и PageDown
перемещают маркер соответственно на страницу вверх или на страницу вниз.
Для просмотра содержимого каталога на него следует установить маркер и нажать клавишу Enter
. При этом объект ..
(две точки) обозначает выход в вышестоящий каталог. Чтобы запустить на выполнение программный файл, маркер следует установить на соответствующее имя и нажать клавишу Enter
.
С помощью клавиши Insert
можно выделять файлы или каталоги. Имена выделенных объектов обычно отображаются желтым цветом. Все манипуляции с выделенными объектами (копирование, удаление и другие) будут производиться как с единым целым. Для выделенных файлов подсчитывается и выводится их суммарный объем. Отмена выделения осуществляется с помощью той же клавиши Insert
.
Диалоговые окна могут содержать командные кнопки
, выполненные в виде слова, заключенного в скобки, например, [Copy]
. Перемещаться по командным кнопкам можно с помощью клавиш управления курсором, клавиши Tab
или курсора "мыши".
В самой нижней строке экрана располагается нижнее меню
, в котором перечислены десять команд оболочки, выполняемые после нажатия функциональных клавиш F1
– F10
. Рядом с кратким наименованием команды расположена цифра, обозначающая, какой функциональной клавише соответствует каждое действие. Назначение функциональных клавиш:
F1
– вызов справочника;
F2
– вызов меню пользователя;
F3
– просмотр содержимого отмеченного маркером файла;
F4
– редактирование содержимого отмеченного маркером файла;
F5
– копирование отмеченного маркером файла, каталога, группы файлов или группы каталогов;
F6
– перенос отмеченного маркером файла, каталога, группы файлов или группы каталогов;
F7
– создание каталога в активной панели;
F8
– удаление отмеченного маркером файла, каталога, группы файлов или группы каталогов;
F9
– вызов верхнего меню; F10
– выход из оболочки.
Справочная информация
, выводимая после нажатия клавиши F1
, является контекстно-зависимой, то есть на экране появляется разъяснение именно того состояния, в котором находится оболочка. Для просмотра справочного материала используются клавиши управления курсором. В нижней части окна со справочной информацией находится ряд командных кнопок. Кнопка [Next]
предназначена для вывода следующего раздела справочка, кнопка [Previous]
– для вывода предыдущего раздела, кнопка [Index]
– для вывода оглавления справочника, кнопка [Cancel]
(или клавиша Esc
) – для выхода из справочника. Справочник хранится в файле с расширением hlp.
Меню пользователя
, которое выводится на экран после нажатия клавиши F2
, содержит список команд, определенных пользователем. Выбор команды осуществляется с помощью либо курсора и клавиши Enter
, либо оперативной клавиши, либо "мышью". Меню пользователя создается и редактируется с помощью соответствующего пункта верхнего меню оболочки. Текст меню обычно хранится в каталоге программ оболочки в текстовом файле с расширением mnu. Основные правила оформления меню следующие.
Каждая команда меню описывается строкой-заголовком, за которой следует одна или несколько команд операционной системы. Строка заголовок может начинаться с наименования оперативной клавиши вызова команды (любая клавиша клавиатуры, кроме апострофа, или функциональная клавиша F1
– F10
), за которой должно следовать двоеточие. После двоеточия через пробел располагается наименование команды. Следующие строки должны начинаться с пробела, они оформляются как командные строки операционной системы. Меню пользователя может содержать строки комментариев, которые должны начинаться с символа апострофа.
Пример.
Оформление пункта меню пользователя, связанного с последовательным выполнением двух команд:
F1: Установка даты и времени
' Команда установки даты
DATE
' Команда установки времени TIME
В данном примере в качестве оперативной клавиши назначена функциональная клавиша F1
.
В режиме просмотра
файлов (после нажатия клавиши F3
) доступны следующие функциональные клавиши:
F1
– вызов справочника;
F2
– включение/выключение режима переноса длинных строк;
F4
– включение/выключение режима просмотра содержимого файла в шестнадцатеричных кодах;
F7
– поиск в файле заданного символа, слова или фразы;
Shift+7
– продолжение поиска;
F8
– выбор кодовой таблицы;
F10
или Esc
– выход из режима просмотра.
В режиме редактирования
файлов (после нажатия клавиши F4
) могут быть использованы следующие функциональные клавиши:
F1
– вызов справочника;
F2
– запись файла на магнитный диск;
Shift+F2
– запись файла с новым именем;
F7
– поиск заданного символа, слова или фразы;
Shift+7
– продолжение поиска;
F10
или Esc
– выход из режима редактирования; Shift+10
– запись файла и выход из редактора.
В режимах просмотра или редактирования в верхней части экрана выводится информационная строка, которая обычно содержит полную спецификацию просматриваемого или редактируемого файла, строку и колонку, в которой находится курсор, а также десятичный код редактируемого символа.
Чтобы создать новый файл следует использовать комбинацию клавиш Shift+F4
и ввести имя нового файла.
Собственные программные средства оболочек, предназначенные для просмотра и редактирования файлов, обычно обладают скромными возможностями. Для запуска внешних программ просмотра и редактирования файлов, обладающих более широкими функциональными возможностями, предназначены комбинации клавиш Alt+F3
и Alt+F4
соответственно. При этом маршрут внешних программ должен быть задан с помощью соответствующего пункта подменю Options
верхнего меню оболочки.
В режимах копирования
, переноса
и переименования
файлов и каталогов (после нажатия клавиш F5
и F6
) появляется диалоговое окно, которое содержит строку ввода маршрута копирования (переноса или переименования) объекта и ряд командных кнопок: [Copy]
(или [Move]
, или [Rename]
) – для подтверждения операции; [Tree]
– для просмотра дерева каталогов; [Cancel]
или [Abort]
– для отмены операции. Если при выполнении данных операций имя исходного файла совпадет с именем файла в каталоге назначения, то на экран будет выведено окно красного цвета, содержащее соответствующее предупреждение и ряд командных кнопок: [Overwrite]
– переписать текущий файл или каталог; [All]
– переписать все файлы или каталоги; [Cancel]
или [Abort]
– отменить операцию. В процессе копирования, переноса или переименования на экране обычно присутствует окно с индикатором прогресса выполнения операции. Для распечатки текстового файла его следует скопировать на устройство PRN.
В процессе удаления
файлов или каталогов (после нажатия клавиши F8
) появляется диалоговое окно с командными кнопками [Delete]
– подтвердить удаление и [Cancel]
или [Abort]
– отменить операцию.
Между панелями и нижним меню находится командная строка операционной системы
. В этой строке отображаются команды, которые вводятся с клавиатуры. С помощью комбинации клавиш Ctrl+Enter
в командную строку можно скопировать отмеченное маркером имя файла или каталога. Для удаления символов из командной строки следует использовать клавишу BackSpace
. Для отмены команды и быстрого удаления всех символов, находящихся в командной строке, следует использовать клавишу Esc
. Эта же клавиша является универсальным средством отмены других действий пользователя.
С помощью верхнего меню
, или меню команд
, можно выполнить все команды оболочки. В активном состоянии меню занимает самую верхнюю строку экрана и содержит следующие подменю:
Left
– установка параметров вывода информации для левой панели;
Files
– команды для манипулирования файлами и каталогами;
Commands
– прочие команды управления;
Options
– установка режимов работы оболочки;
Right
– установка параметров вывода информации для правой панели.
Подменю Left
и Right
являются одинаковыми по содержанию и содержат следующие пункты:
Brief
– включить вывод информации в краткой форме (только имена файлов);
Full
– включить вывод информации в полной форме (имя файла или каталога, размер файла, дата и время создания или последней модификации файла или каталога);
Info
– включить информационную панель;
Tree
– включить панель, отображающую дерево каталогов;
Quick view
– включить панель быстрого просмотра файлов, отмеченных маркером;
On/Off
– включить/выключить панель;
Name
– сортировать файлы и каталоги по имени в алфавитном порядке;
Extension
– сортировать файлы и каталоги по расширению имени в алфавитном порядке. Файлы и каталоги с одинаковыми расширениями сортируются по имени;
Time
– сортировать файлы и каталоги по времени создания или обновления. Самые "свежие" файлы или каталоги располагаются в начале списка;
Size
– сортировать файлы по размеру. Самые большие файлы
располагаются в начале списка;
Unsorted
– файлы и каталоге показываются в том порядке, в котором они были созданы;
Re-read
– обновить содержимое панели;
Drive
– сменить накопитель для данной панели.
Информационная панель
имеет заголовок Info
и обычно содержит следующие сведения:
- полный объем оперативной памяти компьютера;
- размер свободной оперативной памяти;
- емкость накопителя, с которым связана активная панель;
- размер свободной памяти на том же накопителе;
- содержимое файла с именем dirinfo (или descript.ion), если он присутствует в текущем каталоге. Эти файлы используются для хранения текстовых пояснений к каталогу.
Панель дерева каталогов
имеет заголовок Tree
и предназначена для отображения файловой структуры накопителя, с которым связана активная панель, и быстрого перехода в требуемый каталог. Для перемещения маркера по панели Tree
используются клавиши управления курсором.
Подменю Files
обычно содержит пункты Help
, Menu
, View
, Edit
, Copy
, RenMov
, MkDir
, Delete
, которые соответствуют функциональным клавишам F1
– F8
, а также пункты:
File Attributes
– включить/выключить атрибуты файлов Read Only
(файл только для чтения), Archive (архивный файл), System (системный файл), Hidden (скрытый файл);
Select group
– выделить группу файлов; Unselect group
– отменить выделение.
Подменю Commands
обычно содержит следующие пункты: Find file
– искать файл или каталог по заданному признаку; History
– показать историю последних выполненных команд;
EGA Lines
, Video mode
– изменить режим работы видеоадаптера; Swap panels
– поменять панели местами;
Panels on/off
– включить/выключить обе панели одновременно;
Compare directories
– сравнить содержимое каталогов;
Menu file edit
– создание и редактирование меню пользователя; Extension file edit
– создание и редактирование файла расширений.
Файл расширений
предназначен для связывания каких-либо программ с файлами определенного типа. Это свойство позволяет после нажатия клавиши Enter
для отмеченного маркером файла автоматически запустить определенную программу и передать этой программе имя отмеченного файла как параметр. Файл расширений имеет текстовый формат, имеет расширение ext и располагается в каталоге файлов оболочки. Каждая строка файла расширений содержит расширение имени файла и текст команды для обработки файла с таким расширением, разделенных двоеточием. При этом можно использовать следующие условные обозначения параметров команд:
!.! – обозначает имя фала с расширением (например, report.txt);
! – обозначает имя файла без расширения (например, report); !: – обозначает текущий накопитель (например, С:); !\ – обозначает текущий каталог (например, /USER).
Если необходимо выполнение более чем одной команды, в качестве команды следует использовать вызов командного файла операционной системы.
Пример.
Оформление строки файла расширений:
pas: E:\TP6\turbo.exe !.!
В данном примере с расширением имени файла pas связывается запуск системы программирования Turbo Pascal
.
Подменю Options
содержит пункты, предназначенные для выбора параметров конфигурации оболочки, например:
Configuration
– установка режимов работы оболочки (цвет панелей, время задержки гашения экрана и другие);
Auto menus
– постоянный вывод меню пользователя;
Path Promt
– установить вид приглашения (promt) в командной строке операционной системы;
Key bar
– включить/выключить нижнее меню;
Menu bar always visible
– постоянное отображение верхнего меню;
Full screen
– включить/выключить полный или половинный размер панелей;
Mini status
– включить/выключить информационную строку в нижней части панелей;
Clock
– включить/выключить часы;
Save setup
– сохранить параметры конфигурации оболочки в файле с расширением ini.
Для оперативного управления панелями, не обращаясь к верхнему меню, обычно предназначены следующие комбинации "горячих" клавиш:
Ctrl+F1
– включить/выключить левую панель;
Ctrl+F2
– включить/выключить правую панель;
Ctrl+F3
– включить/выключить сортировку файлов по имени;
Ctrl+F4
– включить/выключить сортировку по расширению имени;
Ctrl+F5
– включить/выключить сортировку файлов по времени;
Ctrl+F6
– включить/выключить сортировку файлов по размеру;
Ctrl+F7
– выключить режим сортировки файлов;
Ctrl+B
– включить/выключить нижнее меню;
Ctrl+L
– включить/выключить информационную панель;
Ctrl+O
– включить/выключить обе панели одновременно;
Ctrl+P
– включить/выключить неактивную панель;
Ctrl+R
– перечитать оглавление каталога в активной панели;
Ctrl+U
– поменять панели местами;
Alt+F1
– изменить накопитель для левой панели;
Alt+F2
– изменить накопитель для правой панели;
Alt+F7
– поиск файлов или каталогов;
Alt+F8
– вывести историю команд;
Alt+F9
– изменить количество выводимых на экран строк (25 или 50);
Alt+F10
– включить/выключить панель дерева каталогов;
Shift+F9
– сохранить параметры конфигурации;
Grey +
– выделить группу файлов по заданному признаку;
Grey –
– отменить групповое выделение (клавиши Grey +
и Grey –
находятся на малой цифровой клавиатуре).
Напомним, что все описанные команды оболочки можно выполнить и с помощью "мыши", не прикасаясь к клавиатуре. Для этого необходимо установить курсор "мыши" на соответствующий объект (имя файла, имя каталога, пункт меню) и нажать левую кнопку мыши один раз или два раза подряд, чтобы получить требуемый эффект. С помощью правой кнопки "мыши" можно отменять некоторые действия как клавишей Esc
, выделять файлы или каталоги, отменять выделение. Для листания списка файлов на панели следует установить курсор "мыши" чуть ниже самого последнего или выше самого первого из отображаемых элементов панели и нажать на левую кнопку "мыши".
Развитие информатики в нашей стране всегда происходило со значительными трудностями. Еще в 50-е годы кибернетика наряду с генетикой была объявлена "буржуазной лженаукой", что, естественно, не могло не сказаться на темпах развития в СССР компьютерных технологий. Поэтому большинство теоретических и прикладных разработок в информатике было выполнено учеными из США и Великобритании. Отечественные компьютеры развивались только до середины 70-х годов, так как в СССР было принято решение копировать в производстве вычислительных машин зарубежные разработки – большие и малые ЭВМ фирм IBM и DEC. Так появились семейства ЕС и СМ ЭВМ, а эволюция компьютеров типа БЭСМ и других оригинальных моделей полностью прекратилась. При этом значительный вклад в отечественную компьютерную промышленность внесли Б.А. Бабаян, И.С. Брук, В.Л. Бурцев, В.М. Глушков, А.П. Ершов, М.А. Карцев, С.А. Лебедев, А.А. Ляпунов, Б.Н. Наумов, И.В. Прангишвили, Л.Н. Преснухин, Б.И. Рамеев и многие другие.
Проводимая с 1991 года в нашей стране перестройка социальноэкономических отношений внесла еще больше проблем в процесс развития российской информатики. Практически полностью прекратилось производство отечественных микропроцессоров и других деталей для компьютеров, поэтому практически все персональные компьютеры, которые изготавливаются российскими производителями, полностью собираются из импортных комплектующих. Громадный вред рынку программной продукции в России наносит компьютерное пиратство, по уровню которого наша страна занимает одно из первых мест в мире. Большое количество российских специалистов по вычислительной технике и программированию выехали работать за границу. Все эти и прочие негативные факторы привели к тому, что современная Россия занимает примерно 50-е место в мире по уровню развития информационной технологии.
Однако наряду с указанными отрицательными моментами, российское общество стало более открытым, в связи с чем получило определенные выгоды. В Россию пришли новые передовые технологии в сферах компьютерной техники, программного обеспечения, средств связи и телекоммуникаций. Быстрыми темпами развивается отечественный сегмент сети Internet
. Информатизация стала одним из решающих факторов развития современного российского общества, и общество должно быть к ней подготовлено. Для реализации процесса информатизации обществу необходимы специалисты, свободно владеющие различными инструментами информационной технологии. Учебный курс "Информатика", изучаемый студентами вузов практически всех специальностей на младших курсах, предназначен для начального ознакомления с основами информационной технологии. От того, насколько глубоко студент усвоил основы информатики, зависит его становление как специалиста, умеющего свободно владеть самыми передовыми достижениями информатики.
1. Аладьев И.А., Хунт Ю.Я., Шишаков М.Л. Основы информатики. – М.: Филинъ, 1999. – 544 с.
2. Апокин И.А., Майстров Л.Е. История вычислительной техники. – М.: Наука, 1990. – 264 с.
3. Богумирский Б.С. Руководство пользователя ПЭВМ: В 2 ч. Ч. 1. – СПб: Печатный Двор, 1994. – 356 с.
4. Бородич Ю.С., Вальвачев А.Н., Кузьмич А.И. Паскаль для персональных компьютеров. – Мн.: Выш. шк., 1991. – 365 c.
5. Грызлов В.И., Грызлова Т.П. Турбо Паскаль 7.0. – М.: ДМК, 1999. – 400 с.
6. Гутер Р.С., Полунов Ю.Л. От абака до компьютера. – М.: Знание, 1981. – 240 с.
7. Епанешников А.М., Епанешников В.А. Программирование в среде Turbo Pascal 7.0. – М.: ДИАЛОГ-МИФИ, 1998. – 367 с.
8. Зубов В.С. Программирование на языке Turbo Pascal (версии 6.0 и
7.0). М.: Филинъ, 1997. – 304 с.
9. Зуев Е.А. Turbo Pascal: Практическое программирование. – М.: ПРИОР, 1997. – 336 с.
10. Кравец В.А., Шпильберг А.Я. Зарубежные ЭВМ. Оборудование и программное обеспечение. – Харьков: Основа, 1991. – 216 с.
11. Мануйлов В.Г. Разработка программного обеспечения на Паскале. – М.: ПРИОР, 1996. – 238 с.
12. Марченко А.И., Марченко Л.А. Программирование в среде Turbo
Pascal 7.0. – К.: ВЕК+, 2000. – 464 с.
13. Немнюгин С.А. Turbo Pascal: Практикум.– СПб: Питер, 2000. – 256 с.
14. Поляков Д.Б., Круглов И.Ю. Программирование в среде Турбо Паскаль. – М.: Изд-во МАИ, 1992. – 576 с.
15. Попов В.Б. Turbo Pascal для школьников. – М.: Финансы и статистика, 1999. – 528 с.
16. Сергиевский М.В., Шалашов А.В. Турбо Паскаль 7.0: Язык, среда программирования. – М.: Машиностроение, 1994. – 254 с.
17. Смирнов А.Д. Архитектура вычислительных систем. – М.: Наука,
1990. – 320 с.
18. Советов Б.Я. Информационная технология. – М.: Высш. шк., 1994. – 368 с.
19. Турбо Паскаль 7.0. – К.: BHV, 1998. – 448 с.
20. Хершель Р. Турбо Паскаль 4.0/5.0. – Вологда: МИК, 1991. – 342 с.
21. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. – М.: Нолидж, 1997. – 616 с.
22. Фаронов В.В. Турбо Паскаль 7.0. Практика программирования. – М.: Нолидж, 1997. – 432 с.
23. Фигурнов В.Э. IBM PC для пользователя. 7-е изд. – М.: ИНФРА-М, 1997. – 640 с.
ПРИЛОЖЕНИЕ
Основные символы данных
Данные - символ отображает данные, носитель данных не определен.
Запоминаемые данные - символ отображает хранимые данные в виде, пригодном для обработки, носитель данных не определен.
Оперативное запоминающее устройство- симво отображает данные, хранящиеся в ОЗУ.
З а п о м и н а ю щ е е у с т р о й с т в о с
последовательным доступом - символ отображает данные, хранящиеся в ЗУ с последовательным доступом (НМЛ, НКМЛ).
Запоминающее устройство с прямым доступом - символ отображает данные, хранящиеся в ЗУ с прямым доступом (МД, МБ, ГМД, ОД).
Документ - символ отображает данные, представленные на носителе в удобочитаемой форме.
Ручной ввод - символ отображает данные вводимые вручную во время обработки с устройства любого типа.
Карт а - сим во л ото бражает данн ые представленные на носителе в виде карты (перфокарты, магнитной карты и др.).
Бумажная лента - символ отображает данные представленные на носителе в виде бумажной ленты.
Дисплей - символ отображает данные представленные в человекочитаемой форме н носителе в виде отображающего устройства.
Основные символы процесса
Процесс - символ отображает функцию обработки данных любого типа.
Специфические символы процесса
Предопределенный процесс - символ
отображает процесс, состоящий из одной ил нескольких операций или шагов программы которые определены в другом месте
(подпрограмме, модуле).
Ручная операция - символ отображает любо процесс, выполняемый человеком.
Подготовка - символ отображает модификаци команды или группы команд с целью воздействия на некоторую последующую функцию.
Решение - символ отображает решение или функцию переключательного типа, имеющую один вход и ряд альтернативных выходов Результаты вычислений могут быть записаны по соседству с линиями, отображающим пути выхода.
Параллельные действия - символ отображае синхронизацию двух или более параллельных действий.
Граница цикла - символ, состоящий из двух частей, отображает начало и конец цикла. Об части симв ола имеют один и тот же идентификатор. Условаия для инициализации приращения, завершения и т.д. помещаютс внутри символа в начале или конце в зависимости от расположения операции проверяющей условие.
Специальные символы
Линия - символ отображает поток данных ил управления. При необходимости могут быт добавлены стрелки-указатели.
Терминатор - символ отображает выход во внешнюю среду и вход из внешней среды (начало и конец и программы и др.).
Соединитель - символ отображает выход часть схемы и вход из другой этой схемы и используется для обрыва линии и продолжени ее в другом месте. Соответствующие символы-соединители должны иметь одно и т же обозначение.
Комментарий - символ используется для пояснительных записей. Пунктирная линия в с и м в о л е к о м ме н т а р и я с в я з а н а с со от вет ств ую щим символом. Тек ст комментария должен быть помещен окол ограничивающей фигуры.
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ…………………………………………………………………………..3
1. ВВЕДЕНИЕ В ЭВМ……………..………………………………………………..6
1.1. Эволюция средств вычислений……………………………………………...6
1.2. Эволюция ЭВМ……………………………………………………………….9
1.3. Поколения ЭВМ……………………………………………………………..11
1.4. Классификация ЭВМ………………………………………………………..13
1.5. Общее устройство ЭВМ…………………………………………………….16
1.6. Сети ЭВМ……………………………………………………………………18
2. ПЕРСОНАЛЬНЫЕ ЭВМ…………...……………………………………………21
2.1. Что такое персональная ЭВМ?……………………………………………..21
2.2. Эволюция персональных ЭВМ…………………………………………….21
2.3. Устройство персональных ЭВМ…………………………………………...24
2.4. Области применения персональных ЭВМ ………………………………...26
3. СИСТЕМА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ЭВМ…………...…………28
3.1. Классификация программного обеспечения ЭВМ………………………..28
3.2. Операционная система персональной ЭВМ………………………………29
3.3. Языки программирования…………………………………………………..30
3.4. Системы программирования……………………………………………….34
3.5. Прикладные программы……………………………………………………35
3.6. Классификация пользователей ЭВМ………………………………………36
4. ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ В ЭВМ……………...…………………37
4.1. Кодирование информации в ЭВМ…………………………………………37
4.2. Системы счисления…………………………………………………………38
4.3. Методы перевода чисел из одной системы счисления в другую………...40
4.4. Формы представления в ЭВМ числовых данных…………………………41
4.4.1. Вещественные числа с фиксированной точкой………………………42
4.4.2. Вещественные числа с плавающей точкой…………………………...43
5. ПРИНЦИПЫ ПРОГРАММИРОВАНИЯ……………...………………………..47
5.1. Алгоритм и его свойства……………………………………………………47
5.2. Этапы подготовки задач к решению на ЭВМ……………………………..47
5.2.1. Постановка задачи……………………………………………………...48
5.2.2. Выбор метода решения. Математическая модель……………………48
5.2.3. Разработка алгоритма…………………………………………………..49
5.2.4. Разработка программы…………………………………………………51
5.2.4.1. Критерии качества программ………………………………………51
5.2.4.2. Преимущества языков программирования высокого уровня……52
5.2.4.3. Программирование с защитой от ошибок…………………………53 5.2.4.4. Принципы структурного проектирования алгоритмов и
программ……………………………………………………………………..54
5.2.4.5.Принципы модульного программирования……………………….54
5.2.4.6.Программирование в стандартизованном стиле………………….58
5.2.5. Отладка и тестирование программ……………………………………59
6. ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL…………….62
6.1. Основные приемы работы с системой программирования
Turbo Pascal
……………………………………………………………………...62
6.1.1. Состав системы программирования Turbo Pascal
………………….62 6.1.2. Управление окнами…………………………………………………...64
6.1.3. Набор и редактирование текста программы………………………...65
6.1.4. Трансляция и выполнение программы………………………………68 6.2. Алфавит языка……………..…………………..……………………………68
6.3. Структура программы………………………………………………………70
6.4. Типы данных………………………………………………………………...71
6.5. Выражения…………………………………………………………………..73
6.5.1.Переменные…………………………………………………………….73
6.5.2.Константы………………………………………………………………74
6.5.3.Стандартные функции…………………………………………………75
6.5.4.Знаки операций…………………………………………………………77
6.5.5.Порядок вычисления выражений……………………………………...78
6.6. Операторы языка ……………………………………………………………79
6.6.1. Простые операторы…………………………………………………….79 6.6.2. Структурированные операторы ……………………………………….80
6.6.2.1.Условные операторы………………………………………………..81
6.6.2.2.Операторы цикла……………………………………………………83
6.7. Структурированные типы данных…………………………………………85
6.7.1.Массивы………………………………………………………………...85
6.7.2.Строки …………………………………………………………………..87
6.7.3.Записи…………………………………………………………………...88
6.7.4.Множества………………………………………………………………90
6.7.5.Файлы…………………………………………………………………...91
6.8. Динамические структуры данных…………………………………………92
6.9. Подпрограммы………………………………………………………………93
6.9.1.Процедуры………………………………………………………………94
6.9.2.Функции………………………………………………………………...95
6.9.3.Формальные и фактические параметры………………………………96
6.9.4.Рекурсивные подпрограммы…………………………………………..97
6.10. Организация ввода-вывода данных………………………………………97
6.10.1. Стандартные процедуры и функции для всех типов файлов………98
6.10.2. Стандартные процедуры и функции для текстовых файлов……….99 6.10.3. Стандартные процедуры и функции для типизированных
файлов………………………………………………………………………...101 6.11. Стандартные модули……………………………………………………..102
6.11.1.Модуль CRT
………………………………………………………….103
6.11.2.Модуль DOS
………………………………………………………….105
6.11.3.Модуль GRAPH
………………………………………………………106
6.11.3.1.Начальные сведения о BGI-графике…………………………106
6.11.3.2.Инициализация графического режима……………………….107
6.11.3.3.Экранные окна…………………………………………………108
6.11.3.4.Процедуры рисования…………………………………………109 6.11.3.5. Процедуры заливки……………………………………………111
6.11.3.6. Вывод текста…………………………………………………...112
6.11.3.7. Управление видеостраницами………………………………..114
6.11.3.8. Работа с палитрой цветов……………………………………..115 7. ОСОБЕННОСТИ РАЗРАБОТКИ ПРОГРАММ ДЛЯ ПЕРСОНАЛЬНЫХ
ЭВМ……………………………………………………………..…………………116
7.1. Жизненный цикл программ……………………………………………….116
7.2. Технические средства диалога……………………………………………116
7.3. Формы диалога пользователя с персональной ЭВМ……………………118
7.3.1.Окна……………………………………………………………………119
7.3.2.Заставка………………………………………………………………..120
7.3.3.Диалог в форме меню…………………………………………………121
7.3.4.Командный диалог……………………………………………………122
7.3.5.Объектно-ориентированный диалог…………………………………123
7.3.6.Звуковое сопровождение программ………………………………….123
7.3.7.Правила выбора цвета изображений………………………………...125
8. ВНЕШНЯЯ ПАМЯТЬ ЭВМ…………..…………………………………...…..126
8.1. Файлы………………………………………………………………………126
8.2. Организация данных на магнитных дисках……………………………...127
8.3. Накопители на магнитных лентах………………………………………..132
8.4. Накопители на оптических дисках……………………………………….132
8.5. Электронные диски………………………………………………………..133
8.6. Ввод-вывод данных и организация файлов……………………………...134 8.7. Операционные оболочки………………………………………………….135
ЗАКЛЮЧЕНИЕ……………………………………………………………………144
БИБЛИОГРАФИЧЕСКИЙ СПИСОК……………………………………………145
ПРИЛОЖЕНИЕ. Условные обозначения схем алгоритмов и программ……...146
Николай Николаевич Трушин
ИНФОРМАТИКА
Учебное пособие
Редактор И.А. Есаян
Изд. лиц. ЛР №020300 от 12.02.97. Подписано в печать Формат бумаги 60х84 1
16
. Бумага офсетная.
Усл. печ. л. . Уч. изд. л. .
Тираж 100 экз. Заказ
Тульский государственный университет. 300600, г. Тула, просп. Ленина, 92.
Отпечатано в редакционно-издательском центре Тульского государственного университета.
300600, г. Тула, ул. Болдина, 151
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ…………………………………………………………………..…......... 3
ВВЕДЕНИЕ В ЭВМ………………..…………………………………………............ 6
1.1. Эволюция средств вычислений…………………………………….…................ 6
1.2. Эволюция ЭВМ..................................................................................................................... 10
1.3. Поколения ЭВМ………………………………………………………................ 12
1.4. Классификация ЭВМ…………………………………………………................. 14
1.5. Общее устройство ЭВМ…………………………………………….….............. 18
1.6. Сети ЭВМ………………………………………………………………............... 20
ПЕРСОНАЛЬНЫЕ ЭВМ……………………..……………………………….......... 23
2.1. Что такое персональная ЭВМ?………………………………………................ 23
2.2. Эволюция персональных ЭВМ………………………………………............... 24
2.3. Устройство персональных ЭВМ.................................................................................... 27
2.4. Области применения персональных ЭВМ................................................................. 29
СИСТЕМА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ЭВМ……………………....... 30
3.1. Классификация программного обеспечения ЭВМ…………………................ 31
3.2. Операционная система персональной ЭВМ………………………................... 32
3.3. Языки программирования……………………………………………............... 34
3.4. Системы программирования…………………………………………............... 38
3.5. Прикладные программы…………………………………………….................. 39
3.6. Классификация пользователей ЭВМ............................................................................ 40
ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ В ЭВМ…………………...…………......... 41
4.1. Кодирование информации в ЭВМ………………………………….................. 41
4.2. Системы счисления………………………………………………….................... 42
4.3. Методы перевода чисел из одной системы счисления в другую…................. 44
4.4. Формы представления в ЭВМ числовых данных……………………............. 46
4.4.1. Вещественные числа с фиксированной точкой…………………................... 47
4.4.2. Вещественные числа с плавающей точкой............................................................. 49
ПРИНЦИПЫ ПРОГРАММИРОВАНИЯ………………..……………………....... 52
5.1. Алгоритм и его свойства……………………………………………….............. 52
5.2. Этапы подготовки задач к решению на ЭВМ….…………………….............. 52
5.2.1. Постановка задачи............................................................................................................ 53
5.2.2. Выбор метода решения. Математическая модель.............................................. 53
5.2.3. Разработка алгоритма…………………………………………….................... 54
5.2.4. Разработка программы……………………………………………................. 56
5.2.4.1. Критерии качества программ………………………………......................... 56
5.2.4.2. Преимущества языков программирования высокого ............................... 58
уровня…………………………………………………….……………......................... 58
5.2.4.3. Программирование с защитой от ошибок…………………........................ 59
5.2.4.4. Принципы структурного проектирования алгоритмов и программ……………………………………………………………............................. 60
5.2.4.5. Принципы модульного программирования...................................................... 60
5.2.4.6. Программирование в стандартизованном стиле............................................. 64
5.2.5. Отладка и тестирование программ……………………………….................. 66
ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL…………........ 68
6.1. Основные приемы работы с системой программирования ............................ 68
Turbo
Pascal
.….............................................................................................................................. 68
6.1.1. Состав системы программирования Turbo Pascal
……………...................... 68
6.1.2. Управление окнами…………………………………………….…................... 70
6.1.3. Набор и редактирование текста программы………………….…................. 72
6.1.4. Трансляция и выполнение программы………………………….................... 75
6.2. Алфавит языка…………..…………………..…………………………............... 75
6.3. Структура программы…………………………………………………............. 78
6.4. Типы данных........................................................................................................................... 79
6.5. Выражения……………………………………………………………................. 81
6.5.1. Переменные………………………………………………………...................... 81
6.5.2. Константы………………………………………………………….................... 82
6.5.3. Стандартные функции…………………………………………........................ 84
6.5.4. Знаки операций.................................................................................................................. 85
6.5.5. Порядок вычисления выражений............................................................................... 87
6.6. Операторы языка……………………………………………………….............. 87
6.6.1. Простые операторы…………………………………………….….................. 88
6.6.2. Структурированные операторы…………………………………................... 89
6.6.2.1. Условные операторы…………………………………………....................... 90
6.6.2.2. Операторы цикла…………………………………………….......................... 92
6.7. Структурированные типы данных……………………………………............. 94
6.7.1. Массивы................................................................................................................................ 95
6.7.2. Строки……………………………………………………………...................... 97
6.7.3. Записи..................................................................................................................................... 98
6.7.4. Множества………………………………………………………….................. 100
6.7.5. Файлы................................................................................................................................... 101
6.8. Динамические структуры данных……………………………………............. 102
6.9. Подпрограммы…………………………………………………………............ 104
6.9.1. Процедуры......................................................................................................................... 105
6.9.2. Функции............................................................................................................................... 106
6.9.3. Формальные и фактические параметры…………………………................. 107
6.9.4. Рекурсивные подпрограммы……………………………………................... 108
6.10. Организация ввода-вывода данных…………………………………........... 108
6.10.1. Стандартные процедуры и функции для всех типов файлов…................ 109
6.10.2. Стандартные процедуры и функции для текстовых файлов…................. 110
6.10.3. Стандартные процедуры и функции для типизированных файлов……………………………………………………………………................... 112
6.11. Стандартные модули…………………………………………………............ 113
6.11.1. Модуль CRT..................................................................................................................... 114
6.11.2. Модуль DOS..................................................................................................................... 118
6.11.3. Модуль GRAPH............................................................................................................... 118
6.11.3.1. Начальные сведения о BGI-графике………………………...................... 118
6.11.3.2. Инициализация графического режима……………………...................... 119
6.11.3.3. Экранные окна………………………………………………...................... 121
6.11.3.4. Процедуры рисования………………………………………..................... 121
6.11.3.5. Процедуры заливки…………………………………………..................... 124
6.11.3.6. Вывод текста............................................................................................................... 125
6.11.3.7. Управление видеостраницами……………………………......................... 127
6.11.3.8. Работа с палитрой цветов………………………………… ОСОБЕННОСТИ РАЗРАБОТКИ ПРОГРАММ ДЛЯ ПЕРСОНАЛЬНЫХ .......................................... 128
ЭВМ……………………………………………………………………..………....... 129
7.1. Жизненный цикл программ............................................................................................ 129
7.2. Технические средства диалога………………………………………............... 129
7.3. Формы диалога пользователя с персональной ЭВМ………………............. 132
7.3.1. Окна………………………………………………………………..................... 133
7.3.2. Заставка…………………………………………………………….................. 134
7.3.3. Диалог в форме меню……………………………………………................... 135
7.3.4. Командный диалог……………………………………………….................... 136
7.3.5. Объектно-ориентированный диалог……………………………................... 137
7.3.6. Звуковое сопровождение программ……………………………................... 137
7.3.7. Правила выбора цвета изображений……………………………................. 139
ВНЕШНЯЯ ПАМЯТЬ ЭВМ………………...……………………...…………....... 140
8.1. Файлы…………………………………………………………………................ 140
8.2. Организация данных на магнитных дисках………………….………........... 141
8.3. Накопители на магнитных лентах……………………………………............. 146
8.4. Накопители на оптических дисках............................................................................... 147
8.5. Электронные диски……………………………………………………............. 148
8.6. Ввод-вывод данных и организация файлов…………………………............. 149
8.7. Операционные оболочки................................................................................................. 150
ЗАКЛЮЧЕНИЕ............................................................................................................................ 160
БИБЛИОГРАФИЧЕСКИЙ СПИСОК................................................................................. 161
ПРИЛОЖЕНИЕ. Условные обозначения схем алгоритмов и программ............ 162
|