Главная      Учебники - Разные     Лекции (разные) - часть 35

 

Поиск            

 

Учебная книга: НН Трушин Информатика

 

             

Учебная книга: НН Трушин Информатика

Министерство образования Российской Федерации

Тульский государственный университет

Н. Н. ТРУШИН

И н ф о р м а т и к а

Учебное пособие

Тула 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" – наука о компьютерной технике. Главная функция информатики заключается в разработке методов и средств преобразования информации. Информатика сочетает в себе свойства фундаментальных и прикладных наук. Сферами деятельности информатики как науки являются:

- разработка вычислительных машин и систем, а также технологии их создания;

- разработка математических моделей естествознания и общественных явлений с целью их строгой формализации;

- обработка информации, создание численных и логических методов решения задач;

- разработка алгоритмов решения задач управления, расчета и анализа математических моделей;

- программирование алгоритмов, создание программ для вычислительных машин.

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

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

1. ВВЕДЕНИЕ В ЭВМ

1.1. Эволюция средств вычислений

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

Появление ЭВМ было подготовлено историческим развитием средств вычислений. Понятие числа возникло задолго до появления письменности. Люди научились считать. В первобытное время первым счетным инструментом у человека была его собственная рука. Пальцевый счет использовался человеком и на более высоких ступенях развития цивилизации – в Древней Греции и Древнем Риме.

Затем человек стал использовать для счета самые примитивные устройства. Сначала это были деревянные палочки с зарубками – бирки . Первое упоминание о них было найдено на барельефе фараона Сети 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 века.

1.2. Эволюция ЭВМ

С начала 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), в которой были заложены основы кибернетики – науки, содержанием которой являются общие законы получения, хранения, передачи и переработки информации.

1.3. Поколения ЭВМ

За 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-х годов ХХ века начинается эпоха ЭВМ пятого поколения . Они характеризуются наличием параллельных вычислительных структур и элементов искусственного интеллекта. Эти машины умеют не только производить числовые расчеты, но и выполнять функции обработки смысловой информации и операции логического анализа. Сфера применения ЭВМ еще более расширяется, а программы для них разрабатываются с привлечением методов искусственного интеллекта. Элементная база ЭВМ пятого поколения – сверхбольшие интегральные микросхемы (СБИС), содержащие более миллиона полупроводниковых элементов, и устройства оптоэлектроники. Современные ЭВМ все шире объединяются в локальные и глобальные информационно-вычислительные сети, воплощая тем самым принципы распределенной обработки информации. Производительность современных ЭВМ повышается в основном двумя путями: совершенствованием элементной базы и разработки методов параллельной обработки информации.

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

В зависимости от вида перерабатываемой информации вычислительные машины делят на два больших класса: аналоговые и цифровые.

Аналоговая вычислительная машина (АВМ) оперирует информацией, представленной в виде непрерывных изменений некоторых физических величин. АВМ предназначены для моделирования физических процессов и решения узкого класса задач, которые могут быть описаны дифференциальными уравнениями. Первая АВМ была изобретена в 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.5. Общее устройство ЭВМ

Современная ЭВМ – это сложная техническая система, состоящая из совокупности механических, электронных и электротехнических устройств. Любая ЭВМ с архитектурой фон Неймана имеет в своем составе, как правило, следующие составные части (рис. 1.2):

– центральный процессор (ЦП), включающий в себя регистры, арифметико-логическое устройство (АЛУ) и устройство управления;

– устройства памяти;

– устройства ввода информации; – устройства вывода информации.

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

Устройства памяти служат для приема информации от других устройств, ее хранения, а также для передачи информации в другие устройства ЭВМ. Память большинства ЭВМ состоит из двух частей: основной и внешней.

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

Память ЭВМ характеризуется двумя главными параметрами: емкостью и быстродействием. Память разбивается на фиксированные участки малого размера, называемые ячейками . Номер такой ячейки называется адресом памяти . Объем памяти ЭВМ измеряется в байтах, каждый байт состоит из восьми двоичных разрядов – битов. Информация в оперативной памяти существует, только когда ЭВМ работает. При выключении ЭВМ содержимое оперативной памяти исчезает. Постоянные запоминающие устройства и внешняя память позволяют хранить информацию сколь угодно долгое время.

Рис. 1.2. Классическая структура ЭВМ

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

Разрядность регистров (8, 16, 32, 64 и более бит) является одной из главных характеристик процессора ЭВМ. Другой важной характеристикой процессора является максимальный объем адресуемой памяти. Так, например, самые массовые микропроцессоры для ПЭВМ Pentium III и Celeron фирмы Intel имеют 32-разрядные регистры, а максимальный объем адресуемой ими основной памяти составляет 64 Гбайта.

Устройство управления процессора управляет процессом работы ЭВМ. Оно содержит микропрограммы работы процессора и работает в соответствии с заданной программой, состоящей из последовательности команд процессора. Для выполнения программы ее нужно поместить в оперативную память, а затем инициировать выполнение первой команды. Команды в оперативной памяти располагаются последовательно, одна за другой.

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

Устройства ввода служат для ввода в память программ и данных. Устройства вывода предназначены для вывода результатов вычислений и приведения этих результатов в удобную для пользователя форму.

1.6. Сети ЭВМ

История сетей ЭВМ начинается в 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 млн.

2. ПЕРСОНАЛЬНЫЕ ЭВМ

2.1. Что такое персональная ЭВМ?

Конец ХХ века по праву можно назвать эрой персональных компьютеров. Определение персональных компьютеров изначально было в большой степени расплывчато, так как эти компьютеры обладают целым рядом отличительных свойств и новых потребительских качеств, отсутствующих у их предшественников. Для уточнения этого определения в статье американских специалистов в области электронной техники Х. Тунга и А. Гупты, опубликованной в 1982 году, было сформулировано семь требований, предъявляемых к персональным компьютерам:

1) невысокая стоимость, сопоставимая со средней заработной платой и стоимостью сложной бытовой техники;

2) наличие периферийных устройств, необходимых для ввода-вывода и хранения значительных объемов информации;

3) наличие аппаратных ресурсов, достаточных для решения реальных задач (в частности, достаточной емкости памяти и вычислительной мощности процессора);

4) поддержка языков программирования высокого уровня, например

Бейсика, Паскаля, Си;

5) наличие операционной системы, которая способна поддерживать диалоговое общение, что упрощает взаимодействие пользователя с компьютером;

6) "дружественность" по отношению к пользователю, подразумевающую простоту в общении с компьютером, сопоставимую с простотой использования бытовой техники, и наличие широкой сети сбыта компьютеров;

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

2.2. Эволюция персональных ЭВМ

История развития ПЭВМ неразрывно связана с успехами в области микроэлектроники. В 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-совместимых ПЭВМ стали следующие факторы:

• невысокая стоимость;

• высокая надежность;

• высокая ремонтопригодность;

• низкие эксплуатационные издержки;

• возможность легкой модернизации компьютера в соответствии с требованиями по применению или с целью компенсации морального износа;

• простота пользования;

• высокие возможности по переработке информации;

• компактная конструкция;

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

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

2.3. Устройство персональных ЭВМ

В основе громадной популярности компьютеров типа 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). Такие устройства фактически стали обязательным атрибутом каждой современной ПЭВМ;

• накопитель на кассетной магнитной ленте (стример);

• накопитель на сменных магнитных и магнитооптических дисках большой емкости;

• звуковой адаптер – устройство, дающее возможность воспроизводить и записывать речь и музыку с помощью компьютера. К нему могут подключаться акустические системы, микрофон, электромузыкальные инструменты, джойстик. Такими устройствами оснащается большинство современных ПЭВМ;

• устройство (тьюнер) для приема радиовещательных или телевизионных сигналов, осуществляющее функции радиоприемника или телевизора.

2.4. Области применения персональных ЭВМ

По своим техническим параметрам и функциональным возможностям все ПЭВМ можно подразделить на три основные категории: профессиональные, бытовые, учебные. Распределение парка ПЭВМ по этим категориям в США в 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 вносит новые формы дистанционного обучения и образования.

Социальные последствия от внедрения ПЭВМ велики и заключаются в следующем:

• резкое увеличение творческого содержания человеческой

деятельности;

• нереализуемые ранее возможности распространения знаний и информации посредством сетей ПЭВМ;

• уменьшение роли непосредственного человеческого общения, как на работе, так и в быту;

• повышение уровня сервиса в непроизводственной сфере и сфере

услуг;

• всесторонний контроль и фиксация результатов профессиональной деятельности;

• "раскрепощение" творческой деятельности, в частности, отсутствие необходимости работать на рабочем месте.

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

3. СИСТЕМА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ЭВМ

3.1. Классификация программного обеспечения ЭВМ

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

В настоящее время для разных типов ЭВМ разработаны сотни тысяч программ, которые могут быть разделены на следующие основные классы:

• базовое, или встроенное, ПО;

• системное ПО, включающее операционные системы (ОС) и сервисные программы (утилиты);

• системы программирования;

• прикладное программное обеспечение.

Базовое ПО обеспечивает непосредственное управление аппаратурой ЭВМ. Программы этого класса обычно размещаются в постоянной памяти ЭВМ и начинают свою работу сразу после включения компьютера.

Операционные системы дополняют аппаратные средства любой ЭВМ, позволяя прикладным программам обращаться к устройствам ЭВМ, а пользователю – управлять работой машины. Сервисные программы дополняют функции операционных систем. С их помощью производятся такие работы, как диагностирование и тестирование аппаратуры ЭВМ, настройка устройств ЭВМ на максимальную производительность, подготовка к работе магнитных носителей информации, перенос информации с одного носителя на другой, засекречивание и рассекречивание конфиденциальной информации, обеспечение связи с вычислительной сетью, борьба с компьютерными вирусами и многие другие.

С помощью систем программирования создаются все программы. Система программирования – это совокупность языка программирования и программных средств, предназначенных для создания программ для ЭВМ. В состав системы программирования входят транслятор, редакторы связей (компоновщик), библиотеки стандартных подпрограмм, программа-отладчик, справочные и обучающие подсистемы, текстовый редактор и другие компоненты, помогающие программисту в разработке программ.

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

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

3.2. Операционная система персональной ЭВМ

Операционные системы ЭВМ обеспечивают выполнение двух главных задач: 1) управление вычислительными процессами, происходящими внутри ЭВМ и 2) предоставление пользователю средств общего управления ЭВМ.

В рамках первой задачи операционная система осуществляет взаимодействие всех программ с устройствами ЭВМ и друг с другом, распределение ресурсов ЭВМ (процессора, памяти, периферийных устройств) между программами, выявление различных событий, возникающих в процессе работы машины, и соответствующей реакции на них. Общее управление ЭВМ осуществляется на основе командного языка.

Операционные системы для микроЭВМ и ПЭВМ содержат следующие основные программные компоненты:

- файловую подсистему;

- драйверы периферийных устройств; -процессор командного языка.

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

Файловая подсистема – это хранилище программ и данных, организованное чаще всего на магнитных и оптических дисках. Файл (file – папка для бумаг) – это поименованная совокупность данных, располагающаяся во внешней памяти ЭВМ и имеющая определенную внутреннюю структуру. Сведения о каждом файле, расположенном на магнитном или оптическом диске, сосредоточиваются в каталоге. Каталог доступен пользователю через командный язык операционной системы: его можно просматривать, добавлять в него новые файлы и удалять из него ненужные файлы. Каталог может иметь собственное имя и храниться в другом каталоге наряду с обычными файлами; так образуются иерархические (древовидные) файловые структуры.

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

Поддержка широкого набора периферийных устройств ЭВМ – одна из важнейших функций операционной системы. Осуществляется эта функция с помощью драйверов (driver – водитель, шофер) – специальных программ, ориентированных на управление периферийными устройствами. Каждому типу устройства соответствует свой драйвер. Драйверы стандартных устройств ПЭВМ – монитора (дисплея), клавиатуры, дисковых накопителей, печатающего устройства, коммуникационных портов – образуют в совокупности базовую систему ввода-вывода (BIOS, БСВВ). В IBM-совместимых ПЭВМ программы БСВВ заносятся в ПЗУ системной платы. Драйверы дополнительных устройств подключаются к операционной системе динамически при запуске ПЭВМ. Кроме этого, при запуске машины специальные программы БСВВ производят тестирование всех устройств ПЭВМ, и если тестирование завершается успешно, происходит запуск операционной системы.

Во всякой операционной системе имеется командный язык , который позволяет выполнять управляющие действия: манипулировать магнитными дисками, каталогами и файлами, устанавливать режимы работы ЭВМ, получать информацию о текущем состоянии машины. Обозначение команды отражает, как правило, ее функциональное назначение: например, команда COPY означает копирование файла с одного носителя на другой; DIR – просмотр каталога магнитного диска; DATE и TIME – установку текущей даты и времени на часах компьютера; FORMAT – подготовку к работе магнитного диска.

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

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

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

Наибольшее распространение на IBM-совместимых ПЭВМ получили операционные системы фирмы Microsoft MS-DOS и Windows, а также операционные системы фирмы IBM PC-DOS и OS/2. Наиболее популярной операционной оболочкой для ПЭВМ являются Norton Commander (авторы – Питер Нортон и Джон Соча) и ее многочисленные клоны.

3.3. Языки программирования

Современная технология программирования строится на том, что программа решения некоторой задачи на ЭВМ описывается на языке, достаточно близком к естественной формулировке задачи и алгоритма ее решения. Но процессор ЭВМ непосредственно может исполнить только последовательность машинных команд. Структура машинной команды обычно содержит две части: код операции и адресную часть, указывающую на адреса ячеек памяти, в которых хранятся значения операндов, с которыми надо выполнить заданную арифметическую или логическую операцию. операндов Каждая конкретная команда может иметь различное количество операндов либо не иметь ни одного. Коды операций и адреса операндов представляются в виде чисел, записанных в какой-либо системе счисления, чаще в всего в шестнадцатеричной. Совокупность кодов операций процессора конкретной ЭВМ образует ее машинный язык.

Например, для микропроцессоров семейства 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++ и другие.

3.4. Системы программирования

Под системой программирования понимается совокупность языка программирования и программных средств разработки программ для ЭВМ.

Основой систем программирования является транслятор, который может быть двух видов: компилятором или интерпретатором. Транслятор-компилятор делает перевод исходной программы, написанной на высокоуровневом языке программирования, на язык более низкого уровня, близкий к ЭВМ. Результат трансляции, сохраняемый в файле, называется объектной программой и требует дополнительной обработки с целью окончательного перевода на машинный язык. Эта дополнительная процедура осуществляется специальной программой редактором связей или компоновщиком . Окончательный результат – это программа на машинном языке, которая также сохраняется в файле. Описанная схема преобразования текста программы называется компиляцией и состоит, таким образом, из двух этапов: собственно трансляции и редактирования связей (компоновки). При этом существуют такие трансляторы-компиляторы, которые совмещают в себе и функцию редактора связей. Первые трансляторы для ЭВМ были компиляторного типа.

Транслятор-интерпретатор производит непосредственное выполнение операторов исходной программы. При этом программа на машинном языке не сохраняется, сохраняются только результаты выполнения. Первые трансляторы-интерпретаторы были разработаны для микроЭВМ и языка Бейсик. Интерпретация удобна для отладки вновь создаваемых программ, но скорость выполнения программ низкая. Отлаженные программы целесообразно скомпилировать в машинную программу, скорость выполнения которой гораздо выше, чем при интерпретации.

Кроме транслятора в систему программирования могут входить следующие программные продукты:

• текстовый редактор, предназначенный для ввода и редактирования текста программы и записи его в файл;

• библиотеки стандартных подпрограмм (математических, графических, для работы с периферийными устройствами ЭВМ и других);

• редактор связей (компоновщик);

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

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

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

Современные системы программирования носят интегрированный характер. Так, например, система программирования Turbo Pascal имеет в своем составе центральную программу (файл TURBO.EXE ), совмещающую в себе функции текстового редактора, компилятора, интерпретатора, отладчика и справочника (при наличии дополнительного файла TURBO.HLP ). Базовая библиотека стандартных подпрограмм находится в файле TURBO.TPL . Таким образом, ядро системы программирования состоит всего из трех файлов.

3.5. Прикладные программы

Стремительное развитие вычислительной техники и расширение сферы приложения ЭВМ привели к интенсивному развитию системы программного обеспечения. Развитие программного обеспечения пошло как вглубь (появились новые концепции операционных систем, языков программирования, баз данных и т.д.), так и вширь (прикладные программы приобрели самостоятельную ценность). По некоторым оценкам уже во второй половине 80-х годов на мировом рынке программных продуктов предлагалось порядка 35...50 тыс. прикладных программ. В настоящее время рынок программных продуктов увеличился во много раз и приобрел устойчивый характер, появилось много организаций, оказывающих услуги по распространению программного обеспечения для ЭВМ. В каждой развитой стране выпускается от 5 до 150 печатных изданий, информирующих пользователей ЭВМ о доступных компонентах программного обеспечения. В 1998 году объем продаж программного обеспечения составил более 250 млрд долларов. Среднегодовые темпы роста мирового рынка компьютерных программ составляют порядка 13,5% в год. Одним из основных инструментов распространения программ сегодня стала глобальная компьютерная сеть Internet .

Условно прикладные программы можно разделить на методикоориентированные и проблемно-ориентированные . Примером первых служат пакеты прикладных программ, предназначенных для решения широкого круга математических задач. Сфера приложения таких программ заранее не определена. Наоборот, проблемно-ориентированные программы служат для решения конкретного, часто очень узкого класса задач. Это, например, редакционно-издательские системы, системы трехмерной машинной графики, экспертные системы и многие другие.

Прикладное программное обеспечение способствует внедрению средств вычислительной техники практически во все сферы человеческой деятельности. В промышленности – это системы управления, технической и технологической подготовки производства; в бизнесе – системы материального и финансового учета; в науке – автоматизированные системы научных исследований (АСНИ); в образовании – автоматизированные обучающие системы (АОС); в быту – компьютерные игры и развлечения; в связи – электронная почта; в медицине – диагностическое оборудование.

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

1) текстовые процессоры, ориентированные на автоматизацию работы практически всех категорий пользователей компьютеров;

2) системы управления базами данных (СУБД), позволяющие создать собственную информационную систему и манипулировать данными, включенными в эту систему;

3) табличные процессоры, предназначенные для автоматизации подготовки проектов планов и отчетов административного характера;

4) системы машинной графики, служащие инструментом автоматизации проектирования и научных исследований;

5) информационно-вычислительные сети ЭВМ, предназначенные для обмена информацией между пользователями различных ЭВМ.

3.6. Классификация пользователей ЭВМ

Существует четыре характерные группы пользователей ЭВМ, которые по-разному используют в своей деятельности вычислительную технику и программные продукты.

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

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

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

Еще одна группа пользователей – это обслуживающий персонал и администрация вычислительных центров коллективного использования ЭВМ. Эти работники следят за состоянием вычислительной техники, проводят ее техническое обслуживание и ремонт, поэтому они также должны обладать знаниями в области эксплуатации и технического обслуживания ЭВМ.

4. ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ В ЭВМ

4.1. Кодирование информации в ЭВМ

На практике информация всегда представляется в виде каких-либо сообщений . Информационное сообщение связано с источником информации, приемником информации и каналом передачи. Сообщение от источника к приемнику передается в материально-энергетической форме (электрической, световой, звуковой и т.д.). Человек воспринимает сообщение посредством органов чувств. Технические устройства воспринимают сообщения с помощью специальной аппаратуры – датчиков. Информация может быть непрерывной, или аналоговой, либо дискретной. В некоторых случаях переход от непрерывного представления информационного сигнала к дискретному дает значительные преимущества при передаче, хранении и обработке информации. Для этих целей в информационной технике используются аналого-цифровые преобразователи; обратное преобразование информации осуществляется цифро-аналоговыми преобразователями.

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

Для ввода в ЭВМ информация должна быть перенесена на специальный носитель, с которого она воспринимается машиной. Исходным носителем информации служит бумага. На перфокарты и перфоленты символы наносятся посредством совокупности пробитых и непробитых позиций. На магнитных носителях информации – лентах, дисках, барабанах и картах – для нанесения информации используется чередование участков с различной намагниченностью. Таким образом, для представления информации на указанных носителях используется алфавит, включающий в себя всего две буквы (есть пробивка, нет пробивки; есть намагниченность, нет намагниченности).

Очевидно, что процесс преобразования информации требует представления букв одного алфавита буквами или словами другого алфавита. Такое преобразование называется кодированием. Процесс обратного преобразования информации относительно ранее выполненного кодирования называется декодированием.

В вычислительной технике получило распространение двоичное кодирование информации, при котором вводимые в ЭВМ символы представляются средствами двоичного алфавита, состоящего из двух букв – символов 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 байт.

4.2. Системы счисления

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

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

Непозиционные системы счисления появились значительно раньше позиционных систем. В них символы, обозначающие какое-то число, не меняют своего значения в зависимости от местоположения в изображении этого числа. Самая известная непозиционная система счисления – римская , в которой для записи чисел используются буквы латинского алфавита. Буква 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 21 ... a m 2m . Пример . 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 81 ... a m 8m .

Пример . 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 101 ... a m 10m .

Пример . 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 161 ... a m 16m . Пример . E7F816 = E·163 + 7·162 + F·161 + 8·160 = 5938410 .

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

4.3. Методы перевода чисел из одной системы счисления в другую

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

Правило 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

4.4. Формы представления в ЭВМ числовых данных

Система вещественных десятичных чисел, применяемая в ручных расчетах, предполагается бесконечной и непрерывной. Это означает, что при этом не накладывается никаких ограничений на диапазон используемых чисел и точность их представления (количество значащих разрядов или цифр). Реализовать такую систему чисел в технических устройствах невозможно. В ЭВМ, которые оперируют двоичными числами, размеры регистров процессора и ячеек памяти фиксированы, что накладывает ограничения на систему представимых чисел. Ограничения касаются диапазона допустимых чисел и точности их представления. Поэтому система машинных чисел оказывается конечной и дискретной, образуя подмножество системы вещественных чисел.

Для процессора любой ЭВМ существуют максимальное представимое число Zmax и минимальное представимое число Zmin , между которыми находится множество допустимых чисел (рис. 4.1). Существуют два таких множества – для положительных и отрицательных чисел. Если результат машинной операции превышает Zmax , возникает состояние переполнения , при этом дальнейшее выполнение программы не имеет смысла и обычно прекращается. Если результат операции оказывается меньше Zmin , то фиксируется состояние антипереполнения . Обычно при антипереполнении результат операции обращается в нуль. Область чисел от -Zmin до +Zmin , за исключением истинного нуля, называют машинным нулем .

Рассмотрим далее форматы представления в ЭВМ вещественных чисел с фиксированной и плавающей точкой.

4.4.1. Вещественные числа с фиксированной точкой

В системе команд процессора ЭВМ и языках программирования существуют два формата представления чисел: с фиксированной точкой (для целых чисел) и с плавающей точкой (для вещественных чисел).

Область

Представимые машинного Представимые числа нуля числа

Рис. 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). Очевидно, что диапазоны отрицательных и положительных чисел не являются симметричными. Обычная длина такого формата один, два или четыре байта.

4.4.2. Вещественные числа с плавающей точкой

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

( 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.

5. ПРИНЦИПЫ ПРОГРАММИРОВАНИЯ

5.1. Алгоритм и его свойства

Термин алгоритм своим происхождением связан с именем выдающегося восточного математика Аль-Хорезми, который еще в IX веке сформулировал правила выполнения четырех арифметических действий. Этими правилами мы пользуемся до сих пор. В современной математике под алгоритмом понимается конечная последовательность точно определенных действий, приводящих к решению поставленной задачи. Алгоритмы существуют не только в математике и информатике. Они сопровождают жизнь человека в форме различных инструкций и правил.

Устанавливаемая алгоритмом последовательность действий задается в словесной или графической форме. Для реализации алгоритма на ЭВМ используются алгоритмические языки или языки программирования.

Обычно требуется, чтобы алгоритмы обладали следующими свойствами.

1) Дискретность . Это свойство алгоритма означает пошаговый характер получения результата.

2) Конечность . Работа алгоритма должна завершаться за конечное число шагов.

3) Определенность . Все предписания алгоритма должны допускать однозначную трактовку и быть понятными исполнителю – вычислительной машине или человеку.

4) Массовость . Алгоритм должен давать решение целой группы задач, отличающихся исходными данными.

5) Результативность . Свойство означает получение результата после выполнения над исходными данными заданной алгоритмом последовательности действий.

6) Эффективность . Все шаги алгоритма должны выполняться за конечное время, которое должно находиться в разумных пределах. Например, метод полного перебора не используется для машинного анализа ходов шахматной партии.

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

Процесс подготовки и решения задач на ЭВМ остается пока достаточно сложным и трудоемким, требующим выполнения ряда этапов:

1) постановка (формализация) задачи;

2) выбор известного или разработка нового метода решения задачи;

3) разработка алгоритма решения задачи;

4) написание программы и ввод ее в память ЭВМ; 5)перевод программы в машинные команды (трансляция); 6)отладка и тестирование программы.

Рассмотрим далее содержание этих этапов.

5.2.1. Постановка задачи

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

– Что дано?

– Что нужно найти?

– Какова исходная информация?

– Какие накладываются ограничения на исходные данные?

– Какие сделаны допущения?

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

5.2.2. Выбор метода решения. Математическая модель

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

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

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

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

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

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

5.2.3. Разработка алгоритма

На этапе разработки алгоритма решения задачи устанавливается логическая последовательность действий, приводящих к конечному результату.

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

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

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

Словесный способ записи алгоритма представляет собой обычную математическую запись выражений, зависимостей, пояснений к ним и указаний последовательности выполняемых действий. Такой способ записи не требует от программиста дополнительной подготовки, однако он имеет ряд недостатков. Пояснения на естественном языке могут быть неоднозначны и противоречивы. Запись алгоритма для сложных задач громоздка и ненаглядна, она плохо формализована и не может непосредственно вводиться в ЭВМ.

Пример . Записать словесным способом алгоритм решения линейного уравнения 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 "Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения", регламентирующий запись алгоритма графическим способом. Условные обозначения основных элементов схем алгоритмов и программ, которые устанавливает данный стандарт, приведены в приложении.

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

Рассмотренные способы записи алгоритма еще не делают алгоритм понятным ЭВМ. Они являются предварительным описанием будущей машинной программы. Только алгоритмические языки описывают алгоритм так, что он может непосредственно обрабатываться ЭВМ. Написанная на языке программирования программа вводится в ЭВМ, например, с клавиатуры и сохраняется на каком-либо машинном носителе, например, магнитном диске.

5.2.4. Разработка программы

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

1) программирование на языках высокого уровня, что позволяет разработчику абстрагироваться от особенностей используемой ЭВМ и оперировать абстрактными типами данных;

2) программирование с защитой от ошибок, то есть разработка программ, включающих дополнительные проверки входных и промежуточных данных на полноту, допустимость и правдоподобность получаемых значений;

3) структурное программирование, заключающееся в разработке алгоритмов и программ по правилам системного подхода.

5.2.4.1. Критерии качества программ

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

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

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

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

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

Эффективность программы можно оценить параметром, значение которого прямо пропорционально быстродействию и обратно пропорционально объему использования ресурсов ЭВМ. Ресурсы ЭВМ состоят из пяти компонент: процессорного времени, основной памяти, внешней памяти, устройств ввода-вывода и программного обеспечения.

Совместимость программы означает ее пригодность к выполнению на конкретной ЭВМ, оснащенной конкретной операционной системой. Например, в документации на программные продукты могут оговариваться тип используемого компьютера (например, PC/AT), тип процессора (80286, 80386), тип операционной системы (MS-DOS, Windows, OS/2, UNIX), версия операционной системы (MS-DOS 3.0, Windows 95), особые характеристики компьютера (минимальные тактовая частота процессора, объемы оперативной памяти и видеопамяти, разрешающая способность монитора), наличие дополнительных периферийных устройств ("мыши", джойстика, печатающего устройства, звукового адаптера и других).

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

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

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

5.2.4.2. Преимущества языков программирования

высокого уровня

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

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

1) упрощается документирование программ;

2) в таких программах быстрее выявляются ошибки;

3) такая программа более удобна для сопровождения другим программистом.

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

Среди языков программирования высокого уровня существуют универсальные и специальные языки. Специальные языки создаются, как правило, на основе универсальных языков и обладают всеми преимуществами языков высокого уровня. Специальные языки предназначены снизить затраты на программирование специальных алгоритмов и программ. Так, например, для программирования имитационных моделей предназначен языки GPSS и Simula , систем управления базами данных (СУБД) – язык Clipper , систем искусственного интеллекта – языки Lisp и Prolog , систем управления – языки Modula и ADA .

5.2.4.3. Программирование с защитой от ошибок

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

• проверки допустимости значений переменных (числовых, логических, символьных);

• проверки допустимости типов данных в выражениях программы;

• проверки допустимости значений индексов массивов;

• проверки выполнения операций ввода-вывода. При этом ошибки ввода-вывода можно разделить на два вида: связанные с устройством вводавывода и связанные с передачей данных.

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

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

5.2.4.4. Принципы структурного проектирования алгоритмов и программ

Структурное проектирование является воплощением системного подхода в процесс создания и эксплуатации программного обеспечения ЭВМ.

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

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

Существуют две принципиальные разновидности циклических структур. Циклическая структура "пока" (цикл с предусловием ) обеспечивает повторение действия пока логическое условие имеет значение "истина". Как только значение условия становится "ложь", выполнение действия прекращается и управление передается следующей алгоритмической структуре.

Циклическая структура "до" (цикл с постусловием ) обеспечивает выполнение действия один раз даже при начальном значении условия "ложь". Количество повторений действия в циклах "пока" и "до" заранее неизвестно, однако возможен вариант цикла, в котором количество повторений задается счетчиком.

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

5.2.4.5. Принципы модульного программирования

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

а) б)

в) г)

Рис. 5.1. Базовые алгоритмические структуры: а – следование; б) – разветвление;

в – цикл с предусловием; г – цикл с постусловием.

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

• повышается надежность программы, так как относительно малый размер модуля (порядка 100 операторов языка программирования) позволяет провести более полное тестирование программы;

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

• модульное построение программы позволяет выполнять ее на ЭВМ с небольшим объемом оперативной памяти (при этом используется оверлейная структура программы).

Модульная программа может иметь одну из следующих основных структур: монолитно-модульную, модульно-последовательную, модульноиерархическую (рис. 5.2).

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

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

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

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

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

Основные недостатки восходящего проектирования: сложность объединения отдельных модулей; трудность исправления ошибок, допущенных на ранних стадиях проектирования.

Нисходящее (сверху вниз, аналитическое) проектирование начинается с постановки задачи и развивается далее путем разбиения ее на подзадачи. При этом считается, что если каждая подзадача решена правильно, а полученные

Рис. 5.2. Основные виды модульных структур программ: а – монолитно-модульная;

б – модульно-последовательная; в – модульно-иерархическая.

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

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

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

5.2.4.6. Программирование в стандартизованном стиле

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

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

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

- заголовочных комментариев;

- объявлений данных;

- внутренних процедур и функций; -основного текста.

Комментарии по своему назначению можно разделить на три основных вида: вводные, оглавления, пояснительные.

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

- идентификатор (имя) модуля;

- функциональное назначение модуля;

- используемый математический метод;

- описание входных и выходных данных;

- перечень вызываемых подпрограмм (модулей);

- описание внешних эффектов;

- принятые ограничения и допущения;

- сведения о разработчике;

- дата разработки;

- описание внесенных изменений.

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

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

Комментарии не должны затруднять чтение текста программы. Их следует выделять пробелами и специальными символами, а также располагать со сдвигом вправо по отношению к операторам программы.

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

• сокращению подлежит не более трех первых слов из описания назначения объекта;

• в аббревиатуру всегда включаются начальные буквы слов;

• аббревиатура должна содержать от 6 до 15 букв; согласные буквы всегда важнее гласных; начало слова всегда важнее его конца.

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

Правила обеспечения наглядности логической структуры программ состоят в следующем:

• использовать дополнительные пробелы для выделения составных частей операторов;

• не располагать на одной строке текста программы более одного оператора;

• использовать дополнительные скобки для пояснения структуры выражений;

• использовать отступы для выделения структуры составных и вложенных операторов.

Соблюдение перечисленных правил облегчает чтение текста программы, поиск и исправление ошибок, модификацию программы.

5.2.5. Отладка и тестирование программ

Разработка программ для ЭВМ – это трудоемкий и сложный процесс, редко проходящий без ошибок. Основная цель этапа отладки – это выявление и устранение ошибок в программе. По существующим оценкам на отладку программист затрачивает от 20 до 40% времени, отводимого на разработку программы. Для больших программных комплексов со сложным алгоритмом работы продолжительность отладки может быть еще больше. Причинами ошибок, возникающих в процессе программирования, могут быть:

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

• неправильная разработка алгоритма;

• неправильное программирование алгоритма; нарушение правил записи операторов программы; неудачный выбор исходных данных и многие другие.

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

Рис. 5.3. Схема процесса разработки и отладки программы

Возникающие в программе ошибки можно подразделить на два вида: синтаксические , появление которых вызвано нарушением правил записи операторов языка программирования, и семантические (смысловые), вызывающие ошибки при выполнении.

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

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

• программа работает, но выдает неверные результаты либо не все предусмотренные результаты;

• программа повторяет одну и ту же последовательность действий ("зацикливается");

• выполнение программы внезапно прекращается (переполнение

разрядной сетки, деление на ноль, защита памяти и другие); программа не выдает никакого результата.

Семантические ошибки устраняются посредством выполнения программы с использованием специально подобранных исходных данных, для которых известен правильный ответ. Отладка программы на этапе выполнения может потребовать вывода промежуточных результатов вычислений; для этого в программу временно вводятся дополнительные операторы вывода. Такие дополнительные операторы называются отладочными . Другой способ отладки выполняющейся программы называется трассировкой и заключается в выводе информации о последовательности выполнения операторов программы и подпрограмм. Трассировка позволяет проверить правильность выполнения разветвлений алгоритма.

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

После того как программа становится работоспособной, проводится ее тестирование . Тестирование программы – это проверка правильности ее работы во всем диапазоне допустимых исходных данных. Из-за большого числа возможных сочетаний исходных данных провести полное тестирование сложной программы часто невозможно. Поэтому в длительно эксплуатируемой программе время от времени обнаруживаются какие-либо ошибки, и для коммерчески распространяемых программ необходима организация их сопровождения во время эксплуатации. В процессе сопровождения программы, во-первых, устраняются ранее не выявленные ошибки; и, во-вторых, в программу вносятся изменения, повышающие ее качество.

6. ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL

6.1. Основные приемы работы с системой программирования

Turbo Pascal

6.1.1. Состав системы программирования Turbo Pascal

Система 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

6.1.2. Управление окнами

Управлять оболочкой системы программирования 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 соответственно.

6.1.3. Набор и редактирование текста программы

Ввод нового текста в окне редактора можно начать после выбора пункта меню 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