Министерство образования и науки Российской Федерации Федеральное агентство по образованию Государственное образовательн...
3 downloads
187 Views
1MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Министерство образования и науки Российской Федерации Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования ПЕНЗЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
А.А. Черный ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА В ИНЖЕНЕРНЫХ РАСЧЕТАХ И МОДЕЛИРОВАНИИ Учебное пособие
Пенза 2010
УДК 681.3.06(075.3) Черный А.А. Вычислительная техника в инженерных расчетах и моделировании: Учебн. пособие. – Пенза: Изд-во Пенз. гос. ун-та, 2010. 268с. Изложены основы информатики, компьютерной техники, программирования. Описаны языки программирования. Рассмотрены возможности применения вычислительной техники в инженерных расчетах, при математическом моделировании. Приведены компьютерные программы математического моделирования. Даны задания для самостоятельной работы на ЭВМ, изложены контрольные вопросы. Учебное пособие подготовлено на кафедре «Сварочное, литейное производство и материаловедение» и в Научно-исследовательском институте плавки литейных сплавов при ПГУ. Оно предназначено для студентов всех форм обучения по специальности «Машины и технология литейного производства», и может быть полезно при выполнении исследований на основе математического моделирования с применением вычислительной техники.
Рецензенты: Научный совет Пензенского научного центра; А.С. Белоусов, главный металлург ОАО «Пензадизельмаш»
© А.А. Черный, 2010
2
ВВЕДЕНИЕ Литейное производство, одна из отраслей промышленности, продукцией которой являются отливки, получаемые в литейных формах при заполнении их жидким сплавом. Литые детали используют в металлообрабатывающих станках, двигателях внутреннего сгорания, компрессорах, насосах, электродвигателях, паровых и гидравлических турбинах, прокатных станах, сельскохозяйственных машинах, автомобилях, тракторах. Литьем могут быть изготовлены изделия практически любой массы – от нескольких граммов до сотен тонн, со стенками толщиной от десятых долей миллиметров до нескольких метров. Литейное производство – сложный технологический процесс, включающий в себя много машин, оборудования, приспособления и методов получения отливок. Для того, чтобы получить качественную отливку, необходимо произвести ряд математических расчетов. И в этом может помочь ЭВМ. Используя электронные вычислительные машины для выполнения расчетов и математического моделирования можно производить качественное литье. Смоделировав на ЭВМ технологический процесс изготовления отливки, можно определить, при каком условии получается наилучший результат. Применение математического моделирования позволяет эксперименты производить в виртуальном, электронном виде. В учебном пособии приведены компьютерные программы эффективного математического моделирования, изложены контрольные вопросы с учетом предварительного изучения основ математического моделирования. Приведенные компьютерные программы позволяют выполнять аппроксимацию, выявлять с помощью ЭВМ математические модели, проверять точность расчетов по моделям (по разности и в процентах), получать системное представление результатов расчетов по математическим моделям, выполнять расчеты по математическим моделям и проверять точность математического моделирования, выполнять расчеты с применением циклов в натуральных и относительных величинах, делать графические построения в выбранном масштабе. Компьютерные программы согласованы с планами проведения экспериментов и эффективными алгоритмами.
3
СОСТАВЛЯЮЩИЕ ЧАСТИ КОМПЬЮТЕРА И ПЕРИФЕРИЙНЫЕ УСТРОЙСТВА Компьютер (англ. computer — вычислитель) представляет собой программируемое электронное устройство, способное обрабатывать данные и производить вычисления, а также выполнять другие задачи манипулирования символами Рассмотрим устройство компьютера на примере самой распространенной компьютерной системы — персонального компьютера. Персональным компьютером (ПК) называют сравнительно недорогой универсальный микрокомпьютер, рассчитанный на одного пользователя. Персональные компьютеры обычно проектируются на основе принципа открытой архитектуры. Упрощённая блок-схема, отражающая основные функциональные компоненты компьютерной системы в их взаимосвязи, изображена на рисунке 1.
Рис. 1. Общая структура персонального компьютера с подсоединенными периферийными устройствами
4
Современный персональный компьютер состоит из нескольких основных конструктивных компонент: системного блока; монитора; клавиатуры; манипуляторов; периферийных устройств. В системном блоке размещаются: блок питания; накопитель на жёстких магнитных дисках; накопитель на гибких магнитных дисках; системная плата; платы расширения; накопитель CD-ROM; и др. Типичный системный блок: системная плата; разъем дополнительного второго процессора; центральный процессор с радиатором для отвода тепла; разъемы оперативной памяти; накопитель на гибких магнитных дисках; накопитель CD-ROM; сетевая карта; графический акселератор; блок питания, преобразующий переменное напряжение электросети в постоянное напряжение различной полярности и величины, необходимое для питания системной платы и внутренних устройств. Блок питания содержит вентилятор, создающий циркулирующие потоки воздуха для охлаждения системного блока. Для того, чтобы соединить друг с другом различные устройства компьютера, они должны иметь одинаковый интерфейс (англ. interface от inter — между, и face — лицо). Интерфейс — это средство сопряжения двух устройств, в котором все физические и логические параметры согласуются между собой. Если интерфейс является общепринятым, например, утверждённым на уровне международных соглашений, то он называется стандартным. Каждый из функциональных элементов (память, монитор или другое устройство) связан с шиной определённого типа — адресной, управляющей или шиной данных. Для согласования интерфейсов периферийные устройства подключаются к шине не напрямую, а через свои контроллеры (адаптеры) и порты примерно по такой схеме:
Контроллеры и адаптеры представляют собой наборы электронных цепей, которыми снабжаются устройства компьютера с целью совместимости их интерфейсов. Контроллеры, кроме этого, осуществляют непосредственное управление периферийными устройствами по запросам микропроцессора. Порты устройств представляют собой некие электронные схемы, содержащие один или несколько регистров ввода-вывода и позволяющие подключать периферийные устройства компьютера к внешним шинам микропроцессора.
5
Портами также называют устройства стандартного интерфейса: последовательный, параллельный и игровой порты (или интерфейсы). Последовательный порт обменивается данными с процессором побайтно, а с внешними устройствами — побитно. Параллельный порт получает и посылает данные побайтно. К последовательному порту обычно подсоединяют медленно действующие или достаточно удалённые устройства, такие, как мышь и модем. К параллельному порту подсоединяют более "быстрые" устройства — принтер и сканер. Через игровой порт подсоединяется джойстик. Клавиатура и монитор подключаются к своим специализированным портам, которые представляют собой просто разъёмы. Состав персонального компьютера. Центральный процессор (CPU, от английского Central Processing Unit) — это основной рабочий компонент компьютера, который выполняет арифметические и логические операции, заданные программой, управляет вычислительным процессом и координирует работу всех устройств компьютера. Центральный процессор в общем случае содержит в себе: арифметико-логическое устройство; шины данных и шины адресов; регистры; счетчики команд; кэш — очень быструю память малого объема (от 8 до 512 Кбайт); математический сопроцессор чисел с плавающей точкой.
Рис. 2. Общая схема компьютера Современные процессоры выполняются в виде микропроцессоров. Физически микропроцессор представляет собой интегральную схему — тонкую пластинку кристаллического кремния прямоугольной формы площадью всего несколько квадратных миллиметров, на которой размещены схемы, реализующие все функции процессора. Кристаллпластинка обычно помещается в пластмассовый или керамический
6
плоский корпус и соединяется золотыми проводками с металлическими штырьками, чтобы его можно было присоединить к системной плате компьютера. В вычислительной системе может быть несколько параллельно работающих процессоров; такие системы называются многопроцессорными. Память компьютера построена из двоичных запоминающих элементов — битов, объединенных в группы по 8 битов, которые называются байтами. (Единицы измерения памяти совпадают с единицами измерения информации). Все байты пронумерованы. Номер байта называется его адресом. Байты могут объединяться в ячейки, которые называются также словами. Для каждого компьютера характерна определенная длина слова — два, четыре или восемь байтов. Это не исключает использования ячеек памяти другой длины (например, полуслово, двойное слово). Как правило, в одном машинном слове может быть представлено либо одно целое число, либо одна команда. Однако, допускаются переменные форматы представления информации. Современные компьютеры имеют много разнообразных запоминающих устройств, которые сильно отличаются между собой по назначению, временным характеристикам, объёму хранимой информации и стоимости хранения одинакового объёма информации. Различают два основных вида памяти — внутреннюю и внешнюю. В состав внутренней памяти входят оперативная память, кэшпамять и специальная память. Оперативная память (ОЗУ, англ. RAM, Random Access Memory — память с произвольным доступом) — это быстрое запоминающее устройство не очень большого объёма, непосредственно связанное с процессором и предназначенное для записи, считывания и хранения выполняемых программ и данных, обрабатываемых этими программами. Оперативная память используется только для временного хранения данных и программ, так как, когда машина выключается, все, что находилось в ОЗУ, пропадает. Доступ к элементам оперативной памяти прямой — это означает, что каждый байт памяти имеет свой индивидуальный адрес. Объем ОЗУ обычно составляет 4 - 64 Мбайта, а для эффективной работы современного программного обеспечения желательно иметь не менее 16 Мбайт ОЗУ. Обычно ОЗУ исполняется из интегральных микросхем памяти DRAM (Dynamic RAM — динамическое ОЗУ).
7
Микросхемы DRAM работают медленнее, чем другие разновидности памяти, но стоят дешевле. Современные микросхемы имеют ёмкость 1-16 Мбит и более. Они устанавливаются в корпуса и собираются в модули памяти. Наиболее распространены модули типа SIMM (Single In-Line Memory Module — модуль памяти с однорядным расположением микросхем). В модуле SIMM элементы памяти собраны на маленькой печатной плате длиной около 10 см. Ёмкость таких модулей неодинаковая — 256 Кбайт, 1, 2, 4, 8, 16, 32 и 64 Мбайта. Различные модули SIMM могут иметь разное число микросхем — девять, три или одну, и разное число контактов — 30 или 72. Важная характеристика модулей памяти — время доступа к данным, которое обычно составляет 60 – 80 наносекунд. Кэш (англ. cache), или сверхоперативная память — очень быстрое ЗУ небольшого объёма, которое используется при обмене данными между микропроцессором и оперативной памятью для компенсации разницы в скорости обработки информации процессором и несколько менее быстродействующей оперативной памятью. Кэш-памятью управляет специальное устройство — контроллер, который, анализируя выполняемую программу, пытается предвидеть, какие данные и команды вероятнее всего понадобятся в ближайшее время процессору, и подкачивает их в кэш-память. При этом возможны как "попадания", так и "промахи". В случае попадания, то есть, если в кэш подкачаны нужные данные, извлечение их из памяти происходит без задержки. Если же требуемая информация в кэше отсутствует, то процессор считывает её непосредственно из оперативной памяти. Соотношение числа попаданий и промахов определяет эффективность кэширования. Кэш-память реализуется на микросхемах статической памяти SRAM (Static RAM), более быстродействующих, дорогих и малоёмких, чем DRAM. Современные микропроцессоры имеют встроенную кэш-память, так называемый кэш первого уровня размером 8–16 Кбайт. Кроме того, на системной плате компьютера может быть установлен кэш второго уровня ёмкостью от 64 Кбайт до 256 Кбайт и выше. К устройствам специальной памяти относятся постоянная память (ROM), перепрограммируемая постоянная память (Flash Memory), память CMOS RAM, питаемая от батарейки, видеопамять и некоторые другие виды памяти. Постоянная память (ПЗУ, англ. ROM, Read Only Memory — память только для чтения) — энергонезависимая память, используется для
8
хранения данных, которые никогда не потребуют изменения. Содержание памяти специальным образом “зашивается” в устройстве при его изготовлении для постоянного хранения. Из ПЗУ можно только читать. Перепрограммируемая постоянная память (Flash Memory) — энергонезависимая память, допускающая многократную перезапись своего содержимого с дискеты. Прежде всего в постоянную память записывают программу управления работой самого процессора. В ПЗУ находятся программы управления дисплеем, клавиатурой, принтером, внешней памятью, программы запуска и остановки компьютера, тестирования устройств. Важнейшая микросхема постоянной или Flash-памяти — модуль BIOS. BIOS (Basic Input/Output System — базовая система ввода-вывода) — совокупность программ, предназначенных для: автоматического тестирования устройств после включения питания компьютера; загрузки операционной системы в оперативную память. Роль BIOS двоякая: с одной стороны это неотъемлемый элемент аппаратуры (Hardware), а с другой строны — важный модуль любой операционной системы (Software). Разновидность постоянного ЗУ — CMOS RAM. CMOS RAM — это память с невысоким быстродействием и минимальным энергопотреблением от батарейки. Используется для хранения информации о конфигурации и составе оборудования компьютера, а также о режимах его работы. Содержимое CMOS изменяется специальной программой Setup, находящейся в BIOS (англ. Set-up — устанавливать, читается "сетап"). Для хранения графической информации используется видеопамять. Видеопамять (VRAM) — разновидность оперативного ЗУ, в котором хранятся закодированные изображения. Это ЗУ организовано так, что его содержимое доступно сразу двум устройствам — процессору и дисплею. Поэтому изображение на экране меняется одновременно с обновлением видеоданных в памяти. Внешняя память (ВЗУ) предназначена для длительного хранения программ и данных, и целостность её содержимого не зависит от того, включен или выключен компьютер. В отличие от оперативной памяти, внешняя память не имеет прямой связи с процессором. Информация от ВЗУ к процессору и наоборот циркулирует примерно по следующей цепочке:
9
В состав внешней памяти компьютера входят: накопители на жёстких магнитных дисках; накопители на гибких магнитных дисках; накопители на компакт-дисках; накопители на магнито-оптических компакт-дисках; накопители на магнитной ленте (стримеры) и др. Гибкий диск, дискета (англ. floppy disk) — устройство для хранения небольших объёмов информации, представляющее собой гибкий пластиковый диск в защитной оболочке. Используется для переноса данных с одного компьютера на другой и для распространения программного обеспечения. Если гибкие диски — это средство переноса данных между компьютерами, то жесткий диск — информационный склад компьютера. Накопитель на жёстких магнитных дисках (англ. HDD — Hard Disk Drive) или винчестерский накопитель — это наиболее массовое запоминающее устройство большой ёмкости, в котором носителями информации являются круглые алюминиевые пластины — платтеры, обе поверхности которых покрыты слоем магнитного материала. Используется для постоянного хранения информации — программ и данных. Винчестерские накопители имеют очень большую ёмкость: от сотен Мегабайт до десятков Гбайт. У современных моделей скорость вращения шпинделя достигает 7200 оборотов в минуту, среднее время поиска данных — 10 мс, максимальная скорость передачи данных до 40 Мбайт/с. В отличие от дискеты, винчестерский диск вращается непрерывно. Винчестерский накопитель связан с процессором через контроллер жесткого диска. Все современные накопители снабжаются встроенным кэшем (64 Кбайт и более), который существенно повышает их производительность. CD-ROM состоит из прозрачной полимерной основы диаметром 12 см и толщиной 1,2 мм. Одна сторона покрыта тонким алюминиевым слоем, защищенным от повреждений слоем лака. Двоичная информация представляется последовательным чередованием углублений (pits — ямки) и основного слоя (land — земля). На одном дюйме (2,54 см) по радиусу диска размещается 16 тысяч дорожек с информацией. Для сравнения — на дюйме по радиусу дискеты всего лишь 96 дорожек. Ёмкость CD до 780 Мбайт. Информация заносится на диск на заводе и не может быть изменена. Достоинства CD-ROM - При малых физических размерах CD-ROM обладают высокой информационной ёмкостью, что позволяет использовать их в справочных системах и в учебных комплексах с богатым иллюстративным материалом;
10
один CD, имея размеры примерно дискеты, по информационному объёму равен почти 500 таким дискетам. - Считывание информации с CD происходит с высокой скоростью, сравнимой со скоростью работы винчестера. - CD просты и удобны в работе, практически не изнашиваются. - CD не могут быть поражены вирусами. - На CD-ROM невозможно случайно стереть информацию. - Стоимость хранения данных (в расчете на 1 Мбайт) низкая. В отличие от магнитных дисков, компакт-диски имеют не множество кольцевых дорожек, а одну — спиральную, как у грампластинок. В связи с этим, угловая скорость вращения диска не постоянна. Она линейно уменьшается в процессе продвижения читающей магнитной головки к центру диска. Для работы с CD ROM нужно подключить к компьютеру накопитель CD-ROM (CD-ROM Drive), в котором компакт-диски сменяются как в обычном проигрывателе. Накопители CD-ROM часто называют проигрывателями CD-ROM или приводами CD-ROM. Главный недостаток накопителей CD-ROM по сравнению с винчестерскими накопителями — невозможность перезаписи информации. Записывающие оптические и магнитооптические накопители. - Накопитель на магнито-оптических компакт-дисках СD-MO (Compact Disk-Magneto Optical). Диски СD-MO можно многократно использовать для записи, но они не читаются на традиционных дисководах CD-ROM. Ёмкость от 128 Мбайт до 2,6 Гбайт. - Записывающий накопитель CD-R (Compact Disk Recordable) способен, наряду с прочтением обычных компакт-дисков, записывать информацию на специальные оптические диски. Ёмкость 650 Мбайт. - Накопитель WARM (Write And Read Many times), позволяет производить многократную запись и считывание. - Накопитель WORM (Write Once, Read Many times), позволяет производить однократную запись и многократное считывание. Накопители на магнитной ленте (стримеры) и накопители на сменных дисках. Стример (англ. tape streamer) — устройство для резервного копирования больших объёмов информации. В качестве носителя здесь применяются кассеты с магнитной лентой ёмкостью 1 - 2 Гбайта и больше. Стримеры позволяют записать на небольшую кассету с магнитной лентой огромное количество информации. Встроенные в стример средства аппаратного сжатия позволяют автоматически уплотнять информацию
11
перед её записью и восстанавливать после считывания, что увеличивает объём сохраняемой информации. Недостатком стримеров является их сравнительно низкая скорость записи, поиска и считывания информации. В последнее время всё шире используются накопители на сменных дисках, которые позволяют не только увеличивать объём хранимой информации, но и переносить информацию между компьютерами. Объём сменных дисков — от сотен Мбайт до нескольких Гигабайт. Аудиоадаптер (Sound Blaster или звуковая плата) это специальная электронная плата, которая позволяет записывать звук, воспроизводить его и создавать программными средствами с помощью микрофона, наушников, динамиков, встроенного синтезатора и другого оборудования. Аудиоадаптер содержит в себе два преобразователя информации: - аналого-цифровой, который преобразует непрерывные (то есть, аналоговые) звуковые сигналы (речь, музыку, шум) в цифровой двоичный код и записывает его на магнитный носитель; - цифро-аналоговый, выполняющий обратное преобразование сохранённого в цифровом виде звука в аналоговый сигнал, который затем воспроизводится с помощью акустической системы, синтезатора звука или наушников. Профессиональные звуковые платы позволяют выполнять сложную обработку звука, обеспечивают стереозвучание, имеют собственное ПЗУ с хранящимися в нём сотнями тембров звучаний различных музыкальных инструментов. Область применения звуковых плат — компьютерные игры, обучающие программные системы, рекламные презентации, "голосовая почта" (voice mail) между компьютерами, озвучивание различных процессов, происходящих в компьютерном оборудовании, таких, например, как отсутствие бумаги в принтере и т.д. Видеоадаптер — это электронная плата, которая обрабатывает видеоданные (текст и графику) и управляет работой дисплея. Содержит видеопамять, регистры ввода вывода и модуль BIOS. Посылает в дисплей сигналы управления яркостью лучей и сигналы развертки изображения. Наиболее распространенный видеоадаптер на сегодняшний день — адаптер SVGA (Super Video Graphics Array — супервидеографический массив), который может отображать на экране дисплея 1280х1024 пикселей при 256 цветах и 1024х768 пикселей при 16 миллионах цветов.
12
С увеличением числа приложений, использующих сложную графику и видео, наряду с традиционными видеоадаптерами широко используются разнообразные устройства компьютерной обработки видеосигналов: - Графические акселераторы (ускорители) — специализированные графические сопроцессоры, увеличивающие эффективность видеосистемы. Их применение освобождает центральный процессор от большого объёма операций с видеоданными, так как акселераторы самостоятельно вычисляют, какие пиксели отображать на экране и каковы их цвета. - Фрейм-грабберы, которые позволяют отображать на экране компьютера видеосигнал от видеомагнитофона, камеры, лазерного проигрывателя и т. д., с тем, чтобы захватить нужный кадр в память и впоследствии сохранить его в виде файла. - TV-тюнеры — видеоплаты, превращающие компьютер в телевизор. TV-тюнер позволяет выбрать любую нужную телевизионную программу и отображать ее на экране в масштабируемом окне. Таким образом можно следить за ходом передачи, не прекращая работу. Клавиатура служит для ввода информации в компьютер и подачи управляющих сигналов. Она содержит стандартный набор алфавитноцифровых клавиш и некоторые дополнительные клавиши — управляющие и функциональные, клавиши управления курсором, а также малую цифровую клавиатуру. Наиболее распространена 101-клавишная клавиатура c раскладкой клавиш QWERTY (читается “кверти”), названная так по клавишам, расположенным в верхнем левом ряду алфавитно-цифровой части клавиатуры: Такая клавиатура имеет 12 функциональных клавиш, расположенных вдоль верхнего края. Нажатие функциональной клавиши приводит к посылке в компьютер не одного символа, а целой совокупности символов. Функциональные клавиши могут программироваться пользователем. Например, во многих программах для получения помощи (подсказки) задействована клавиша F1, а для выхода из программы — клавиша F10. Назначение управляющих клавиш: - Enter — клавиша ввода; - Esc (Escape — выход) клавиша для отмены каких-либо действий, выхода из программы, из меню и т.п.; - Ctrl и Alt — эти клавиши самостоятельного значения не имеют, но при нажатии совместно с другими управляющими клавишами изменяют их действие; - Shift (регистр) — обеспечивает смену регистра клавиш (верхнего на нижний и наоборот);
13
- Insert (вставлять) — переключает режимы вставки (новые cимволы вводятся посреди уже набранных, раздвигая их) и замены (старые символы замещаются новыми); - Delete (удалять) — удаляет символ с позиции курсора; — удаляет символ перед курсором; - Back Space или - Home и End — обеспечивают перемещение курсора в первую и последнюю позицию строки, соответственно; - Page Up и Page Down — обеспечивают перемещение по тексту на одну страницу (один экран) назад и вперед, соответственно; - Tab — клавиша табуляции, обеспечивает перемещение курсора вправо сразу на несколько позиций до очередной позиции табуляции; - Caps Lock — фиксирует верхний регистр, обеспечивает ввод прописных букв вместо строчных; - Print Screen — обеспечивает печать информации, видимой в текущий момент на экране. - Длинная нижняя клавиша без названия — предназначена для ввода пробелов. - Клавиши , , и служат для перемещения курсора вверх, вниз, влево и вправо на одну позицию или строку. Малая цифровая клавиатура используется в двух режимах — ввода чисел и управления курсором. Переключение этих режимов осуществляется клавишей Num Lock. Клавиатура содержит встроенный микроконтроллер (местное устройство управления), который выполняет следующие функции: - последовательно опрашивает клавиши, считывая введенный сигнал и вырабатывая двоичный скан-код клавиши; - управляет световыми индикаторами клавиатуры; - проводит внутреннюю диагностику неисправностей; - осуществляет взаимодействие с центральным процессором через порт ввода-вывода клавиатуры. Клавиатура имеет встроенный буфер — промежуточную память малого размера, куда помещаются введённые символы. В случае переполнения буфера нажатие клавиши будет сопровождаться звуковым сигналом — это означает, что символ не введён (отвергнут). Работу клавиатуры поддерживают специальные программы, "зашитые" в BIOS, а также драйвер клавиатуры, который обеспечивает возможность ввода русских букв, управление скоростью работы клавиатуры и др.
14
Видеосистема компьютера состоит из трех компонентов: монитор (называемый также дисплеем); видеоадаптер; программное обеспечение (драйверы видеосистемы). Видеоадаптер посылает в монитор сигналы управления яркостью лучей и синхросигналы строчной и кадровой развёрток. Монитор преобразует эти сигналы в зрительные образы. А программные средства обрабатывают видеоизображения — выполняют кодирование и декодирование сигналов, координатные преобразования, сжатие изображений и др. Монитор — устройство визуального отображения информации (в виде текста, таблиц, рисунков, чертежей и др.). Подавляющее большинство мониторов сконструированы на базе электронно-лучевой трубки (ЭЛТ), и принцип их работы аналогичен принципу работы телевизора. Мониторы бывают алфавитно-цифровые и графические, монохромные и цветного изображения. Современные компьютеры комплектуются, как правило, цветными графическими мониторами. Основной элемент дисплея — электронно-лучевая трубка. Её передняя, обращенная к зрителю часть с внутренней стороны покрыта люминофором — специальным веществом, способным излучать свет при попадании на него быстрых электронов. Наряду с традиционными ЭЛТ-мониторами все шире используются плоские жидкокристаллические (ЖК) мониторы. Жидкие кристаллы — это особое состояние некоторых органических веществ, в котором они обладают текучестью и свойством образовывать пространственные структуры, подобные кристаллическим. Жидкие кристаллы могут изменять свою структуру и светооптические свойства под действием электрического напряжения. Меняя с помощью электрического поля ориентацию групп кристаллов и используя введённые в жидкокристаллический раствор вещества, способные излучать свет под воздействием электрического поля, можно создать высококачественные изображения, передающие более 15 миллионов цветовых оттенков. Большинство ЖК-мониторов использует тонкую плёнку из жидких кристаллов, помещённую между двумя стеклянными пластинами. Заряды передаются через так называемую пассивную матрицу — сетку невидимых нитей, горизонтальных и вертикальных, создавая в месте пересечения нитей точку изображения (несколько размытого из-за того, что заряды проникают в соседние области жидкости). Активные матрицы вместо нитей используют прозрачный экран из транзисторов и обеспечивают яркое, практически не имеющее искажений изображение. Панель при этом разделена на 308160 (642х480)
15
независимых ячеек, каждая из которых состоит из четырех частей (для трёх основных цветов и одна резервная). Таким образом, экран имеет почти 1,25 млн точек, каждая из которых управляется собственным транзистором. По компактности такие мониторы не знают себе равных. Они занимают в 2 – 3 раза меньше места, чем мониторы с ЭЛТ и во столько же раз легче; потребляют гораздо меньше электроэнергии и не излучают электромагнитных волн, воздействующих на здоровье людей. Разновидность монитора — сенсорный экран. Здесь общение с компьютером осуществляется путём прикосновения пальцем к определённому месту чувствительного экрана. Этим выбирается необходимый режим из меню, показанного на экране монитора. Сенсорными экранами оборудуют рабочие места операторов и диспетчеров, их используют в информационно-справочных системах и т.д. Манипуляторы (мышь, джойстик и др.) — это специальные устройства, которые используются для управления курсором. Мышь имеет вид небольшой коробки, полностью умещающейся на ладони. Мышь связана с компьютером кабелем через специальный блок — адаптер, и её движения преобразуются в соответствующие перемещения курсора по экрану дисплея. В верхней части устройства расположены управляющие кнопки (обычно их три), позволяющие задавать начало и конец движения, осуществлять выбор меню и т.д. Джойстик — обычно это стержень-ручка, отклонение которой от вертикального положения приводит к передвижению курсора в соответствующем направлении по экрану монитора. Часто применяется в компьютерных играх. В некоторых моделях в джойстик монтируется датчик давления. В этом случае, чем сильнее пользователь нажимает на ручку, тем быстрее движется курсор по экрану дисплея. Трекбол — небольшая коробка с шариком, встроенным в верхнюю часть корпуса. Пользователь рукой вращает шарик и перемещает, соответственно, курсор. В отличие от мыши, трекбол не требует свободного пространства около компьютера, его можно встроить в корпус машины. Дигитайзер — устройство для преобразования готовых изображений (чертежей, карт) в цифровую форму. Представляет собой плоскую панель — планшет, располагаемую на столе, и специальный инструмент — перо, с помощью которого указывается позиция на планшете. При перемещении пера по планшету фиксируются его координаты в близко расположенных точках, которые затем преобразуются в компьютере в требуемые единицы измерения.
16
Периферийные устройства Принтер — печатающее устройство. Осуществляет вывод из компьютера закодированной информации в виде печатных копий текста или графики. Существуют тысячи наименований принтеров. Но основных видов принтеров три: матричные, лазерные и струйные.
Рис. 3. Матричный символ Матричные принтеры используют комбинации маленьких штырьков, которые бьют по красящей ленте, благодаря чему на бумаге остаётся отпечаток символа. Каждый символ, печатаемый на принтере, формируется из набора 9, 18 или 24 игл, сформированных в виде вертикальной колонки. Недостатками этих недорогих принтеров являются их шумная работа и невысокое качество печати, приемлемое, в основном, для домашних целей. Лазерные принтеры работают примерно так же, как ксероксы. Компьютер формирует в своей памяти "образ" страницы текста и передает его принтеру. Информация о странице проецируется с помощью лазерного луча на вращающийся барабан со светочувствительным покрытием, меняющим электрические свойства в зависимости от освещённости. После засветки на барабан, находящийся под электрическим напряжением, наносится красящий порошок — тонер, частицы которого налипают на засвеченные участки поверхности барабана. Принтер с помощью специального горячего валика протягивает бумагу под барабаном; тонер переносится на бумагу и "вплавляется" в неё, оставляя стойкое высококачественное изображение. Цветные лазерные принтеры пока очень дороги. Струйные принтеры генерируют символы в виде последовательности чернильных точек. Печатающая головка принтера имеет крошечные сопла, через которые на страницу выбрызгиваются быстросохнущие чернила. Эти принтеры требовательны к качеству бумаги.
17
Цветные струйные принтеры создают цвета, комбинируя чернила четырех основных цветов — ярко-голубого, пурпурного, желтого и черного. Принтер связан с компьютером посредством кабеля принтера, один конец которого вставляется своим разъёмом в гнездо принтера, а другой — в порт принтера компьютера. Порт — это разъём, через который можно соединить процессор компьютера с внешним устройством. Каждый принтер обязательно имеет свой драйвер — программу, которая способна переводить (транслировать) стандартные команды печати компьютера в специальные команды, требующиеся для каждого принтера. Плоттер (графопостроитель) — устройство, которое чертит графики, рисунки или диаграммы под управлением компьютера. Плоттеры используются для получения сложных конструкторских чертежей, архитектурных планов, географических и метеорологических карт, деловых схем. Плоттеры рисуют изображения с помощью пера. Роликовые плоттеры прокручивают бумагу под пером, а планшетные плоттеры перемещают перо через всю поверхность горизонтально лежащей бумаги. Сканер — устройство для ввода в компьютер графических изображений. Создает оцифрованное изображение документа и помещает его в память компьютера. Если принтеры выводят информацию из компьютера, то сканеры, наоборот, переносят информацию с бумажных документов в память компьютера. Существуют ручные сканеры, которые прокатывают по поверхности документа рукой, и планшетные сканеры, по внешнему виду напоминающие копировальные машины. Если при помощи сканера вводится текст, компьютер воспринимает его как картинку, а не как последовательность символов. Для преобразования такого графического текста в обычный символьный формат используют программы оптического распознавания образов. Модем — устройство для передачи компьютерных данных на большие расстояния по телефонным линиям связи. Цифровые сигналы, вырабатываемые компьютером, нельзя напрямую передавать по телефонной сети, потому что она предназначена для передачи человеческой речи — непрерывных сигналов звуковой частоты. Модем обеспечивает преобразование цифровых сигналов компьютера в переменный ток частоты звукового диапазона — этот процесс называется модуляцией, а также обратное преобразование, которое
18
называется демодуляцией. Отсюда название устройства: модем — модулятор/демодулятор.
Рис 4. Схема реализации модемной связи Для осуществления связи один модем вызывает другой по номеру телефона, а тот отвечает на вызов. Затем модемы посылают друг другу сигналы, согласуя подходящий им обоим режим связи. После этого передающий модем начинает посылать модулированные данные с согласованными скоростью (количеством бит в секунду) и форматом. Модем на другом конце преобразует полученную информацию в цифровой вид и передает её своему компьютеру. Закончив сеанс связи, модем отключается от линии. Управление модемом осуществляется с помощью специального коммутационного программного обеспечения. Модемы бывают внешние, выполненные в виде отдельного устройства, и внутренние, представляющие собой электронную плату, устанавливаемую внутри компьютера. Почти все модемы поддерживают и функции факсов. Факс — это устройство факсимильной передачи изображения по телефонной сети. Название "факс" произошло от слова "факсимиле" (лат. fac simile — сделай подобное), означающее точное воспроизведение графического оригинала (подписи, документа и т.д.) средствами печати. Модем, который может передавать и получать данные как факс, называется факс-модемом. Прогресс компьютерных технологий определил процесс появления новых разнообразных знаковых систем для записи алгоритмов – языков программирования. Смысл появления такого языка – оснащенный набор вычислительных формул дополнительной информации, превращает данный набор в алгоритм. Язык программирования служит двум связанным между собой целям: он дает программисту аппарат для задания действий, которые должны быть выполнены, и формирует концепции, которыми пользуется программист, размышляя о том, что делать. Первой цели идеально отвечает язык, который настолько "близок к машине", что всеми
19
основными машинными аспектами можно легко и просто оперировать достаточно очевидным для программиста образом. Второй цели идеально отвечает язык, который настолько "близок к решаемой задаче", чтобы концепции ее решения можно было выражать прямо и коротко. Компьютер способен работать с программами, написанными на его родном машинном языке. Существует почти столько же разных машинных языков, сколько и компьютеров, все они простые операции производятся со скоростью молнии на двоичных числах. Персональные компьютеры IBM используют машинный язык микропроцессоров семейства 8086, так как их аппаратная часть основывается на данных микропроцессорах. Можно писать программы непосредственно на машинном языке, хотя это и сложно. Для спасения программистов от сурового машинного языка программирования, были созданы языки высокого уровня (т.е. немашинные языки), которые стали своеобразным связующим мостом между человеком и машинным языком компьютера. Языки высокого уровня работают через трансляционные программы, которые вводят "исходный код" (гибрид английских слов и математических выражений, который считывает машина), и в конечном итоге заставляет компьютер выполнять соответствующие команды, которые даются на машинном языке. Существует два основных вида трансляторов: интерпретаторы, которые сканируют и проверяют исходный код в один шаг, и компиляторы, которые сканируют исходный код для производства текста программы на машинном языке, которая затем выполняется отдельно. Интерпретаторы Преимущество интерпретаторной реализации состоит в том, что она допускает "непосредственный режим". Непосредственный режим позволяет вам задавать компьютеру задачу вроде PRINT 3.14159*3/2.1 и возвращает вам ответ, как только вы нажмете клавишу ENTER (это позволяет использовать компьютер стоимостью 3000 долларов в качестве калькулятора стоимостью 10 долларов). Кроме того, интерпретаторы имеют специальные атрибуты, которые упрощают отладку. Можно, например, прервать обработку интерпретаторной программы, отобразить содержимое определенных переменных, бегло просмотреть программу, а затем продолжить исполнение. Больше всего программистам нравится в интерпретаторах возможность получения быстрого ответа. Здесь нет необходимости в компилировании, так как интерпретатор всегда готов для вмешательства в
20
вашу программу. Введите RUN и результат вашего самого последнего изменения оказывается на экране. Однако интерпретаторные языки имеют недостатки. Необходимо, например, иметь копию интерпретатора в памяти все время, тогда как многие возможности интерпретатора, а следовательно и его возможности могут не быть необходимыми для исполнения конкретной программы. Интерпретаторы тихоходны. Ими затрачивается много времени на разгадывание того, что делать, вместо того чтобы заниматься действительно делом. При исполнении программных операторов, интерпретатор должен сначала сканировать каждый оператор с целью прочтения его содержимого, а затем выполнить запрошенную операцию. Операторы в циклах сканируются излишне много. Рассмотрим программу: на интерпретаторном Бэйсике 10 FOR N=1 TO 1000 20 PRINT N,SQR(N) 30 NEXT N при первом переходе по этой программе БейсикИнтерпретатор должен разгадать что означает строка 20: 1. преобразовать числовую переменную N в строку; 2. послать строку на экран; 3. переместить в следующую зону печати; 4. вычислить квадратный корень из N; 5. преобразовать результат в строку; 6. послать строку на экран. При втором проходе цикла все это разгадывание повторяется снова, так как абсолютно забыты все результаты изучения этой строки какую-то миллисекунду тому назад. И так во всех следующих 998 проходах. Очевидно, что если отделить фазу сканирования/понимания от фазы исполнения, то можно иметь более быструю программу. Для этого существуют компиляторы. Компиляторы Компилятор-это транслятор текста на машинный язык, который считывает исходный текст. Он оценивает его в соответствии с синтаксической конструкцией языка и переводит на машинный язык. Другими словами, компилятор не исполняет программы, он их строит. Интерпретаторы невозможно отделить от программ, которые ими прогоняются, компиляторы делают свое дело и уходят со сцены. При работе с компилирующим языком, таким как Турбо-Бейсик, вы придете к необходимости мыслить о ваших программах в признаках двух главных фаз их жизни: периода компилирования и периода прогона. Большинство
21
программ будут прогоняться в четыре - десять раз быстрее их интерпретаторных эквивалентов. Если вы поработаете над улучшением, то сможете достичь 100-кратного повышения быстродействия. Оборотная сторона монеты состоит в том, что программы, расходующие большую часть времени на возню с файлами на дисках или ожидание ввода, не смогут продемонстрировать какое-то впечатляющее увеличение скорости. КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ Машинно – ориентированные языки Машинно – ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.). Машинно – ориентированные языки позволяют использовать все возможности и особенности Машинно – зависимых языков: - высокое качество создаваемых программ (компактность и скорость выполнения); - возможность использования конкретных аппаратных ресурсов; - предсказуемость объектного кода и заказов памяти; - для составления эффективных программ необходимо знать систему команд и особенности функционирования данной ЭВМ; - трудоемкость процесса составления программ, плохо защищенного от появления ошибок; - низкая скорость программирования; - невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов. Машинно-ориентированные языки по степени автоматического программирования подразделяются на классы. Машинный язык Отдельный компьютер имеет свой определенный машинный язык (далее МЯ), ему предписывают выполнение указываемых операций над определяемыми ими операндами, поэтому МЯ является командным. Однако, некоторые семейства ЭВМ (например, ЕС ЭВМ, IBM/370/ и др.) имеют единый МЯ для ЭВМ разной мощности. В команде любого из них сообщается информация о местонахождении операндов и типе выполняемой операции. В новых моднлях ЭВМ намечается тенденция к повышению внутренних языков машинно – аппаратным путем реализовывать более
22
сложные команды, приближающиеся по своим функциональным действиям к операторам алгоритмических языков программирования. Языки символического кодирования Языки символического кодирования (далее ЯСК), так же, как и МЯ, являются командными. Однако коды операций и адреса в машинных командах, представляющие собой последовательность двоичных (во внутреннем коде) или восьмеричных (часто используемых при написании программ) цифр, в ЯСК заменены на символы (идентификаторы), форма написания которых помогает программисту легче запоминать смысловое содержание операции. Это обеспечивает существенное уменьшение числа ошибок при составлении программ. Использование символических адресов – первый шаг к созданию ЯСК. Команды ЭВМ вместо истинных (физических) адресов содержат символические адреса. По результатам составленной программы определяется требуемое количество ячеек для хранения исходных промежуточных и результирующих значений. Назначение адресов, выполняемое отдельно от составления программы в символических адресах, может проводиться менее квалифицированным программистом или специальной программой, что в значительной степени облегчает труд программиста. Автокоды Есть языки, включающие в себя все возможности ЯСК, посредством расширенного введения макрокоманд - они называются Автокоды. В различных программах встречаются некоторые достаточно часто использующиеся командные последовательности, которые соответствуют определенным процедурам преобразования информации. Эффективная реализация таких процедур обеспечивается оформлением их в виде специальных макрокоманд и включением последних в язык программирования , доступный программисту. Макрокоманды переводятся в машинные команды двумя путями – расстановкой и генерированием. В постановочной системе содержатся «остовы» - серии команд, реализующих требуемую функцию, обозначенную макрокомандой. Макрокоманды обеспечивают передачу фактических параметров, которые в процессе трансляции вставляются в «остов» программы, превращая её в реальную машинную программу. В системе с генерацией имеются специальные программы, анализирующие макрокоманду, которые определяют, какую функцию
23
необходимо выполнить и формируют необходимую последовательность команд, реализующих данную функцию. Обе указанных системы используют трансляторы с ЯСК и набор макрокоманд, которые также являются операторами автокода. Развитые автокоды получили название Ассемблеры. Сервисные программы и пр., как правило, составлены на языках типа Ассемблер. Более полная информация об языке Ассемблера см. ниже. Макрос Язык, являющийся средством для замены последовательности символов описывающих выполнение требуемых действий ЭВМ на более сжатую форму - называется Макрос (средство замены). В основном, Макрос предназначен для того, чтобы сократить запись исходной программы. Компонент программного обеспечения, обеспечивающий функционирование макросов, называется макропроцессором. На макропроцессор поступает макроопределяющий и исходный текст. Реакция макропроцессора на вызов-выдача выходного текста. Макрос одинаково может работать, как с программами, так и с данными. Машинно – независимые языки Машинно – независимые языки – это средство описания алгоритмов решения задач и информации, подлежащей обработке. Они удобны в использовании для широкого круга пользователей и не требуют от них знания особенностей организации функционирования ЭВМ и ВС. Подобные языки получили название высокоуровневых языков программирования. Программы, составляемые на таких языках, представляют собой последовательности операторов, структурированные согласно правилам рассматривания языка(задачи, сегменты, блоки и т.д.). Операторы языка описывают действия, которые должна выполнять система после трансляции программы на МЯ. Таким образом, командные последовательности (процедуры, подпрограммы), часто используемые в машинных программах, представлены в высокоуровневых языках отдельными операторами. Программист получил возможность не расписывать в деталях вычислительный процесс на уровне машинных команд, а сосредоточиться на основных особенностях алгоритма.
24
Проблемно – ориентированные языки С расширением областей применения вычислительной техники возникла необходимость формализовать представление постановки и решение новых классов задач. Необходимо было создать такие языки программирования, которые, используя в данной области обозначения и терминологию, позволили бы описывать требуемые алгоритмы решения для поставленных задач, ими стали проблемно – ориентированные языки. Эти языки, языки ориентированные на решение определенных проблем, должны обеспечить программиста средствами, позволяющими коротко и четко формулировать задачу и получать результаты в требуемой форме. Проблемных языков очень много, например: Фортран, Алгол – языки, созданные для решения математических задач; Simula, Слэнг - для моделирования; Лисп, Снобол – для работы со списочными структурами. Универсальные языки Универсальные языки были созданы для широкого круга задач: коммерческих, научных, моделирования и т.д. Первый универсальный язык был разработан фирмой IBM, ставший в последовательности языков ПЛ/1. Второй по мощности универсальный язык называется Алгол-68. Он позволяет работать с символами, разрядами, числами с фиксированной и плавающей запятой. П/1 имеет развитую систему операторов для управления форматами, для работы с полями переменной длины, с данными организованными в сложные структуры, и для эффективного использования каналов связи. Язык учитывает включенные во многие машины возможности прерывания и имеет соответствующие операторы. Предусмотрена возможность параллельного выполнение участков программ. Программы в П/1 компилируются с помощью автоматических процедур. Язык использует многие свойства Фортрана, Алгола, Кобола. Однако он допускает не только динамическое, но и управляемое и статистическое распределения памяти. Диалоговые языки Появление новых технических возможностей поставило задачу перед системными программистами – создать программные средства,
25
обеспечивающие оперативное взаимодействие человека с ЭВМ их назвали диалоговыми языками. Эти работы велись в двух направлениях. Создавались специальные управляющие языки для обеспечения оперативного воздействия на прохождение задач, которые составлялись на любых раннее неразработанных (не диалоговых) языках. Разрабатывались также языки, которые кроме целей управления обеспечивали бы описание алгоритмов решения задач. Необходимость обеспечения оперативного взаимодействия с пользователем потребовала сохранения в памяти ЭВМ копии исходной программы даже после получения объектной программы в машинных кодах. При внесении изменений в программу с использованием диалогового языка система программирования с помощью специальных таблиц устанавливает взаимосвязь структур исходной и объектной программ. Это позволяет осуществить требуемые редакционные изменения в объектной программе. Одним из примеров диалоговых языков является Бэйсик. Бэйсик использует обозначения подобные обычным математическим выражениям. Многие операторы являются упрощенными вариантами операторов языка Фортран. Поэтому этот язык позволяет решать достаточно широкий круг задач. Непроцедурные языки Непроцедурные языки составляют группу языков, описывающих организацию данных, обрабатываемых по фиксированным алгоритмам (табличные языки и генераторы отчетов), и языков связи с операционными системами. Позволяя четко описывать как задачу, так и необходимые для её решения действия, таблицы решений дают возможность в наглядной форме определить, какие условия должны быть выполнены прежде чем переходить к какому-либо действию. Одна таблица решений, описывающая некоторую ситуацию, содержит все возможные блок-схемы реализаций алгоритмов решения. Табличные методы легко осваиваются специалистами любых профессий. Программы, составленные на табличном языке, удобно описывают сложные ситуации, возникающие при системном анализе.
26
РАЗВИТИЕ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ Ассемблер Язык Ассемблера – это символическое представление машинного языка. Он облегчает процесс программирования по сравнению с программированием в машинных кодах. Программисту не обязательно употреблять настоящие адреса ячеек памяти с размещенными в них данными, участвующими в операции, и вычисляемые результаты, а также адреса тех команд, к которым программа не обращается. Некоторые задачи, например, обмен с нестандартными устройствами обработки данных сложных структур невозможно решить с помощью языков программирования высокого уровня. Это под силу ассемблеру. В принципе, язык Ассемблер является машинным языком. И программист реализующий какую-либо задачу на языках высокого уровня, с помощью Ассемблера может определить осмыслено ли решение данной задачи, с точки зрения использования ЭВМ. Лисп Один из самых старых языков программирования Фортран был создан в 50-х гг. двадцатого века. Фортран и подобные ему языки программирования (Алгол, ПЛ/1) предназначались для решения вычислительных задач, возникающих в математике, физике, инженерных расчетах, экономике и т.д. Эти языки в основном работают с числами. Второй старейший язык программирования Лисп (List Information Symbol Processing) был разработан Дж. Маккарти в 1962 г. скорее для работы со строками символов, нежели для работы с числами. Это особое предназначение Лиспа открыло для программистов новую область деятельности, известную ныне, как «искусственный интеллект». В настоящее время Лисп успешно применяется в экспертных системах, системах аналитических вычислений и т.д. Обширность области возможных приложений Лиспа вызвала появление множества различных диалектов Лиспа. Это легко объяснимо: применение Лиспа для понимания естественного языка требует определенного набора базисных функций, отличных, например, от используемого в задачах медицинской диагностики. Существование множества различных диалектов Лиспа привело к созданию в начале 80-х гг. Common LISP Комитета, который должен был
27
выбрать наиболее подходящий диалект Лиспа и предложить его в качестве основного. Этот диалект, выбранный Комитетом в 1985г., получил название Common LISP . В дальнейшем он был принят в университетах США, а также многими разработчиками систем искусственного интеллекта, в качестве основного диалекта языка Лисп. Язык программирования Лисп существенно отличается от других языков программирования, таких, как Паскаль, Си и т.п. Работа с символами и работа с числами как с основными элементами требует разных способов мышления. Первоначально Лисп был задуман как теоретическое средство для рекурсивных построений, а сегодня он превратился в мощное средство, обеспечивающее программиста разнообразной поддержкой, позволяющей ему быстро строить прототипы весьма и весьма серьезных систем. Профессор Массачусетского технологического института Дж. Самман заметил, что математическая ясность и предельная четкость Лиспа – это еще не все. Главное – Лисп позволяет сформулировать и запомнить «идиомы», столь характерные для проектов по искусственному интеллекту. Фортран Одним из первых и наиболее удачных компиляторов стал язык Фортран, разработанный фирмой IBM. Профессор Дж. Букс и группа американских специалистов в области программирования в 1954 году опубликовало первое сообщение о языке. Дословно, название языка FORmulae TRANslation –преобразование формул. Среди причин долголетия Фортрана (а он один из самых распространенных языков в мире), можно отметить простую структуру, как самого Фортрана, так и предназначенных для него трансляторов. Программа на Фортране записывается в последовательности предложений или операторов (описание некоего преобразования информации), и оформляется по определенным стандартам. Эти стандарты накладывают ограничения, в частности, на форму записи и расположения частей оператора в строке бланка для записи операторов. Программа, записанная на Фортране, представляет собой один или несколько сегментов (подпрограмм) из операторов. Сегмент, управляющий работой всей программы в целом, называется основной программой. Фортран был задуман для использования в сфере научных и инженерно-технических вычислений. Однако на этом языке легко описываются задачи с разветвленной логикой (моделирование производственных процессов, решение игровых ситуаций и т.д.),
28
некоторые экономические задачи и особенно задачи редактирования (составление таблиц, сводок, ведомостей и т.д.). Модификация языка Фортран, появившиеся в 1958 году, получила название Фортран II и содержала понятие подпрограммы и общих переменных для обеспечения связи между сегментами. К 1962 году относится появление языка, известного под именем Фортран IV и ставшего наиболее употребительным в настоящее время. К этому же времени относится и начало деятельности комиссии при Американской Ассоциации Стандартов (ASA), которая выработала к 1966 году два стандарта – языки Фортран и базисный (основной) Фортран (Basic FORTRAN). Эти языки приблизительно соответствуют модификациям IV и II, однако базисный Фортран является подмножеством Фортрана, в то время, как Фортран II таковым для Фортрана IV не является. Язык Фортран до сих пор продолжает развиваться и совершенствоваться, оказывая влияние на создание и развитие других языков. Например, Фортран заложен в основу Basic – диалогового языка, очень популярного для решения небольших задач, превосходного языка для обучения навыкам использования алгоритмических языков в практике программирования. Разработан этот язык – Beginner’s All –purpose Symbolic Instruction Code – группой сотрудников Вычислительного центра Дармутского колледжа, штат Нью-Хемпшир созданный в 19…. . Но это уже следующий язык. Бейсик Бейсик - это продукт Новой Англии, созданный в 1964г., как язык обучения программированию. Бейсик является общепринятым акронимом от"Beginner's All-purpose Symbolic Insruction Code" (BASIC) многоцелевой символический обучающий код для начинающих". Вскоре было обнаружено, что Бейсик может делать практически все то, что делает скучный неуклюжий Фортран. А так как Бейсику было легко обучиться и легко с ним работать, программы на нем писались быстрее, чем на Фортране, то он получил распространиение. Бейсик был доступен применительно к персональным компьютерам, обычно он встроен в ПЗУ. Бейсик самый простой для освоения из десятков языков общецелевого программирования, имеющихся в распоряжении любителей программирования. Бейсик считается деловым языком, снабженным мощными средствами решения специфических задач, которые обычно большинство пользователей решают при помощи небольших компьютеров, а именно: работая с файлами и выводя текстовое и графическое изображение на экране дисплея.
29
Бейсик обычно реализовался как интерпретатор (знакомым изомером является сам интерпретаторный Бейсик). Причинами перехода от любительского уровня к профессиональному являются многочисленные расширения классической версии языка: возможность отключения нумерации строк, многостроковые структурированные программные конструкции, структуры типа "запись", поименованные подпрограммы с параметрами и локальные переменные. С появлением транслятора QuickBasic фирмы Microsoft разработчики получили возможность строить на Бейсике приложения из раздельно откомпилированных модулей, некоторые из которых могут быть написаны на других языках. Разработчик теперь имеет выбор из нескольких промышленных библиотек подпрограмм, которые содержат готовые решения для распространенных задач программирования. Рефал Рефал разработан в России (СССР) в 1966г. ИПМ АН СССР. Этот язык прост и удобен для описания манипуляций над произвольными текстовыми объектами. Рефал широко применяется при разработке трансляторов с алгоритмических языков как универсальных и проблемно – ориентированных, так и автокодов. Кроме использования в задачах трансляции, Рефал имеет такие важные сферы применения, как машинное выполнение громоздких аналитических выкладок в теоретической физике и прикладной математике; проектирование «умных» информационных систем, осуществляющих нетривиальную логическую обработку информации; машинное доказательство теорем; моделирование целенаправленного поведения; разработка диалоговых обучающих систем; исследования в области искусственного интеллекта и т.д. Программирование на Рефале имеет специфику, связанную, прежде всего, с тем, что Рефал является языком функционального типа в отличие от обычных операторных языков типа Алгол, Фортран и т.д.. Если программа на операторных языках – ни что иное, как совокупность приказов-операторов, то программа на Рефале представляет собой по существу описание связей и отношений между определенными понятиями. Вследствие того, что в Рефале программист сам определяет структуру обрабатываемой информации, эффективность программы существенно зависит от удачного или неудачного выбора этой структуры. Для задания структур в Рефале используются скобки, а специфика всех реализаций языка такова, что использование скобок резко повышает
30
эффективность выполнения программы. Это достигается с помощью адресного соединения скобок. Определенной спецификой обладают и переменные типа «выражения» – имеется в виду их способность удлиняться при отождествлении. Правильное использование переменных этого типа также позволяет значительно повысить эффективность Рефал – программы. Пролог и Пролог ++ Пролог - это язык, предназначенный для поиска решений. Это декларативный язык, то есть формальная постановка задачи может быть использована для ее решения. Пролог определяет логические отношения в задаче, как отличные от пошагового решения этой задачи. Центральной частью Пролога являются средства логического вывода, которые решают запросы, используя заданное множество фактов и правил, к которым обращаются как к утверждениям. Пролог также не имеет деления переменных на типы и может динамически добавлять правила и факты к средствам вывода. Таким образом, это гибкий язык, и он более пригоден для объектно-ориентированного расширения, чем язык со строго заданными типами, например, Паскаль. Пролог ++ представляет собой дополнение к стандартному Прологу. Все свойства языка по-прежнему доступны программистам. Следовательно, Пролог ++ можно отнести к группе гибридных языков, представителями которой считаются Object Pascal и C++. Расширение Пролог ++ поддерживает все свойства, присущие обычно объектноориентированным языкам: концепции объектов и классов, единичное и многократное наследование, разбиение на подклассы и передачу сообщений. Поддерживаются также некоторые усовершенствованные свойства, существующие в таких языках, как C++ и Smalltalk, включая общие и частные методы. Интересным свойством является поддержка в языке программирования с управлением данными. Эта техника, которая может быть еще названа программированием, "управляемым событиями", используется в большинстве языков объектно-ориентированного программирования, особенно в тех, которые разработаны для машин с интерфейсом, управляемым "мышью". Объектно-ориентированная программа реагирует на события, которые определяют поток управления. В Прологе ++ программирование с управлением данными достигается при помощи концепции демонов. Демон представляет собой объект, методы которого вызываются в случае
31
определенных событий и могут быть таким образом использованы для поддержки программирования с управлением данными. Сам язык основан на концепции передачи сообщений. Программа на Прологе ++ строится вокруг множества объектов Пролога ++, которые обмениваются сообщениями. В этом смысле Пролог ++ ближе к чистому объектно-ориентированному языку, такому, как Smalltalk, чем C++ или Object Pascal. Определения объектов строятся исходя из вызовов. Open_Object [имя_объекта] и Close_Object [имя_объекта], а методы определяются практически так же, как в других объектноориентированных языках. Для задания наследования можно явным образом указать, какой метод какого объекта должен наследоваться, что является необходимым для многократного наследования. Лекс Лекс – генератор программ лексического анализа. Лексический анализ – это распознавание лексем во входном потоке символов. Предположим, что задано некоторое конечное множество слов (лексем) в некотором языке и некоторое входное слово. Необходимо установить, какой элемент множества (если он существует) совпадает с данным входным словом. Обычно лексический анализ выполняется так называемым лексическим анализатором. Лексический анализатор – это программа. Лексический анализ применяется во многих случаях, например, для построения пакетного редактора или в качестве распознавателя директив в диалоговой программе и т.д. Однако, наиболее важное применение лексического анализатора – это использование его в компиляторе. Здесь лексический анализатор выполняет функцию программы ввода данных. Лексический анализатор выполняет первую стадию компиляции – читает строки компилируемой программы, выделяет лексемы и передает их на дальнейшие стадии компиляции (грамматический разбор, кодогенерацию и т.д.). Лексический анализатор распознает тип каждой лексемы и соответствующим образом помечает ее. Например, при компиляции Сипрограммы могут быть выделены следующие типы лексем: число, идентификатор, оператор, ограничитель и т.д. Лексический анализатор должен не только выделить лексему, но и выполнить некоторые преобразования. Например, если лексема – число, то его необходимо перевести во внутреннюю (двоичную) форму записи как число с плавающей или фиксированной запятой. А если лексема –
32
идентификатор, то его необходимо разместить в таблице, чтобы в дальнейшем обращаться к нему не по имени, а по адресу в таблице. Хотя лексический анализ по своей идее прост, тем не менее, эта фаза работы компилятора часто занимает больше времени, чем любая другая. Частично это происходит из-за необходимости просматривать и анализировать исходный текст символ за символом. Иногда даже бывает необходимо вернуть прочитанный символ во входной поток с тем, чтобы повторить просмотр и анализ. Cи Си – это язык программирования общего назначения, известный своей эффективностью, экономичностью, и переносимостью. Указанные преимущества Си обеспечивают хорошее качество разработки почти любого вида программного продукта. Использование Си в качестве инструментального языка позволяет получать быстрые и компактные программы. Во многих случаях программы, написанные на Си, сравнимы по скорости с программами, написанными на языке ассемблера. При этом они имеют лучшую наглядность и их более просто сопровождать. Си сочетает эффективность и мощность в относительно малом по размеру языке. На Си можно создавать программы, которые делают все, что требуется. Этот язык может стимулировать к программированию. Другие языки программирования воздвигают искусственные препятствия для творчества, а Си – нет. Использование этого языка позволяет сократить затраты времени на создание работающих программ. Си позволяет программировать быстро, эффективно и предсказуемо. Си позволяет использовать все возможности ЭВМ. Этот язык создан программистом для использования другими программистами. Язык Си имеет свои существенные особенности. Си обеспечивает полный набор операторов структурного программирования. Си предлагает необычно большой набор операций. Многие операции Си соответствуют машинным командам, и поэтому допускают прямую трансляцию в машинный код. Разнообразие операций позволяет выбирать их различные наборы для минимизации результирующего кода. Си поддерживает указатели на переменные и функции. Указатель на объект программы соответствует машинному адресу этого объекта. Посредством разумного использования указателей можно создавать эффективно-выполняемые программы, так как указатели позволяют ссылаться на объекты тем же самым путем, как это делает
33
машина. Си поддерживает арифметику указателей, и тем самым позволяет осуществлять непосредственный доступ и манипуляции с адресами памяти. В своем составе Си содержит препроцессор, который обрабатывает текстовые файлы перед компиляцией. Среди его наиболее полезных приложений при написании программ на Си являются: определение программных констант, замена вызовов функций аналогичными, но более быстрыми макросами, условная компиляция. Препроцессор не ограничен процессированием только исходных текстовых файлов Си, он может быть использован для любого текстового файла. Си-гибкий язык, позволяющий принимать в конкретных ситуациях самые разные решения. Тем не менее, Си налагает незначительные ограничения в таких, например, действиях, как преобразование типов. Во многих случаях это является достоинством, однако программисты должны хорошо знать язык, чтобы понимать, как будут выполняться их программы. Язык Си предъявляет достаточно высокие требования к квалификации использующего его программиста. При изучении Си желательно иметь представление о структуре и работе компьютера. Большую помощь и более глубокое понимание идей Си, как языка системного программирования, обеспечат хотя бы минимальное знание языка ассемблер. Уровень старшинства некоторых операторов не является общепринятым, некоторые синтаксические конструкции могли бы быть лучше. Тем не менее, Си – чрезвычайно эффективный и выразительный язык, пригодный для широкого класса задач. Си++ Си++ разработан в 1983 году. Более ранние версии языка использовались начиная с 1980 года и были известны как "Cи с Классами". Автор хотел написать событийно управляемые модели, для чего был бы идеален Simula67, если не принимать во внимание эффективность. "Cи с Классами" использовался для крупных проектов моделирования, в которых строго тестировались возможности написания программ, требующих (только) минимального пространства памяти и времени на выполнение. В "Cи с Классами" не хватало перегрузки операций, ссылок, виртуальных функций и многих деталей. Си++ был впервые введен за пределами исследовательской группы автора в июле 1983 года. Однако тогда многие особенности Си++ были еще не разработаны.
34
Название Си++ предложил Рик Масситти. Это название указывает на эволюционную природу перехода к нему от Cи. "++" - это операция приращения в Cи. Чуть более короткое имя Cи+ является синтаксической ошибкой, кроме того, оно уже было использовано как имя совсем другого языка. Си++ - это универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. Си++ является надмножеством языка программирования Cи. Помимо возможностей, которые дает Cи, Си++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы. Изначально Си++ был разработан, чтобы не приходилось программировать на ассемблере, Cи или других современных языках высокого уровня. Основным его предназначением было сделать написание хороших программ более простым Си++ развивается, чтобы справляться со сложностями, с которыми сталкиваются пользователи В качестве базового языка для Си++ был выбран Cи, потому что он многоцелевой, лаконичный и относительно низкого уровня; отвечает большинству задач системного программирования; идет везде и на всем; ригоден в среде программирования UNIX. Си++ стал использоваться шире, и по мере того, как возможности, предоставляемые им помимо возможностей Cи, становились все более существенными, поднимался вопрос о том, сохранять ли совместимость с Cи. Оказавшись от определенной части наследия Cи можно было бы избежать ряда проблем. Это не было сделано, потому что - есть миллионы строк на Cи, которые могли бы принести пользу в Си++ при условии, что их не нужно было бы полностью переписывать с Cи на Си++; - есть сотни тысяч строк библиотечных функций и сервисных программ, написанных на Cи которые можно было бы использовать из или на Си++ при условии, что Си++ полностью совместим с Cи по загрузке и синтаксически очень похож на Cи;
35
- есть десятки тысяч программистов, которые знают Cи, и которым, поэтому, нужно только научиться использовать новые особенности Си++, а не заново изучать его основы; Поскольку Си++ и Cи будут использоваться на одних и тех же системах одними и теми же людьми, отличия должны быть либо очень большими, либо очень маленькими, чтобы свести к минимуму ошибки и недоразумения. Си++ был развит из языка программирования Cи и за очень немногими исключениями сохраняет Cи как подмножество. Базовый язык, Cи подмножество Си++, спроектирован так, что имеется очень близкое соответствие между его типами, операциями и операторами и компьютерными объектами, с которыми непосредственно приходится иметь дело: числами, символами и адресами. За исключением операций свободной памяти new и delete, отдельные выражения и операторы Си++ обычно не нуждаются в скрытой поддержке во время выполнения или подпрограммах. Одним из первоначальных предназначений Cи было применение его вместо программирования на ассемблере в самых насущных задачах системного программирования. Когда проектировался Си++, были приняты меры, чтобы не ставить под угрозу успехи в этой области. Различие между Cи и Си++ состоит в первую очередь в степени внимания, уделяемого типам и структурам. Cи выразителен и снисходителен. Си++ еще более выразителен, но чтобы достичь этой выразительности, программист должен уделить больше внимания типам объектов. Когда известны типы объектов, компилятор может правильно обрабатывать выражения, тогда как в противном случае программисту пришлось бы задавать действия с мучительными подробностями. Знание типов объектов также позволяет компилятору обнаруживать ошибки, которые в противном случае остались бы до тестирования. Заметьте, что использование системы типов для того, чтобы получить проверку параметров функций, защитить данные от случайного искажения, задать новые операции и т.д., само по себе не увеличивает расходов по времени выполнения и памяти. Особое внимание, уделенное при разработке Си++ структуре, отразилось на возрастании масштаба программ, написанных со времени разработки Cи. Если программа в 10 000 строк имеет плохую структуру, то можно обнаружить, что новые ошибки появляются так же быстро, как удаляются старые. Си++ был разработан так, чтобы дать возможность разумным образом структурировать большие программы таким образом, чтобы для одного человека не было непомерным справляться с программами в 25 000 строк. Существуют программы гораздо больших размеров, однако те, которые работают, в целом, как оказывается, состоят
36
из большого числа почти независимых частей, размер каждой из которых намного меньше указанных пределов. Сложность написания и поддержки программы зависит от сложности разработки, а не от числа строк текста программы. Существенным критерием при разработке языка была простота. В Си++ нет типов данных высокого уровня и нет первичных операций высокого уровня. В нем нет, например, матричного типа с операцией обращения или типа строка с операцией конкатенации. Если пользователю понадобятся подобные типы, их можно определить в самом языке. Основное, чем занимается программирование на Си++ - это определение универсальных и специально-прикладных типов. Хорошо разработанный тип, определяемый пользователем, отличается от встроенного типа только способом определения, но не способом использования. Исключались те черты, которые могли бы повлечь дополнительные расходы памяти или времени выполнения Си++ проектировался для использования в довольно традиционной среде компиляции и выполнения, среде программирования на Cи в системе UNIX. Средства обработки особых ситуаций и параллельного программирования, требующие нетривиальной загрузки и поддержки в процессе выполнения, не были включены в Си++. Вследствие этого реализация Си++ очень легко переносима. Есть основания использовать Си++ в среде, где имеется более существенная поддержка. Такие средства, как динамическая загрузка, пошаговая трансляция и база данных определений типов могут с пользой применяться без воздействия на язык. СОСТАВНЫЕ ЭЛЕМЕНТЫ СИСТЕМ ПРОГРАММИРОВАНИЯ Неотъемлемая часть современных ЭВМ – системы программного обеспечения, являющиеся логическим продолжением средств ЭВМ, расширяющим возможности аппаратуры и сферу их использования. Система программного обеспечения, являясь посредником между человеком и техническими устройствами машины, автоматизирует выполнение тех или иных функций в зависимости от профиля специалистов и режимов их взаимодействия с ЭВМ. Основное назначение программного обеспечения – повышение эффективности труда пользователя, а также увеличение пропускной способности ЭВМ посредством сокращения времени и затрат на подготовку и выполнение программ. Программное обеспечение ЭВМ подразделяется на общее и специальное программное обеспечение.
37
Общее программное обеспечение реализует функции, связанные с работой ЭВМ, и включает в себя системы программирования, операционные системы, комплекс программ технического обслуживания. Специальное программное обеспечение включает в себя пакеты прикладных программ, которые проблемно ориентированы на решение вполне определенного класса задач. Системой программирования называется комплекс программ, предназначенный для автоматизации программирования задач на ЭВМ. Система программирования освобождает проблемного пользователя или прикладного программиста от необходимости написания программ решения своих задач на неудобном для него языке машинных команд и предоставляют им возможность использовать специальные языки более высокого уровня. Для каждого из таких языков, называемых входными или исходными, система программирования имеет программу, осуществляющую автоматический перевод (трансляцию) текстов программы с входного языка на язык машины. Обычно система программирования содержит описания применяемых языков программирования, программы-трансляторы с этих языков, а также развитую библиотеку стандартных подпрограмм. Важно различать язык программирования и реализацию языка. Язык – это набор правил, определяющих систему записей, составляющих программу, синтаксис и семантику используемых грамматических конструкций. Реализация языка – это системная программа, которая переводит (преобразует) записи на языке высокого уровня в последовательность машинных команд. Имеется два основных вида средств реализации языка: компиляторы и интерпретаторы. Компилятор транслирует весь текст программы, написанной на языке высокого уровня, в ходе непрерывного процесса. При этом создается полная программа в машинных кодах, которую затем ЭВМ выполняет без участия компилятора. Интерпретатор последовательно анализирует по одному оператору программы, превращая при этом каждую синтаксическую конструкцию, записанную на языке высокого уровня, в машинные коды и выполняя их одна за другой. Интерпретатор должен постоянно присутствовать в зоне основной памяти вместе с интерпретируемой программой, что требует значительных объемов памяти. Следует заметить, что любой язык программирования может быть как интерпретируемым, так и компилируемым, но в большинстве случаев у каждого языка есть свой предпочтительный способ реализации. Языки
38
Фортран, Паскаль в основном компилируют; язык Ассемблер почти всегда интерпретирует; языки Бейсик и Лисп широко используют оба способа. Основным преимуществом компиляции является скорость выполнения готовой программы. Интерпретируемая программа выполняется медленнее, чем компилируемая, поскольку интерпретатор должен строить соответствующую последовательность команд в момент, когда инструкция предписывает выполнение. Интерпретируемый язык более удобен для программиста. Он позволяет проконтролировать результат каждой операции. Особенно хорошо такой язык подходит для диалогового стиля разработки программ, когда отдельные части программы можно написать, проверить и выполнить в ходе создания программы, не отключая интерпретатора. По набору входных языков различают системы программирования одно- и многоязыковые. Отличительная черта многоязыковых систем состоит в том, что отдельные части программы можно составлять на разных языках и помощью специальных обрабатывающих программ объединять их в готовую для исполнения на ЭВМ программу. Для построения языков программирования используется совокупность общепринятых символов и правил, позволяющих описывать алгоритмы решаемых задач и однозначно истолковывать смысл созданного написания. Основной тенденцией в развитии языков программирования является повышение их семантического уровня с целью облегчения процесса разработки программ и увеличения производительности труда их составителей. По структуре, уровню формализации входного языка и целевому назначению различают системы программирования машинноориентированные и машинно-независимые. Машинно-ориентированные системы программирования имеют входной язык, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.). Машинно-ориентированные системы позволяют использовать все возможности и особенности машинно-зависимых языков: - высокое качество создаваемых программ; - возможность использования конкретных аппаратных ресурсов; - предсказуемость объектного кода и заказов памяти; - для составления эффективных программ необходимо знать систему команд и особенности функционирования данной ЭВМ; - трудоемкость процесса составления программ (особенно на машинных языках и ЯСК), плохо защищенного от появления ошибок; - низкая скорость программирования;
39
- невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов. Машинно-ориентированные системы по степени автоматического программирования подразделяются на классы. В таких системах программирования отдельный компьютер имеет свой определенный машинный язык (далее МЯ), ему предписывают выполнение указываемых операций над определяемыми ими операндами, поэтому МЯ является командным. Однако, некоторые семейства ЭВМ (например, ЕС ЭВМ, IBM/370/ и др.) имеют единый МЯ для ЭВМ разной мощности. В команде любого из них сообщается информация о местонахождении операндов и типе выполняемой операции. В новых моделях ЭВМ намечается тенденция к повышению внутренних языков машинно-аппаратным путем реализовывать более сложные команды, приближающиеся по своим функциональным действиям к операторам алгоритмических языков программирования. Система символического кодирования. В данных системах используются языки символического кодирования (далее ЯСК), которые так же, как и МЯ, являются командными. Однако коды операций и адреса в машинных командах, представляющие собой последовательность двоичных (во внутреннем коде) или восьмеричных (часто используемых при написании программ) цифр, в ЯСК заменены символами (идентификаторами), форма написания которых помогает программисту легче запоминать смысловое содержание операции. Это обеспечивает существенное уменьшение числа ошибок при составлении программ. Использование символических адресов – первый шаг к созданию ЯСК. Команды ЭВМ вместо истинных (физических) адресов содержат символические адреса. По результатам составленной программы определяется требуемое количество ячеек для хранения исходных промежуточных и результирующих значений. Назначение адресов, выполняемое отдельно от составления программы в символических адресах, может проводиться менее квалифицированным программистом или специальной программой, что в значительной степени облегчает труд программиста. Существуют системы программирования, использующие языки, которые включают в себя все возможности ЯСК, посредством расширенного введения макрокоманд – они называются Автокоды. В различных программах встречаются некоторые достаточно часто использующиеся командные последовательности, которые соответствуют определенным процедурам преобразования информации. Эффективная реализация таких процедур обеспечивается оформлением их в виде специальных макрокоманд и включением последних в язык
40
программирования, доступный программисту. Макрокоманды переводятся в машинные команды двумя путями – расстановкой и генерированием. В постановочной системе содержатся «остовы» – серии команд, реализующие требуемую функцию, обозначенную макрокомандой. Макрокоманды обеспечивают передачу фактических параметров, которые в процессе трансляции вставляются в «остов» программы, превращая её в реальную машинную программу. В системе с генерацией имеются специальные программы, анализирующие макрокоманду, которые определяют, какую функцию необходимо выполнить и формируют необходимую последовательность команд, реализующих данную функцию. Обе указанных системы используют трансляторы с ЯСК и набор макрокоманд, которые также являются операторами автокода. Развитые автокоды получили название Ассемблеры. Сервисные программы и пр., как правило, составлены на языках типа Ассемблер. Язык, являющийся средством для замены последовательности символов описывающих выполнение требуемых действий ЭВМ на более сжатую форму, называется Макрос (средство замены). В основном, Макрос предназначен для того, чтобы сократить запись исходной программы. Компонент программного обеспечения, обеспечивающий функционирование макросов, называется макропроцессором. На макропроцессор поступает макросопределяющий и исходный текст. Реакция макропроцессора на вызов – выдача выходного текста. Макрос одинаково может работать, как с программами, так и с данными. Машинно-независимые системы программирования – это средство описания алгоритмов решения задач и информации, подлежащей обработке. Они удобны в использовании для широкого круга пользователей и не требуют от них знания особенностей организации функционирования ЭВМ. В таких системах программы, составляемые языках, имеющих название высокоуровневых языков программирования, представляют собой последовательности операторов, структурированные согласно правилам рассматривания языка (задачи, сегменты, блоки и т.д.). Операторы языка описывают действия, которые должна выполнять система после трансляции программы на МЯ. Таким образом, командные последовательности (процедуры, подпрограммы), часто используемые в машинных программах, представлены в высокоуровневых языках отдельными операторами. Программист получил возможность не расписывать в деталях вычислительный процесс на уровне машинных команд, а сосредоточиться на основных особенностях алгоритма. Разработан ряд машинно-независимых систем программирования.
41
Входные языки программирования в процедурно-ориентированных системах служат для записи алгоритмов (процедур) обработки информации, характерных для решения задач определенного класса. Эти языки, должны обеспечить программиста средствами, позволяющими коротко и четко формулировать задачу и получать результаты в требуемой форме. Процедурных языков очень много, например: Фортран, Алгол – языки, созданные для решения математических задач; Simula, Слэнг - для моделирования; Лисп, Снобол – для работы со списочными структурами. Проблемно-ориентированные системы в качестве входного языка используют язык программирования с проблемной ориентацией. С расширением областей применения вычислительной техники возникла необходимость формализовать представление постановки и решение новых классов задач. Необходимо было создать такие языки программирования, которые, используя в данной области обозначения и терминологию, позволили бы описывать требуемые алгоритмы решения для поставленных задач. Эти языки, ориентированные на решение определенных проблем, должны обеспечить программиста средствами, позволяющими коротко и четко формулировать задачу и получать результаты в требуемой форме. Программы, составленные на основе этих языков программирования, записаны в терминах решаемой задачи и реализуются выполнением соответствующих процедур. Появление новых технических возможностей поставило задачу перед системными программистами – создать программные средства, обеспечивающие оперативное взаимодействие человека с ЭВМ их назвали диалоговыми языками. Создавались специальные управляющие языки для обеспечения оперативного воздействия на прохождение задач, которые составлялись на любых раннее неразработанных (не диалоговых) языках. Разрабатывались также языки, которые кроме целей управления обеспечивали бы описание алгоритмов решения задач. Необходимость обеспечения оперативного взаимодействия с пользователем потребовала сохранения в памяти ЭВМ копии исходной программы даже после получения объектной программы в машинных кодах. При внесении изменений в программу система программирования с помощью специальных таблиц устанавливает взаимосвязь структур исходной и объектной программ. Это позволяет осуществить требуемые редакционные изменения в объектной программе. Непроцедурные языки составляют группу языков, описывающих организацию данных, обрабатываемых по фиксированным алгоритмам (табличные языки и генераторы отчетов), и языков связи с операционными системами. Позволяя четко описывать как задачу, так и необходимые для её решения действия, таблицы решений дают возможность в наглядной
42
форме определить, какие условия должны выполнятся, прежде чем переходить к какому-либо действию. Одна таблица решений, описывающая некоторую ситуацию, содержит все возможные блок-схемы реализаций алгоритмов решения. Табличные методы легко осваиваются специалистами любых профессий. Программы, составленные на табличном языке, удобно описывают сложные ситуации, возникающие при системном анализе. Для создания программы на выбранном языке программирования нужно иметь следующие компоненты. Специализированные текстовые редакторы, ориентированные на конкретный язык программирования, необходимы для получения файла с исходным текстом программы, который содержит набор стандартных символов для записи алгоритма. Исходный текст с помощью программы-компилятора переводится в машинный код. Исходный текст программы состоит, как правило, из нескольких модулей (файлов с исходными текстами). Каждый модуль компилируется в отдельный файл с объектным кодом, которые затем требуется объединить в одно целое. Кроме того, системы программирования, как правило, включают в себя библиотеки стандартных подпрограмм. Стандартные подпрограммы имеют единую форму обращения, что создает возможности автоматического включения таких подпрограмм в вызывающую программу и настройки их параметров. Объектный код модулей и подключенные к нему стандартные функции обрабатывает специальная программа – редактор связей. Данная программа объединяет объектные коды с учетом требований операционной системы и формирует на выходе работоспособное приложение – исполнимый код для конкретной платформы. Исполнимый код это законченная программа, которую можно запустить на любом компьютер, где установлена операционная система, для которой эта программа создавалась. В современных системах программирования имеется еще один компонент – отладчик, который позволяет анализировать работу программы во время ее исполнения. С его помощью можно последовательно выполнять отдельные операторы исходного текста последовательно, наблюдая при этом, как меняются значения различных переменных. В последнее время в программировании (особенно для операционной среды Windows) наметился так называемый визуальный подход. Этот процесс автоматизирован в средах быстрого проектирования. При этом используются готовые визуальные компоненты, свойства и поведение которых настраиваются с помощью
43
специальных редакторов. Таким образом, происходит переход от языков программирования системного уровня к языкам сценариев. Эти языки создавались для различных целей, что обусловило ряд фундаментальных различий между ним. Системные разрабатывались для построения структур данных и алгоритмов “с нуля”, начиная от таких примитивных элементов, как слово памяти компьютера. В отличие от этого, языки описания сценариев создавались для связывания готовых программ. Их применение подразумевает наличие достаточного ассортимента мощных компонентов, которые требуется только объединить друг с другом. Языки системного уровня используют строгий контроль типов данных, что помогает разработчикам приложении справляться со сложными задачами. Языки описания сценариев не используют понятие типа, что упрощает установление связей между компонентами, а также ускоряет разработку прикладных систем. Языки описания сценариев основаны на несколько другом наборе компромиссов, чем языки системного уровня. В них скорость исполнения и строгость контроля типов ставятся в шкале приоритетов на более низкое место, но зато выше цениться производительность труда программиста и повторное использование. Языки системного программирования хорошо подходят для создания компонентов, где основная сложность заключена в реализации алгоритмов и структур данных, тогда как языки описания сценариев лучше приспособлены для построения приложении из готовых компонентов, где сложность состоит в налаживании межкомпонентных связей. Задачи последнего рода получают все большее распространение, так что роль языков описания сценариев будет возрастать. МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ Моделирование - исследование объектов познания на их моделях; построение и изучение моделей реально существующих предметов и явлений (систем, инженерных конструкций, разнообразных процессов) и конструируемых объектов (для определения, уточнения их характеристик, рационализации способов их построения и т. д.). Моделирование как познавательный приём неотделимо от развития знания Появление же первых электронных вычислительных машин (Дж. Нейман, 1947) и формулирование основных принципов кибернетики (Н. Винер, 1948) привели к универсальной значимости новых методов — как в абстрактных областях знания, так и в их приложениях. Моделирование приобрело общенаучный характер и применяется при выполнении разработанных исследований. При моделировании исследование ведётся на модели, воспроизводящей основные характеристики «оригинала». На моделях
44
изучаются процессы, происходящие в оригинале — объекте исследования или разработки. Если модель и моделируемый объект имеют одну и ту же физическую природу, то это физическое моделирование. Явление (система, процесс) может исследоваться и путём опытного изучения каких-либо явления иной физической природы, но такого, что оно описывается теми же математическими соотношениями, что и моделируемое явление. Например, механические и электрические колебания описываются одними и теми же дифференциальными уравнениями, поэтому с помощью механических колебаний можно моделировать электрические и наоборот. Такое «предметноматематическое» моделирование широко применяется для замены изучения одних явлений изучением других явлений, более удобных для лабораторного исследования, в частности потому, что они допускают измерение неизвестных величин. Так, электрическое моделирование позволяет изучать на электрических моделях механические, гидродинамические, акустические и другие явления. Электрическое моделирование лежит в основе аналоговых вычислительных машин. При знаковом моделировании моделями служат знаковые образования какого-либо вида: схемы, графики, чертежи, формулы, графы, слова и предложения. Важнейшим видом знакового моделирования является математическое (логико-математическое) моделирование, осуществляемое средствами языка математики и логики. Знаковые образования и их элементы всегда рассматриваются вместе с определенными преобразованиями, операциями над ними, которые выполняет человек или машина (преобразования математических, логических, химических формул, преобразования состояний элементов цифровой машины, соответствующих знакам машинного языка, и др.). Современная форма «материальной реализации» знакового (прежде всего, математического) моделирования — это моделирование на цифровых электронных вычислительных машинах, универсальных и специализированных. Такие машины — это своего рода «чистые бланки», на которых можно зафиксировать описание любого процесса (явления) в виде его программы. Машина может «воспроизвести» ход моделируемого процесса. Действия со знаками в той или иной мере связаны с пониманием знаковых образований и их преобразований: формулы, математические уравнения и т. п. выражения применяемого при построении модели научного языка определенным образом интерпретируются (истолковываются) в понятиях той предметной области, к которой относится оригинал. Поэтому реальное построение знаковых моделей или их фрагментов может заменяться мысленно-наглядным представлением
45
знаков и (или) операций над ними. Эту разновидность знакового моделирования иногда называется мысленным моделированием. Впрочем, этот термин часто применяют для обозначения «интуитивного» моделирование, не использующего никаких чётко фиксированных знаковых систем, а протекающего на уровне «модельных представлений». Такое моделирование есть непременное условие любого познавательного процесса на его начальной стадии. Моделирование используется вместе с другими общенаучными и специальными методами. Моделирование тесно связано с экспериментом. Изучение какого-либо явления на его модели (при предметном, знаковом моделировании, моделировании на ЭВМ) можно рассматривать как особый вид эксперимента: «модельный эксперимент», отличающийся от обычного («прямого») эксперимента тем, что в процесс познания включается «промежуточное звено» — модель, являющаяся одновременно и средством, и объектом экспериментального исследования, заменяющим изучаемый объект. Модельный эксперимент позволяет изучать такие объекты, прямой эксперимент над которыми затруднён, экономически невыгоден, либо вообще невозможен в силу тех или иных причин. Модель системы должна воспроизводить все подлежащие исследованию отношения и связи внутри объекта, касающиеся взаимоотношений всех элементов или выделяемых групп элементов, рассматриваемых в этом случае как подсистемы. При моделировании сложных систем различают случаи, когда подобие устанавливается для всех элементов, влияющих на изучаемые функции, проявляющиеся как во времени, так и в пространстве (полное подобие), и случаи, когда устанавливается подобие только части процессов или изучаемых функций системы (неполное подобие), например, когда изучается изменение параметров процесса только во времени без рассмотрения соответствующих изменений в пространстве. Разновидностью аналоговых моделей являются аналогофизической модели и цифроаналоговые или гибридные модели, объединяющие в одной установке аналоговую и физическую модели, аналоговую модель и элементы ЭВМ или специализированную ЭВМ. Существуют специализированные аналоговые модели, которые могут работать как в действительном, так и измененном масштабе времени и применяться при быстром прогнозировании процессов, существенном для управления энергосистемой. Аналоговое моделирование применяется для расчётов при таких схемах замещения, для которых нет надобности проводить проверку их физической адекватности реальной системе, но необходимо исследовать
46
влияние изменения отдельных параметров элементов и начальных условий процессов в значительном диапазоне. Разработано математическое моделирование на основе планирования экспериментов. Планирование экспериментов связано с выбором числа и условий проведения опытов, необходимых для решения поставленной задачи с требуемой точностью. Методы планирования экспериментов основаны на идеях многомерной математической статики. Использование математической статики вводит в экспериментирование концепцию случая. Это значит, что эффекты, обусловленные многочисленными переменными, рассматриваются как случайные. Эффективность метода планирования исследований тем выше, чем сложнее изученная система. До проведения опытов определяют цель и задачи исследования. При постановке задачи рекомендуется на первых этапах включать в программу исследования все факторы, влияющие на показатель процесса, а затем провести выбор сильно влияющих факторов. Факторы, которые невозможно учесть в эксперименте, следует стабилизировать на постоянных уровнях. Показатель процесса должен быть однозначным, статически эффективным, характеризоваться числами, иметь ясный физический смысл. Качественные факторы должны меть цифровое обозначение. Планирование экспериментов связано с математическим моделированием процессов. Математическое моделирование процессов с помощью метода планирования экспериментов включает в себя в обобщенном виде следующие основные этапы: - установление факторов (независимых переменных), влияющих на показатель процесса, и выявления общих функциональных связей; - выбор величин факторов в натуральных единицах; - построение планов (выбор планов проведения экспериментов); - проведение экспериментов в соответствии с планом; - определение ошибки экспериментов; - вычисление коэффициентов регрессии полинома, связанного с планом и матрицей планирования; - оценка значимости коэффициента регрессии, адекватности и точности математической модели процесса; - построение математической модели. В зависимости от наличия исходной информации применяется планирование и математическое моделирование первого, второго и высших порядков. Если известно, что между показателем процесса и выбранным фактором наблюдаются близкие и линейные зависимости, то применяется планирование и математическое моделирование первого
47
порядка. Но чаще зависимость показателя процесса от выбранных факторов имеет экстремумы, что вынуждает применять более сложные методы планирования второго и высших порядков. При не полном знании механизма изучаемых явлений и оптимизации сложных процессов применяются сначала простые, а затем в случае выявления экстремальных зависимостей более сложные методы планирования и математического моделирования. В практике проведения экспериментов чаще встречаются случаи, когда наблюдаются нелинейные зависимости. Поэтому на основании анализа ортогональных методов планирования экспериментов Черным А. А. разработана оригинальная методика математического моделирования. Она менее трудоемка, чем ранее предложенные, позволяет проще, при меньшем количестве опытов оптимизировать процессы и выявить более точные математические модели при планировании экспериментов на пяти уровнях независимых переменных (факторов) или, в частных случаях, на четырех, трех уровнях независимых переменных. Можно моделировать многофакторные процессы. Разработанные программы для ЭВМ позволяют не только выявлять математические модели, но и выполнять расчеты по моделям, представлять результаты расчетов в виде графиков, делать выводы по оптимизации, прогнозированию процессов, созданию новых разработок на уровне изобретений. ОСОБЕННОСТИ РАБОТЫ НА ПЕРСОНАЛЬНЫХ ЭВМ Работа на ЭВМ обычно проходит в форме диалога человека с компьютером. Человек просматривает информацию на экране компьютера, указывает на нее мышкой, нажимает клавиши, набирает команды, вводит слова, числа, фразы и т.д. В ответ компьютер выводит свою информацию: сообщения, меню, диаграммы, рисунки, результаты вычислений и обработки данных. Работа ЭВМ основана на использовании программ. Программы для ЭВМ – это форма представления данных и команд, предназначенных для получения определенных результатов или способа функционирования ЭВМ. Совокупность программ для данного типа ЭВМ представляет все многообразие их применений. На персональных компьютерах наиболее часто применяются игры, редакторы текстов, базы данных, информационные системы, электронные таблицы, системы программирования и т.д. Главной среди программ на ЭВМ является операционная система, которая постоянно хранится в долговременной памяти компьютера. Работа
48
ЭВМ начинается с загрузки операционной системы, а все остальные программы запускаются с помощью операционной системы. Операционная система – это главная программа, управляющая работой компьютера в целом. На персональных компьютерах типа IBM PC используются в основном операционные системы MS DOS и Windows. В персональных компьютерах Macintosh применяется операционная система ОS/7. Операционная система MS DOS – это самая простая операционная система для компьютеров IBM PC. Она использовалась на младших моделях IBM PC и может применяться на всех старших современных моделях компьютеров этого типа. Операционная система Windows – наиболее современная и удобная операционная система для старших моделей персональных компьютеров IBM PC. Эта система может использоваться только на компьютерах старших моделей с оперативной памятью более 2 Мбайт и памятью на жестких дисках не менее 80 Мбайт. На персональных компьютерах IBM PC используется несколько версий операционной системы Windows, созданных фирмой Microsoft, Windows 3.1, Windows-95, Windows-98 и Windows-2000, отличающихся своими функциями и возможностями. Основными объектами в любых операционных системах на ЭВМ являются файлы, программы и каталоги. Все программы в ЭВМ представляются отдельными файлами или наборами файлов, хранящихся в определенном каталоге. Файлы – это последовательность записей на машинных носителях – магнитных или оптических дисках, магнитных или перфолентах и т.д. Все данные и программы на ЭВМ записываются в виде файлов или наборов файлов. Все файлы в памяти ЭВМ имеют уникальные имена. Совокупность файлов в памяти ЭВМ объединяется в форме каталогов и подкаталогов. Каждый каталог имеет сое уникальное имя. Имя подкаталога образуется из его собственного имени и имени каталога, в котором он находится. Имена каталогов (оглавлений) записываются большими (прописными) буквами, а имена файлов – малыми (строчными) буквами. В операционных системах MS DOS и Windows имена файлов образуются из латинских букв и цифр с добавлением трехбуквенных окончаний после точки. Для записи окончаний в этих операционных системах приняты правила: .exe – программа, готовая к выполнению; .com – программа, готовая к выполнению; .bat – командный файл операционной системы;
49
.txt – текстовый файл; .doc – текстовый файл. Работа с любыми операционными системами – это в основном работа над каталогами файлов и программ, размещенных на магнитных и оптических дисках. Эта работа состоит в просмотре каталогов и подкаталогов, копировании файлов и запуске тех или иных программ. В любой операционной системе работа с ЭВМ происходит в основном с помощью менеджера программ и файлов. Эта программа позволяет человеку в диалоге с компьютером просматривать каталоги программ и файлов во внешней памяти. Запуск программ на персональных ЭВМ обычно проводится перемещением курсора на экране с помощью клавиш-стрелок или Машки на имя программы в каталоге, подлежащей выполнению, а затем – нажатием клавиши ввода Enter на клавиатуре либо нажатием клавиши на мышке. Для установки новых программ на ЭВМ они должны быть предварительно записаны на оптическом или гибких дисках либо получены по электронной почте через Интернет. Для этого диск с новыми программами должен быть установлен в соответствующий дисковод. Для перезаписи программ и файлов необходимо выявить каталог, где они записаны, далее указать или создать каталог, куда они должны быть переписаны и только после этого указать команду «запись» и нажать клавишу Enter либо клавишу на мышке. В любом случае до записи новых программ на жесткие диски необходимо проверить отсутствие вирусов на этих дисках или файлах. При обнаружении вирусов их необходимо удалить с помощью антивирусных программ. Компьютерные вирусы – это специальные саморазмножающиеся программы. Эти программы могут испортить или уничтожить программы и файлы, хранящиеся в памяти компьютера. Заражение компьютерными вирусами происходит при копировании файлов с помощью дискет или при их передаче по сети Интернет. Наиболее опасные вирусы могут испортить или уничтожить всю информацию в ЭВМ или сделать неработоспособным сам компьютер либо даже сеть ЭВМ. Для предотвращения таких последствий предпринимаются специальные меры и используются специальные компьютерные программы. Для защиты от вирусов используются специальные антивирусные программы, которые необходимо устанавливать на ЭВМ и периодически обновлять. Работа антивирусных программ заключается в диагностике и удалении компьютерных вирусов в файлах и программах на ЭВМ.
50
Для надежной работы компьютеров и предотвращения потерь информации на дисках надо придерживаться следующих правил «компьютерной гигиены»: 1) при вводе чужих дисков в свою машину первым делом проверьте их на вирусы; 2) после работы на чужой машине сразу же проверьте свои диски на вирусы; 3) не открывайте файлы, полученные по почте, без проверки их на вирусы; 4) не запускайте программы, полученные по Интернет, без их проверки на вирусы. Для борьбы с компьютерными вирусами постоянно обновляйте свои антивирусные программы. Есть «программисты», создающие компьютерные вирусы. Они постоянно ищут средства для преодоления защиты от вирусов и проникновения в чужие компьютеры, хотя эта деятельность преследуется по закону. Кроме защиты от вирусов на любых ЭВМ может быть предусмотрена также защита от несанкционированного доступа к ЭВМ и хранящимся в них данным. Простейшим средством для этого является введение паролей для доступа к ЭВМ или определенным сегментам ее памяти, а также ограничение доступа к ЭВМ посторонним людям. Подготовка и редактирование текстов – это одно из наиболее частых применений персональных компьютеров. Редакторы текстов на ЭВМ – это специальные программы, позволяющие вводить, искать, редактировать и сохранять различные тексты на ЭВМ. Редакторы текстов на ЭВМ – это наиболее удобное средство для подготовки различного рода документов и создания архивов документов на ЭВМ. Документом считается информация, зафиксированная на материальном носителе, имеющем реквизиты, позволяющие его идентифицировать. К числу реквизитов документа относится фамилия автора (исполнителя) и дата его создания (подписания), а также входящая или исходящая регистрация при размещении его в архивах. На персональных компьютерах IBM PC наибольшее распространение получили редакторы текстов Word и Лексикон. Word – это лучший редактор текстов для операционной системы Windows. Лексикон – это один из лучших редакторов текстов для компьютеров с операционной системой MS DOS. В ЭВМ с накопителями на жестких магнитных дисках могут храниться и редактироваться книги. Одна страница текста, имеющая 30
51
строк по 60 знаков в строке, требует для хранения 1800 байт ≈1,76 Кбайт памяти. Книга из 100 страниц указанного размера занимает около 176 Кбайт на магнитных дисках. Соответственно, на дисках 200 Мбайт может храниться более 100 таких книг. Набор текстов на клавиатуре компьютера проводится так же, как и на пишущих машинках. Но при этом тексты выводятся не на бумагу, а на экран дисплея, на котором и производятся все исправления. Если текст большой, то на экране будет видна только его часть, а весь текст будет храниться в памяти ЭВМ. Значок ⇐ для указания на экране места исправления символа или слова называется курсором. Перемещение курсора по экрану проводится с помощью мышки или клавиш-стрелок. Для исправления букв, слов или фраз курсор подводят к их началу. Исправление в тексте на персональных компьютерах можно вносить неоднократно. Вставка или замена символов и слов проводится набором их на клавиатуре. Удаление символов и слов выполняется нажатием клавиши Del или Bs. Для переключения режима вставка/замена нажимается Ins. Удаление строк и вставка новых строк проводятся выделением их на экране с последующим нажатием клавиши Del. Используя выделение фрагментов текстов на экране компьютера, их можно переносить из одного места текста в другое. Можно выделять их курсивом, подчеркиванием, изменением толщины или вида шрифта. В многооконных редакторах фрагменты можно переносить из одного текста в другой. Для этого на экране одновременно открывается два или более текстов сразу в нескольких окнах. Поиск текстов на магнитных дисках также проводится через основное меню указанием на слово «файл» (file), а затем на режим «открытие» (open). Результатом будет появление оглавления с именами файлов и других каталогов, на которые можно указывать с помощью мышки или клавиш-стрелок. Нажатие клавиши Enter приведет к появлению текста на экране ЭВМ. Запись текстов на диски в редакторах проводят обращением к основному меню, указав на слово «файл» (file). Далее в появившемся на экране подменю нужно указать вид операции – «запись» (write), а затем имя файла, под которым текст записывается на магнитные диски, после чего нажимается клавиша ввода Enter. Во многих редакторах можно создавать сложные тексты, вставляя различные таблицы, диаграммы, рисунки, фотографии. С помощью этих средств можно создавать документы, отчеты, сохраняя их на магнитных дисках и печатая в необходимом количестве экземпляров.
52
Возможности современных текстовых редакторов на персональных ЭВМ таковы, что с их помощью можно выполнять не только редакционную подготовку документов, отчетов, но и издательскую подготовку книг. На ЭВМ можно создавать электронные книги. Копирование распространение электронных книг подчиняется тем же законам авторского права, как и создание, и распространение бумажных книг. Авторские права на произведения состоят в следующем: 1) право на имя – в произведении должно присутствовать имя автора и соответствующий знак «копирайта»; 2) право на изменения – только автор может вносить изменения в произведение в любом его воплощении; 3) имущественные права – автор является собственником произведения и его вариаций; 4) исключительные права – созданное произведение является неотчуждаемой, интеллектуальной собственностью автора. Автором считается лицо, творческим трудом которого создано произведение. Автор имеет право требовать указания своей фамилии на всех экземплярах (копиях) своего произведения. В соответствии с законом об авторских правах только автор может вносить изменения при модификации произведения. Защита прав собственности на произведение фиксируется знаком © (copyriht – права на копирование) с указанием фамилии или псевдонима автора. Включение в произведение знака © означает, что никто не имеет права копировать произведение без заключения письменного договора с его автором (авторами). Согласно российскому и международному праву на электронные книги, учебники, базы данных и программы для ЭВМ распространяются те же авторские права, что и на обычные литературные и научные произведения. Использование программ, без данных, электронных книг и учебников в коммерческих целях возможно только при заключении договоров с владельцами авторских прав. Нарушители авторских прав обязаны возмещать ущерб авторам произведений. Электронные учебники – это компьютерные программы, содержащие учебные тексты и тесты. Тесты – это контрольные вопросы. Тесты в электронных учебниках отличаются тем, что ответы на них могут проверяться ЭВМ непосредственно в диалоге с учащимися.
53
ОПЕРАТОРЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ БЕЙСИК PRINT (печатать) Вывод данных на экран дисплея. Форматы: PRINT [][;] ? [][;] Выражения в списке отделяются друг от друга запятой, точкой с запятой или пробелом (пробелами). Точка с запятой и пробел (пробелы) дают одинаковый результат (между цифрами пробелы не воспринимаются). Если опущен, выводится пустая строка. ? используется как сокращенная запись слова PRINT. DATA (данные) DATA [,]… Операторы DATA могут быть размещены в любом месте программы; все данные в DATA – непрерывный список для операторов READ. Типы констант в READ и DATA должны совпадать. READ (читать) Присваивание переменным значений, заданных в операторах DATA. Формат: READ [,]… Операторы READ читают подряд данные из операторов DATA. RESTORE (восстановить) Переустанавливает список данных, определенных операторами DATA, для повторного или выборочного чтения. Формат: RESTORE [] где - номер строки, содержащий оператор DATA, куда будет обращаться следующий оператор READ. Если номер строки не задан, то следующий оператор READ будет обращаться к первому элементу первого оператора DATA программы. INPUT (ввести) Ввод данных с клавиатуры во время выполнения программы или в командном режиме. Формат: INPUT [;] [«подсказка»;] [,]… Текст подсказки поясняет, какие данные требуется ввести. При выполнении оператора INPUT на экране появляется ?, и программа ожидает ввода данных с клавиатуры. Если после подсказки использовать вместо , то ? не появляется. Вводимые данные следует разделять на экране запятыми. Тип вводимого элемента данных должен соответствовать типу переменной в перечне INPUT. Строки символов могут не заключаться в кавычки, если они не содержат запятых, начальных или конечных
54
пробелов. Если в ответ на запрос оператора INPUT введено слишком мало или слишком много элементов данных, или не согласуются типы данных, то выдается сообщение об ошибке, после чего необходимо повторить весь ввод. Если требуется единственная переменная, то нажатие клавиши <Enter> без ввода данных на экран (пустой ввод) приводит к тому, что числовая переменная принимает значение 0 , а строковая – пустой строки. Если после слова INPUT стоит , то нажатие клавиши ввода <Enter> не переводит курсор в начало следующей строки. LINE INPUT (ввод строки) Ввод строки символов с клавиатуры. Формат: LINE INPUT [;] [«подсказка»,] Оператор LINE INPUT позволяет вводить с клавиатуры строки с любыми символами. Знак ? на экране не появляется Оператор присваивания LET (пусть, допустим) Присваивание переменной значения выражения. Формат: [LET] = Слово LET обычно опускается. PRINT USING (печать с использованием шаблона) Вывод данных на экран в указанном формате. Формат: PRINT USING ; [;] для вывода строки символов может быть одним из следующих: “!” – задает вывод только первого символа строки; “\\” – задает вывод 2+n первых символов строки. Если не указано ни одного пробела (“\\”), то выводятся два символа; “&” – задает вывод всей строки символов. Формат для вывода числа задается с помощью шаблона, который описывает каждую позицию, занимаемую числом в выводимой строке. Шаблон составляется из символов: # - описывает цифровую позицию числа. Цифровая позиция всегда присутствует в выводной строке и может содержать цифру или пробел. Пробелы появляются в крайних левых позициях, если в выводимом числе меньше цифр, чем определено цифровых позиций; . - описывает местоположение десятичной точки в выводном формате числа; + - описывает знаковую позицию числа и может быть первым или последним символом в шаблоне. При выводе числа в эту позицию будет вставлен знак “+” или “-“;
55
^^^^ - определяют экспоненциальный формат представления числа при выводе и могут быть указаны в шаблоне только после цифровых позиций. Если выводимое число не вмещается в поле, определенное шаблоном, перед числом в выводную строку будет вставлен знак “%”. Разделители в конце оператора выполняют ту же роль, что и в операторе PRINT. WRITE (писать) Вывод данных на экран дисплея. Формат: WRITE Выражения в списке отделяются друг от друга запятой или точкой с запятой. Оператор WRITE выполняется аналогично оператору PRINT, но есть отличия: при выводе данные разделяются запятыми; строки символов заключаются в кавычки; перед положительным числом и после чисел не ставится пробел. LPRINT, LPRINT USING Вывод данных на принтер. Форматы: LPRINT [] [;] LPRINT USING ; [;] Операторы аналогичны операторам PRINT и PRINT USING. Оператор MID$ (MIDDL – середина) Замена заданной части строки символов другой строкой. Формат: MID$ (, n [,m]) = где n = 1…255, m = 0…255. Оператор позволяет выполнить замену указанной подстроки в значении . Первые m символов строки, заданной , будут замещать m символов в значении , начиная с позиции n. Если m опущено, пересылается вся строка. Оператор не изменяет длину . SWAP (обмен) Обмен значениями двух переменных. Формат: SWAP , В результате выполнения оператора SWAP получает значение , а - значение . RANDOMIZE (RANDOM – случайный) Переустановка базы генерации случайных чисел. Формат:
56
RANDOMIZE [n] где n – целочисленное выражение, значение которого используется в качестве базы генерации и равно –32768 … +32767. База генерации предназначена для функции RND [(x)], где х – фиктивный параметр. KEY (клавиша) Установка или отображение значений функциональных клавиш F1…F10. Форматы: KEY n, KEY LIST KEY ON KEY OFF Здесь n – номер функциональной клавиши; строковое выражение до 15 символов, значение которого назначается функциональной клавише; LIST – вывод на экран полных значений всех десяти функциональных клавиш; OFF – отменяет вывод на 25-ю строку экрана значений функциональных клавиш, но не отменяет эти значения; ON – выводит на 25-ю строку экрана значения функциональных клавиш. При запуске Бейсика автоматически выполняется оператор KEY ON. Если значение функциональной клавиши заканчивается символом CHR$ (13) (<Enter>), то после нажатия функциональной клавиши нет необходимости нажимать <Enter> - соответствующая команда выполняется сразу. Операторы переадресации управления GOTO (перейти к …) Переход к заданной строке программы (безусловный переход). Формат: GOTO Оператор передает управление строке, номер которой указан в операторе. Если указывает на невыполняемый оператор (REM, DATA), то выполнение программы продолжается с первого последующего выполняемого оператора. Оператор GOTO удобно исполнить также в режиме прямого выполнения команд, например, для запуска программы с заданной строки без потери значений переменных. GOSUB, RETURN (программа … возврат) Переход к программе и возврат из нее. Формат: GOSUB RETURN Оператор GOSUB передает управление заданной подпрограмме, выполнение которой завершается оператором RETURN. По оператору RETURN без осуществляется возврат к оператору,
57
следующему за оператором GOSUB. Вход в подпрограмму возможен в разных точках до оператора RETURN. Подпрограммы могут располагаться в любом месте программы, но следует позаботиться об их обходе оператором GOTO. Вызовы подпрограммы могут быть вложены в другие подпрограммы, причем вложенность ограничена только объемом свободной памяти. ON … GOTO, ON … GOSUB (при … перейти к) Передача управления в зависимости от значения выражения. Форматы: ON GOTO … [,]… ON GOSUB … [,]… При необходимости = 0…255 округляются до целого. Управление передается в ту строку программы, порядковый номер которой в списке оператора равен значению числового выражения. Если, например, L=3, то оператору 50 ON L GOTO 100,150, 300, 480 управление передается строке 300, так как она третья в списке. В операторе ON … GOSUB каждый номер строки должен указывать первую строку подпрограммы. Завершающий подпрограмму оператор RETURN без возвращает управление в последующий за оператором ON … GOSUB оператор программы. Если значение равно 0 или превышает число указанных в списке номеров строк, управление передается следующему оператору. IF (если) Оператор условного перехода – управление ходом выполнения программы в зависимости от результата выполнения выражения. Форматы: IF [,] THEN [ELSE ] (если… тогда… в противном случае…) IF [,] GOTO [ [,] ELSE ] (если… то идти к … в противном случае…) Здесь - оператор либо последовательность операторов Бейсика, разделенных двоеточиями, или номер строки, к которой должен быть осуществлен переход. Результат выполнения оператора IF зависит от значения указанного в нем выражения. Если значение «истина», то выполняется действие, определенное во за THEN, или GOTO. Если значение выражения
58
«ложь», выполняется действие, определенное за ELSE. Если ELSE отсутствует, выполняется следующая строка программы (именно следующая строка, а не следующий оператор данной строки; дело в том, что все операторы данной строки подчиняются одному и тому же IF … THEN). Операторы IF могут быть вложенными, при этом каждый ELSE объединяется с ближайшим THEN. Операторы циклов FOR… TO… STEP… NEXT (для… до… с шагом… следующий) Выполнение последовательностей инструкций в цикле. Форматы: FOR = x TO y [STEP z] … NEXT … [] [,]… (для … от … до … с шагом … … следующее значение счетчика или счетчиков) Здесь: - имя целочисленной переменной или переменной с простой точностью, которая используется в качестве счетчика цикла; х – числовое выражение, начальное значение счетчика; у – конечное значение счетчика; z – значение шага приращения счетчика: , образующие тело цикла, выполняются до встречи с NEXT. После этого счетчик цикла увеличивается на z и полученное значение сравнивается с у. Если счетчик превышает у, то цикл заканчивается и управление передается оператору, следующему за NEXT. В противном случае снова выполняются и т.д. Если STEP опущен, то по умолчанию z=1. Когда z= 1, то направлен по у; , - радианная мера дуг в начальной и конечной точках неполной окружности (верхняя полуокружность 0, 3.14, правая полуокружность 4.71, 1.57 и т.д.); если углы отрицательные, то они воспринимаются как положительные, но концы дуги соединяются с центром радиусами. PAINT (раскраска областей экрана) Область образуется замкнутой кривой заданного цвета вокруг заданной точки с координатами х, у. Формат: PAINT (x, y) [, [] [, []] где = 0, 1, 2, 3 – цвет раскраски; по умолчанию 3; цвет ограничивающей кривой; по умолчанию = . Операторы GET и PUT GET читает информацию о цветах всех точек заданной прямоугольной области экрана и помещает ее в числовой массив. PUT воспроизводит на экране изображение, хранящееся в числовом массиве. Формат оператора GET: GET (х1, у1) – (х2, у2), где (х1, у1), (х2, у2) – координаты вершин прямоугольной области; - числовой массив, где хранится информация. Объем памяти в байтах, отведенный для массива, должен быть не меньше, чем 4+INT((m*A+7)/8*n, где n, m – длины горизонтальной и вертикальной сторон прямоугольника, выраженные числом точек экрана; А=2 при средней разрешающей способности и А=1 при высокой разрешающей способности. ЯЗЫК ПРОГРАММИРОВАНИЯ ПАСКАЛЬ Язык Паскаль был одним языков, созданных для обучения и получивших популярность, как и новичков, так и в серьёзном программировании. При его создании успешно решена задача сочетания сравнительной простоты языка с потенциальной широтой области его применений. В отличии от своих предшественников (в частности Бейсика) Паскаль допускает разнообразные типы составных объектов: запись упорядоченный набор про именованных объектов произвольных типов; файл - упорядоченный набор однородных данных, размещаемых во внешней памяти; множество - набор элементов одного типа, кодируемых
70
отрезками натурального ряда или произвольными именами. В Паскале имеется оператор варианта, т. е. выбора одной из нескольких альтернативных последовательностей(ветвей) операторов по вычисляемому номеру ветви. Самые популярные системы программирования на языке – Object Pascal, Borland Pascal (Turbo Pascal) и TopSpeed Pascal. На основе Паскаля была разработана одна из наиболее популярных систем быстрой разработки программ (Rapid Application Development, RAD) - визуальная система программирования Воrlаnd Delphi. Программа на Паскаль, также как и в других языках программирования реализует алгоритм решения задачи. Она обьединяет последовательность действий, выполняемых над определенными типами данными с помощью операций, определяемых возможностями языка. Язык Паскаль является универсальным языком, т.е. на нем можно писать вычислительные, графические и системные программы, программы по обработке больших блоков данных(типа СУБД). Программа на Паскаль состоит из строк. Максимальная длина строки – 127 символов. Набор текста программы осуществляется обычно с помощью встроенного редактора текстов системы программирования Turbo Pascal (или другой версии этой системы). Набирая текст программы, программист имеет право произвольно располагать строки на экране. Обязательным является только порядок следования частей программы и правильность их записи. Структура программы: Program (input,output); -заголовок Uses ; -список подключаемых библиотечных модулей Label …; -раздел описания меток Const …; - раздел описания констант Type …; - раздел описания типов данных Var …; - раздел описания переменных Procedure ; - описание процедур и запись их операторов ; Function ; - описание функций ; Begin End. Любой раздел, кроме раздела операторов (основная часть программы), может отсутствовать. Раздел операторов в основной программе или подпрограмме всегда начинается зарезервированным словом Begin, далее следуют операторы языка, отделенные “;”. Завершает
71
раздел зарезервированное слово End и точка “.”. В Паскаль конструкция Begin-End называется операторными скобками. Комментарии помещаются в фигурные скобки { }и могут размещаться в любом месте программы. Как и другие языки программирования Паскаль интерпретирует данные как константы или переменные. В программе константы или переменные определяются идентификаторами (именами), по которым к ним можно обращаться для получения текущих значений. Константами называются элементы данных, значения которых установлены в описательной части программы и в процессе выполнения программы не изменяются. Для определения значения констант служит зарезервированное слово Const. Например, Const Max=1000; Str1=’Иванов’; Переменные в отличие от констант могут менять свои значения в процессе выполнения программы. Каждая переменная или константа принадлежат к определенному типу данных. Тип переменных (в отличии от констант) должен быть описан перед тем, как с переменными будут выполняться какие-либо действия. Например, Var I,j:integer; A:array [1..10] of real; Каждый элемент данных относится к одному из конечного множества типов, допустимых для конкретного языка программирования. Тип - это множество значений, которые могут принимать объекты программы, и совокупность операций, допустимых над этими значениями. Все типы данных разделяются на две группы: скалярные (простые) и структурированные (составные). Простые типы данных: - Целочисленные типы (Shortint, Integer, LongInt, Byte, Word) данных представляют собой значения, которые могут использоваться в арифметических выражениях и занимать память от 1 до 4 байт. - Вещественные типы (Single, Real, Double, Extended, Comp) данных представляют собой вещественные значения, которые могут использоваться в арифметических выражениях и занимать память от 4 до 10 байт. (Самый большой объем памяти – 10 байт - занимают данные вещественного типа повышенной точности : Extended). Паскаль допускает представление вещественных значений в виде как с плавающей, так и с фиксированной точкой. - Символьный (char) тип определяется множеством значений кодовой таблицы ASCII. Для переменной символьного типа требуется 1 байт.
72
- Логический тип (Boolean, ByteBool, WordBool, LongBool) представлен двумя значениями: (истина) и (ложь). Он широко применяется в логических выражениях и выражениях отношения. Типы ByteBool, WordBool, LongBool являются нововведением Turbo Pascal 7.0, они были введены для обеспечения совместимости создаваемых программ в Windows. - Указательный тип (Pointer) – значениями переменных и констант данного типа являются адреса оперативной памяти, состоящие из адреса сегмента и смещения В Паскаль существуют типы данных, определяемые пользователем. Это перечислимый тип (когда непосредственно, в разделе описания типов, заранее записываются все значения для переменных этого типа) и интервальный (когда задаются границы диапазона значений для данной переменной), указательный тип (кроме Pointer), структурированные типы и процедурный тип. Перечислимый тип данных задается непосредственно перечислением всех значений, которые может принимать переменная данного типа. При описании отдельные значения указываются через запятую, а весь список заключается в круглые скобки. Например, Var Season: (winter,spring,summer,autum ); Temp: (23,24,25,26); Интервальный тип позволяет задавать две константы,определяющие границы диапазона значений для каждой переменной.Обе константы должны принадлежать одному и тому же стандартному типу (кроме real). Например, Var S:1..30; Сh:’a’..’f’; Указательный типы – их значениями являются адреса памяти. В отличие от стандартного указательного типа Pointer, пользовательский тип определяет множество значений, которые указывают на динамические переменные опеределенного типа , называемого базовым типом. Указатель на какой-либо тип может быть описан до обьявления самого типа: Type PtStack=^Stack; Stack=array[1..40] of real; Процедурный тип позволяет обьявлять переменные, которым допускается присваивание имен процедур, функций и методов, а ткже передавать такие переменные и имена в качестве параметров. Описание процедурных типов имеет такой же синтаксис, как и обьявление процедур и функций: Type Tproc1=procedure (var x,y:real); Tproc2=function ( x:real):real;
73
Составные типы данных определяют упорядоченную совокупность скалярных переменных и характеризуются типом своих компонентов. К структурированным типам данных в Turbo Pascal относят: тип-массив (array), тип-множество (set), тип-запись (record), файловый тип (file), объектный тип (object), строковый тип (string); Строковый тип: Строка- в общем случае это последовательность символов. Строка представляет собой особую форму одномерного массива символов, которая имеет существенное отличие. Массив символов имеет фиксированную длину (количество элементов), которая определяется при описании. Строка имеет две разновидности длины: Общую длину строки, которая характеризует размер памяти, выделяемый строке при описании. Текущую длину строки (всегда меньше или равную общей длине), которая показывает количество смысловых символов строки в каждый конкретный момент времени. Для определения данных строкового типа в Turbo Pascal 7.0 введены стандартные типы String и PChar. В строках типа String текущая длина строки указывается в нулевом (то есть имеющем индекс 0) элементе строки. Максимальная текущая длина строки может быть не более 255 символов. Например, Const Adres=’ул.Королева,2’; Type FileName=string[150]; Var St1: FileName; St2,St3:string[10]; В Паскаль существует ряд встроенных процедур и функций для работы со строками типа String: Delete, Str, Val, Insert, Copy, Concat, Length, Pos, UpCase. Тип PChar поддерживает формат представления строк, признаком конца строки которых служит символ с кодом 0 (нуль) и которые называются строками с завершающим нулем, или ASCIIZ-строками. Тип-массив (array): Массив – это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. Элементами массива могут быть данные любого типа, включая структурированный тип. Описывается в виде: Type Имя =array [тип индекса] of тип компонентов; При выполнении программы к каждому элементу массива можно обратиться используя его индекс в массиве.
74
Например, М=array [1..4] of integer; - массив из четырех целых чисел. M[1], M[2], M[3], M[4] – элементы массива М. Тип-множество (set): Множество – набор взаимосвязанных по какому-либо признаку (или группе признаков) элементов, которые можно рассматривать как единое целое. Элементы множества должны принадлежать к одному и тому же типу данных, которые называют базовым типом множества. Type Имя =set of “элемент1,..элементN”; Например, А=set of (3,5,7,11,13) - множество простых чисел. Тип-запись (record): Запись- тип данных, состоящий из фиксированного числа компонентов одного или нескольких типов. Определение типа записи начинается идентификатором record и заканчивается зарезервированным словом end. Между ними заключен список компонентов, называемых полями, с указанием идентификаторов полей и типа каждого поля: Type имя = record Например, Mash=record имя поля1: тип компонента; Nomer:integer; имя поля2: тип компонента; Marka:string[20]; … year:integer; end; end; Файловый тип (file): Файлы классифицируются по двум признакам: по типу (логическая структура) и по методу доступа к элементам файла. В Паскале существует три класса файлов по типу – типизированные текстовые, нетипизированные. По методу доступа они делятся на файлы последовательного доступа и прямого доступа. К типизированным файлам относятся файлы строго определенного типа (их иногда рассматривают как последовательность записей определенного типа).Стандартное задание в программе такой файловой переменной осуществляется следующим образом: Type FileRec=record … end; var F:file of FileRec; Текстовый файл рассматривается как последовательность символов, разбитая на строки. Каждая строка завершается символом конца строки. На практике это два символа: перевод строки Chr(13) и возврат каретки Chr(10). Нетипизированный файл рассматривается в Pascal как набор символов или
75
байтов. Представление Char или Byte не играет роли, а важно лишь с точки зрения обьема занимаемого данными. Нетипизированный файл является файлом прямого доступа, что говорит о возможности одновременного использования операций чтения записи. При обьявлении нетипизированного файла указывается только ключевое слово file: Var F: file; Объектный тип (object): Обьект – тип данных ставший основой обьектно-ориентированного программирования на языке Паскаль. Он похож на запись, так как содержит данные различных типов в качестве полей, и отличается тем, что также содержит методы работы с этими данными в рамках обьекта. Методы работы с данными обьекта называются правилами. Например, Type Coordinate=object обьект с именем Coordinate X,Y:byte; X,Y - данные, входящие в обьект Procedure Init(Xinit,Yinit:byte); метод инициализации данных Function GetX:byte; метод получение значения X Function GetY:byte; метод получение значения Y End; Операции: - Для арифметических операций используют обычные знаки +,-,*, /-деление, ^-возведение в степень, div- целочисленное деление, mod- остаток от деления. - Операторы отношений: < - больше,> - меньше,= - меньше или равно, - неравно - Логические отношения :AND (и), OR (или), NOT, XOR (логическое исключающее или). - Конкатенация – ‘+’ (слияние двух строк) - Операции над множествами: +-обьединение, - разность, * пересечение, in- принадлежность,= является надмножеством, неравно. Составной оператор представляет собой группу из произвольного числа операторов, отделенных друг от друга “;” и ограниченную операторными скобками Begin и End. Например, Begin Read (B); A:=B+0.75; Write (A); End;
76
Оператор присваивания предписывает выполнить выражение, заданное в его правой части, и присвоить результат переменной, имя которой расположено в левой части. Например, A:=В+0.5. Оператор безусловного перехода (goto). Применяется в случаях, когда после выполнения некоторого оператора надо выполнить не следующий по порядку, а другой, отмеченный меткой. Тогда в программе, перед оператором к которому нужно перейти ставится один или несколько символов (метка, которая должна быть описана в разделе описания меток). Процедура чтения Read и Readln обеспечивает ввод данных (чисел, символов, строк и т.д.) в программу во время её работы. Процедура записи Write и Writeln обеспечивает вывод данных (чисел, символов, строк и т.д.) из программы на экран, принтер или во внешний файл. Операторы Readln и Writeln осуществляют соответственно ввод и вывод с пропуском строки. Условные операторы предназначены для изменения порядка выполнения инструкций программы, в соответствии с некоторым условием. 1.Оператор условия IF. Он может принимать одну из следующих форм: - IF условие THEN оператор ; (неполная форма) Условие задаётся переменной и её соотношением с некоторой константой или значением выражения. Если условие выполняется , то будет выполнен указанный оператор. - IF условие THEN оператор1 ELSE оператор2; (полная форма) Добавление к конструкции служебного слова ELSE позволяет выполнить определенные действия в случае, когда условие не выполняются. 2.Операторы цикла используется для повторения группы операторов определенное число раз. - Оператор цикла FOR..DO. FOR переменная цикла:= начальное значениеТОконечное значение DO оператор; Переменная цикла – всегда целого типа, указывает сколько раз должны повторятся операторы. Этот цикл будет повторен фиксированное число раз, причем первый раз с начальным значение переменной цикла, а в последний с конечным её значением. Пример, FOR I:=1 TO 3 DO I:=I+0.5 - Оператор цикла REPEAT..UNTIL (с проверкой условия в конце цикла). Применяется тогда, когда группа операторов должна выполнятся до тех
77
пор, пока не выполнится некоторое условие. REPEAT группа операторов UNTIL условие ; - Оператор цикла WHILE..DO (с проверкой условия в начале цикла). WHILE условие DO группа операторов; Этот оператор выполняется так: проверяется условие, и если оно истинно, то выполняется оператор (или несколько операторов). 3.Оператор выбора case позволяет сделать выбор из произвольного числа вариантов. Для этого используется переключатель, вычисленное значение которого определяет какой из операторов должен быть выполнен. Если ни одно из значений не верно, будет выполнен оператор следующий за служебным словом else. case переключатель of список1:оператор1; список2:оператор2; … else оператор; end; В языке Паскаль для организации подпрограмм используются процедуры и функции. Процедура - независимая часть программы, предназначенная для выполнения определенных действий. Функция аналогична процедуре, но имеет два отличия: она возвращает в программу некоторый результат и может использоваться как часть выражения. Они разделяются на встроенные (стандартные) и пользовательские (создаваемые программистом) процедуры и функции. Встроенные (стандартные) процедуры и функции являются частью языка и могут вызываться по имени без предварительного определения в разделе описаний программы. Процедуры и функции пользователя организовываются самим программистом в соответствии с синтаксисом языка и их предварительное описание (перед использованием) в тексте программы обязательно. Процедуры состоят из группы операторов, реализующих некоторую часть задачи и вызываемых по имени при необходимости в любом месте программы. Procedure {формальные параметры}; “раздел описаний” Begin End; Описание процедуры включает заголовок - и тело процедуры -. Заголовок состоит из зарезервированного слова Procedure , идентификатора (имени) процедуры и необязательного
78
списка формальных параметров, с указанием типа каждого параметра. Например, Procedure Korrect; (процедура без формальных параметров) Procedure Sort (a:integer); (а – формальный параметр) Имя процедуры – идентификатор, уникальный в пределах конкретной программы. Тело процедуры представляет собой блок, по структуре аналогичный блоку обычной программы. Раздел операторов всегда начинается зарезервированным словом Begin, далее следуют операторы,отделенные “;”. Завершает раздел зарезервированное слово End и точка “;”. Для обращения к процедуре используется оператор вызова процедуры. Он состоит из идентификатора (имени) процедуры и списка фактических параметров, отделенных друг от друга запятыми и заключенных в скобки. Имя процедуры (список фактических параметров); Функция, определяемая в программе, состоит из заголовка и тела функции. Заголовок содержит зарезервированное слово Function, идентификатор (имя) функции и необязательный список формальных параметров с указанием типа каждого параметра а также тип возвращаемого функцией значения: Function имя (формальные параметры): тип результата; Например: Function Prov(x,y,t:integer):integer; Function Logic:boolean; Имя функции - уникальный в пределах программы идентификатор. Возвращаемый результат может иметь любой скалярный тип. Тело функции представляет собой блок, по структуре аналогичный блоку обычной программы: Function имя (формальные параметры):тип результата; раздел описаний begin раздел операторов end; В разделе операторов должен находиться по крайней мере один оператор, присваивающий функции значение. Если таких присваиваний несколько, то результатом выполнения функции будет значение последнего оператора присваивания указанного в теле функции. Обращение к функции осуществляется по имени с необязательным указанием списка аргументов. Каждый аргумент должен соответствовать формальным параметрам, указанным в заголовке, и иметь тот же тип. Далее приведены примеры программ. Первая программа проверяет принадлежат ли два адреса одному городу и
79
одной улице. Используется переменная типа запись с 4 полями: город, улица, дом, квартира. Program test(input,output); Type adress=record city:array [1..16] of char; street:array [1..16] of char; number:integer; flat:integer; end; Var adr1,adr2:adress; Begin {ввод данных} read(adr1.city,adr1.street, adr2.city,adr2.street); if (adr1.city=adr2.city) and (adr1.street=adr2.street) then write(‘город и улица совпадают’); else(‘город и улица несовпадают’); End. Во второй программе вычисляется наименьшее общее кратное двух чисел А и В. Главная программа описывает массив чисел С, вводит исходные данные ,затем обращается к функции для вычисления НОК(наименьшего общего кратного). Которая вычисляет нужное значение используя формулу: НОК(А,В)=A*B/ HOD(A,B) где, обращается к другой функции вычисления НОД (наибольшего общего делителя). Program test2(input,output); Const N = 5; Var С: array[1..5] of integer; A,B:integer; function HOК (A, В:integer):integer; begin HOK:=A*B/ HOD(A,B); end; function НОD(А, В:integer):integer; var X,Y:integer; begin X:= A; Y: = В;
80
1:IF X = Y THEN HOD:=X; IF X > Y THEN begin X:= X – Y;goto 1; end; IF Y > X THEN begin Y:= Y – X;goto 1; end; end; Begin FOR i= 1 ТО N READ (C[i]); A:= С ([l]) FOR i = 1 TO N–1 begin B:=С[i + 1]; A:= HOK(A,B); end; writeln ("HOK="; A); end.
81
ОСНОВНЫЕ ЭТАПЫ ПОДГОТОВКИ К РЕШЕНИЮ ЗАДАЧ НА ЭВМ Для решения задач на ЭВМ информация подвергается арифметической и логической обработке. Непосредственному решению задач на ЭВМ предшествует подготовительная работа, включающая следующие основные этапы: постановка и математическое описание задачи; выбор метода ее решения; разработка алгоритма решения задачи на ЭВМ и анализ полученных результатов. Вначале осуществляется постановка задачи, подлежащей решению на ЭВМ. На этой стадии определяются состав и характер исходных данных, устанавливаются требуемая форма исходных результатов и условия, которым они должны удовлетворять, выбирается общий подход к решению, осуществляется разбиение задачи на подзадачи, определяется последовательность их решения. Постановка задачи завершается словесным описанием основных характеристик и особенностей решаемой задачи. Затем необходимо дать математическое описание задачи, в результате чего постановка задачи становится формализованной, приобретает четкость и однозначное толкование. За математической постановкой задачи должен быть выбран метод ее решения. Этот метод устанавливает зависимость искомых результатов от исходных данных и реализуется путем разбиения вычислительного процесса на последовательность элементарных арифметических и логических операций, выполняемых в ЭВМ. Современная вычислительная математика располагает большим количеством численных методов для решения различных задач науки и техники. Если же для решения данной конкретной задачи отсутствуют такие методы, то их либо заново разрабатывают, либо несколько упрощают постановку задачи с тем, чтобы можно было воспользоваться известными математическими методами. При выборе численного метода следует учитывать многие факторы, оказывающие влияние на возможность и эффективность его применения. Наиболее важными обычно являются получение требуемой точности решения задачи, а также обеспечение необходимого времени ее решения. Нужно также рассмотреть возможность реализации метода при данных конструктивных особенностях применяемой ЭВМ (емкость памяти, быстродействие). Для сокращения машинного времени решения задачи необходимо, чтобы выбранный численный метод обеспечивал выполнение наименьшего числа операций, что соответственно уменьшает число
82
команд в программе и ускоряет ее выполнение. При этом надо не только стремиться к уменьшению числа выполняемых операций, но и учитывать время выполнения каждой операции в отдельности. При выборе численного метода следует также по возможности уменьшить количество промежуточных результатов, которые необходимо сохранять при переходе от одного этапа вычислений к другому. Хранение большого количества промежуточных результатов потребует соответствующей емкости памяти ЭВМ. По этой же причине целесообразно уменьшить число констант, используемых в процессе вычислений. Численный метод должен обеспечить решение задачи с погрешностью, не превышающей допустимую. Окончательный выбор численного метода должен определяться конкретными требованиями, вытекающими из общей постановки задачи. С учетом этих требований для каждой задачи отыскивается наиболее рациональный способ решения. При оформлении задания ЭВМ возникает необходимость в точном и полном описании вычислительного процесса или любой иной последовательности действий, выполняемых на ЭВМ. Такое описание задается алгоритмом решения данной задачи. Поиск, разработка и описание алгоритма решения задачи называется алгоритмизацией. Алгоритм – это точное предписание, определяющее последовательность элементарных операций над исходными данными, выполнение которых обеспечивает решение задачи. Алгоритм определяет необходимую последовательность действий, выполняемых на ЭВМ. Ошибки, допущенные при разработке алгоритма, искажают ход вычислительного процесса и, следовательно, приводят к неверному результату. Алгоритму присущи следующие основные свойства: определенность, массовость и результативность. Свойство определенности характеризует однозначность толкования указаний алгоритма. Алгоритм строго определяет необходимую последовательность выполняемых действий. Благодаря определенности процесс реализации алгоритма не зависит от конкретного вычислителя и может носить чисто механический характер. Свойство массовости означает применимость данного алгоритма к любым допустимым значениям начальных данных. Свойство результативности алгоритма заключается в возможности получения искомого результата для допустимых значений начальных данных за конечное число достаточно простых шагов. Существуют различные способы описания алгоритмов. Для этой цели можно использовать, например, естественный язык, включающий и
83
язык математики. Запись алгоритма на таком языке должна быть однозначно воспринята в виде последовательности действий, приводящих к получению искомого результата. Словесное описание алгоритма неприемлемо для ввода в вычислительную машину. Для этого необходимо изложить алгоритм на машинном языке таким образом, чтобы с его помощью происходило автоматическое управление работой ЭВМ в процессе решения данной задачи. Алгоритм, записанный в форме, воспринимаемой машиной, представляет собой программу решения задачи. Обычно алгоритм разрабатывается в несколько приемов, причем иногда приходится неоднократно возвращаться для исправления ошибок, уточнения и детализации структуры алгоритма. Наиболее удобным способом записи алгоритма на первых этапах его разработки является структурная схема алгоритма. Структурная схема алгоритма представляет собой графическое изображение последовательности действий при реализации данного алгоритма. Этапы решения задачи представляются в структурной схеме отдельными блоками, которые изображаются соответствующими символами и т.д. Внутри символов структурной схемы указывается содержание соответствующих этапов вычислений. Символы структурной схемы соединяются стрелками, показывающими направление развития вычислительного процесса. Иногда около стрелок делают надписи, указывающие на то, при каких условиях происходит выбор данного направления. Для сложных задач целесообразно сначала разработать укрупненную структурную схему алгоритма, а затем детализировать более подробно ее отдельные блоки. Практически любой сложный алгоритм обычно строится из комбинации трех базовых структур: линейной, разветвляющейся и циклической. Линейная базовая структура, называемая также следованием, состоит из простой последовательности действий, которые выполняются только один раз в порядке их следования. Разветвляющаяся структура, называемая также развилкой, обычно содержит блок проверки некоторого логического условия. В зависимости от результата проверки выполняется та или иная последовательность действий, выполняемых многократно. Такая структура обычно содержит несколько типовых блоков. Основной блок, называемый телом цикла, производит требуемые вычисления. Остальные блоки имеют вспомогательное значение, они устанавливают начальные и новые
84
значения данных, проверяют условия окончания циклического процесса и т.д. Следующим этапом подготовки задач к решению на ЭВМ является программирование. На этом этапе составляется и вводится в память ЭВМ программа, состоящая из отдельных команд и определяющая последовательность выполняемых операций. Программирование завершает формализованное описание выбранного метода и разработанного для него алгоритма решения задачи. Такое описание выполняется на языке программирования. Современный алгоритмический язык существенно отличается от внутреннего машинного языка конкретной ЭВМ. Поэтому программа, составленная на алгоритмическом языке, не может быть непосредственно воспринята ЭВМ. Для этого необходимо перевести программу с алгоритмического языка на машинный язык данной ЭВМ. Такой перевод осуществляется самой машиной с помощью специальной программы. Важным этапом в процессе подготовки и решения задачи на ЭВМ является отладка программы, в ходе которой обнаруживаются и устраняются ошибки, допущенные в процессе программирования. После устранения ошибок, обнаруженных при автономной отладке, проводят комплексную отладку всей программы. При этом выполняют для нескольких примеров так называемые контрольные расчеты, при которых все части отлаживаемой программы работают совместно. В процессе комплексной отладки не только окончательно устраняются допущенные ошибки, но совершенствуется программа в целом. На завершающем этапе производится решение задачи на ЭВМ и анализ полученных результатов.
85
ПРОГРАММА МАТЕМАТИЧЕСКОГО МОДЕЛИРОВАНИЯ НА ЯЗЫКЕ БЕЙСИК 10 REM ПРОГРАММА G5,РАЗРАБОТКА ЧЕРНОГО А. А. 20 DIM F(50),H(50),L(50),Y(27),I(50),K(50),M(50),P(50) 30 DIM Q(50),U(50),V(50),О(27), В(27),Z(50), G(20), T(27) 35 DIM K6(50),K7(50),K8(50)J7(50),J8(50),J9(50) 40 PRINT"X=9" 42 J=0: X=0: F3=0: F4=0: H3=0: H4=0: L3=0: L4=0: K3=0: K4=0 44 K5=0: K6=0: K7=0: K8=0: K0=0: X0=0: Y0=0 46 J5=0:J6=0:J7=0:J8=0:J9=0:S=0 50 PRINT"IF X=0 GOTO 6830":PRINT:PRINT"ВВОД X" 60 INPUT X:PRINT"X=";X 61 РRINT"ВВОД ВЕЛИЧИН ФАКТОРОВ И ПОКАЗАТЕЛЕЙ СТЕПЕНИ" 62 FOR J=l TO X:F(J)=0:H(J)=0:L(J)=0:Z(J)=0:K5(J)=0 64 K6(J)=0:K7(J)=0:K8(J)=0:J7(J)=0:J8(J)=0:J(9)=0:NEXT J 110 IF X=0 GOTO 6830 120 PRINT "ВВОД A1 El, B1,J1,O1": INPUT A1,E1,B1,J1,O1 130 PRINT A1;E1;B1;J1;O1:A=A1:B=B1:E=E1:N=J1:R=O1 140 GOSUB 3660: V1=V0:U1=U0:Q1=Q0: PRINT V1;U1;Q1 350 PRINT "ВВОД A2,E2,B2,J2,O2": INPUT A2, E2, B2, J2, O2 360 PRINT A2;E2;B2;J2;O2:A=A2:B=B2:E=E2:N=J2:R=O2 370 GOSUB 3660: V2=V0:U2=U0:Q2=Q0: PRINT V2;U2;Q2 620 F(1)=A1:H(1)=A2:F(2)=B1:H(2)=A2:F(3)=A1:H(3)=B2 630 F(4)=B1:H(4)=B2:F(5)=A1:H(5)=E2:F(6)=B1:H(6)=E2 640 F(7)=E1:H(7)=A2:F(8)=E1:H(8)=B2:F(9)=E1:H(9)=E2 1130 PRINT "IF I0=6 GOTO 40":PRINT "IF I0=7 GOTO 1160" 1140 INPUT I0:IF I0=6 GOTO 40 1150 IF I0=7 GOTO 1160 1160 FOR J=l TO X:PRINT "ВВОД Y(":J:")": INPUT Y(J) 1170 PRINT"Y(":J;")="; Y(J): NEXT J 1180 PRINT "IF I0=1 GOTO 1160":PRINT "IF I0=2 GOTO 1210" 1190 PRINT "ВВОД I0":INPUT I0:IF I0=1 GOTO 1160 1200 IF I0=2 GOTO 1210 1210 GOTO 1340 1340 GOSUB 4150:GOSUB 4170 1410 S=0:O(1)=0:FOR J=l TO X:S=S+Y(J):O(1)=O(1)+1:NEXT J 1420 B(1)=S/O(1):S=0:O(2)=0:FOR J=l TO X:S=S+I(J)×Y(J) 1430 O(2)=O(2)+I(J)^2:NEXT J:B(2)=S/O(2):S=0:O(3)=0 1440 FOR J=l TO X:S=S+K(J) ×Y(J):O(3)=O(3)+K(J)^2:NEXT J 1450 B(3)=S/O(3) 1480 S=0:O(4)=0:FOR J=l TO X:S=S+P(J)xY(J) 1490 O(4)=O(4)+P(J)^2:NEXT J:B(4)=S/O(4):S=0:O(5)=0 1500 FOR J=l TO X:S=S+I(J)×P(J) ×Y(J):O(5)=O(5)+(I(J) ×P(J))^2 1510 NEXT J:B(5)=S/O(5):S=0:O(6)=0:FOR J=l TO X 1520 S=S+Q(J) ×Y(J):O(6)=0(6)+Q(J) ×2:NEXT J:B(6)=S/O(6) 1530 S=0:O(7)=0:FOR J=l TO X:S=S+I(J) ×Q(J) ×Y(J) 1540 О(7)=О(7)+(I(J) ×Q(J))^2:NЕХТ J:B(7)=S/O(7):S=0 1550 O(8)=0:FOR J=l TO X:S=S+P(J) × K(J) ×Y(J)
86
1560 O(8)=O(8)+(P(J) ×K(J))^2:NEXT J:B(8)=S/O(8):S=0:O(9)=0 1570 FOR J=l TO X:S=S+K(J) ×Q(J) ×Y(J):O(9)=O(9)+(K(J) ×Q(J))^2 1580 NEXT J:B(9)=S/0(9) 2390 PRINT "B(J) ДО АНАЛИЗА": FOR J=l TO X:PRINT"B(";J;")=";B(J) 2400 NEXT J:PRINT:PRINT "ВВОД N0":INPUT N0 2410 PRINT "N0=";N0 2540 GOSUB 4450 2610 PRINT "РАСЧЕТНЫЕ ВЕЛИЧИНЫ ПОКАЗАТЕЛЯ Z(J) ДО АНАЛИЗА B(J)" 2620 FOR J=l TO X:PRINT"Z(";J;")=";Z(J):NEXT J 2630 PRINT "ВВОД F8=N0-1":INPUT F8:PRINT "F8=":F8 2640 PRINT "ПРОВЕРКА ПО РАЗНОСТИ Y(J)-ZCJ)" 2650 FOR J=l TO X: PRINT Y(J) - Z(J);:NEXT J 2660 PRINT "IF I0=3 GOTO 2720":PRINT "IF I0=4 GOTO 2770" 2670 PRINT "IF I0=5 GOTO 3240":PRINT "IF I0=6 GOTO 40" 2677 PRINT "IF I0=20 GOTO 6830":PRINT "IF I0=25 GOTO 4880" 2678 PRINT "IF I0=27 GOTO 7000" 2680 PRINT "ВВОД I0":INPUT I0:IF I0=3 GOTO 2720 2690 IF I0=4 GOTO 2770 2700 IF I0=5 GOTO 3240 2710 IF I0=6 GOTO 40 2715 IF I0=20 GOTO 6830 2717 IF I0=25 GOTO 4880 2718 IF I0=27 GOTO 7000 2720 FOR J=l TO NO:PRINT "ВВОД G(":J:")":INPUT G(J) 2730 PRINT"G(";J:")=":G(J):NEXT J:S=0:FOR J=l TO N0:S=S+G(J) 2740 NEXT J:SO=S/N0: PRINT "S0=";S0:S=0:FOR J=l TO N0 2750 S=S+G(J) - S0)^2:NEXT J:U9=S/F8:PRINT "U9=";U9 2760 GOTO 2780 2770 PRINT "ВВОД U9":INPUT U9:PRINT "U9=":U9 2780 PRINT "РАСЧЕТНЫЕ ВЕЛИЧИНЫ T(J)":FOR J=l TO X 2790 T(J)=ABS(B(J)/SQR(U9/O(J))):PRINT"T(":J;")=";T(J):NEXT J 2800 PRINT "ВВОД TO":INPUT TO:PRINT "TO=":TO 2810 PRINT "B(J) ПОСЛЕ АНАЛИЗА":FOR J=l TO X 2820 IF T(J) < TO GOTO 2840 2830 IF T(J) >= TO GOTO 2850 2840 B(J)=0 2850 PRINT"B(";J:")=":B(J):NEXT J 2860 K9=0:FOR J=l TO X: IF B(J)=0 GOTO 2880 2870 K9=K9+1 2880 NEXT J:PRINT:PRINT "K9=":K9 2890 PRINT "F9=X-1":F9=X-1: PRINT "F9=":F9 2900 PRINT "ВВОД ТАБЛИЧНОГО F7":INPUT F7:PRINT "F7=";F7 2940 IF X=9 GOTO 3040 3040 GOSUB 4450 3110 PRINT "РАСЧЕТНЫЕ ВЕЛИЧИНЫ ПОКАЗАТЕЛЯ Z(J) ПОСЛЕ АНАЛИЗА B(J)" 3120 FOR J=l TO X:PRINT"Z(":J:")=";Z(J): NEXT J 3130 S=0:FOR J=l TO X:S=S+(Z(J) - Y(J))^2:NEXT J 3140 PRINT "РАСЧЕТНЫЙ F6":F6=S/(F9×U9):PRINT "F6=";F6 3150 IF F6 F7 GOTO 3180
87
3170 PRINT "АДЕКВАТНО":GOTO 3190 3180 PRINT "НЕАДЕКВАТНО" 3190 PRINT "IF I0=7 GOTO 3240":PRINT "IF I0=8 GOTO 40" 3197 PRINT "IF I0=17 GOTO 4880":PRINT "IF I0=22 GOTO 7000" 3200 PRINT "IF I0=9 GOTO 6830":PRINT "ВВОД I0":INPUT I0 3210 IF I0=7 GOTO 3240 3220 IF I0=8 GOTO 40 3227 IF I0=17 GOTO 4880 2228 IF I0=22 GOTO 7000 3230 IF I0=9 GOTO 6830 3240 PRINT "ПРОВЕРКА ТОЧНОСТИ И РАСЧЕТЫ ПО МОДЕЛИ" 3280 IF X=9 GOTO 3420 3420 FOR S=1 TO X:F(S)=0:H(S)=0:Z(S)=0 3430 PRINT "ВВОД F(":S;"),Н(";S;")":INPUT F(S),H(S) 3432 PRINT"F(";S;")=";F(S);"H(";S;")=":H(S) 3500 GOSUB 4150:GOSUB 4170:GOSUB 4450 3552 PRINT"Z(";S;")=";X(S):NEXT S:GOTO 3610 3610 PRINT"IF I0=10 GOTO 3240":PRINT"IF I0=11 GOTO 40" 3612 PRINT"IF I0=14 GOTO 7000" 3620 PRINF”IF I0=12 GOTO 6830":PRINT"ВВОД I0":INPUT I0 3630 IF I0=10 GOTO 3240 3640 IF I0=11 GOTO 40 3650 IF I0=12 GOTO 6830 3653 IF I0=14 GOTO 7000 3660 N0=(A^N+B^N+E^N)/3:R0= (A^R+B^R+E^R) /3 3670 L2=2×N: N3=(A^+B^+E^L2) /3: N4=N+R 3680 N5=(A^N4+B^N4+E^N4)/3:V0=-N0 3690 U0=(N0×R0 - N5)/(N3 - N0^2):Q0=-(R0+U0×N0) 3700 PRINT "КОЭФФИЦИЕНТЫ ОРТОГОНАЛИЗАЦИИ": RETURN 4150 FOR J=l TO X:I(J)=F(J)^Jl+Vl 4160 K(J)=F(J)^01+Ul^F(J)^Jl+Ql:NEXT J: RETURN 4170 FOR J=l TO X:P(J)=H(J)^2+V2 4180 Q(J) = H(J)^02+U2×H(J)^J2+Q2:NEXT J:RETURN 4450 FOR J=l TO X:N3=B(l)+B(2) ×I(J)+B(3) ×K(J)+B(4) × P(J) 4460 N4=B(5) × I(J) × P(J)+B(6) × Q(J)+B(7) × I(J) × Q(J) 4880 РRINT “ МАТЕМАТИЧЕСКАЯ МОДЕЛЬ" 4930 PRINT "Z(J)=";B(l);"+";B(2);" × I(J)+";B(3);" × K(J)+" 4940 PRINT "+";B(4);" × P(J)+";B(5);" ×I(J) × P(J)+" 4950 PRINT "+";B(6);" ×Q(J)+";B(7);" × I(J) × Q(J)+" 4960 PRINT "+";B(8);" × P(J) × K(J)+";B(9);" × K(J) × Q(J)," 5110 PRINT "ГДЕ" 5120 PRINT "I(J)=F(J)^";J1;"+";V1;";" 5130 PRINT "K(J)=F(J)^";01;"+";Ul;" × F(J)^";Jl;"+";Ql 5150 PRINT "Р(J)=Н(J)^”;J2;”+”;V2;”;” 5160 PRINT "Q(J)=H(J)^";O2;"+";U2;" ×H(J)^";J2;"+";Q2 6790 PRINT "IF I0=18 GOTO 2660":PRINT "IF I0=19 GOTO 3190" 6793 PRINT "IF I0=35 GOTO 1160":PRINT "IF I0=44 GOTO 6830" 6796 PRINT "IF I0=50 GOTO 40":PRINT "IF I0=51 GOTO 3240" 6797 PRINT "IF I0=52 GOTO 7000" 6800 PRINT "ВВОД I0":INPUT I0
88
6810 IF I0=18 GOTO 2660 6820 IF I0=19 GOTO 3190 6823 IF I0=35 GOTO 1160 6825 IF I0=44 GOTO 6830 6827 IF I0=50 GOTO 40 6828 IF I0=51 GOTO 3240 6829 IF I0=52 GOTO 7000 6830 STOP 7000 PRINT "ВЫЧИСЛЕНИЯ ПОКАЗАТЕЛЕЙ Z(K5)" 7004 PRINT "ПО МАТЕМАТИЧЕСКОЙ МОДЕЛИ" 7005 PRINT "С ИСПОЛЬЗОВАНИЕМ ЦИКЛОВ" 7006 PRINT ”И ПОСТРОЕНИЕ ГРАФИКОВ" 7020 PRINT "ВВОД I0=62 ПРИ Х=9" 7040 PRINT "IF I0=64 GOTO 40" 7050 PRINT "IF I0=65 GOTO 6830" 7060 INPUT I0 7080 IF I0=62 GOTO 7360 7100 IF I0=64 GOTO 40 7110 IF I0=65 GOTO 6830 7360 X=0:F3=0:K5=0:K6=0:F4=0:H3=0:H4=0: PRINT "F(1)=F3+F4" 7370 PRINT “F4-ШАГ ПРИРАЩЕНИЯ 1-ГО ФАКТОРА" 7380 PRINT "H(1)=H3+H4" 7390 PRINT "Н4-ШАГ ПРИРАЩЕНИЯ 2-ГО ФАКТОРА" 7400 PRINT "ВВОД ПРИНЯТЫХ ВЕЛИЧИН X, F3,F4,НЗ,Н4" 7410 INPUT X, F3, F4, НЗ, Н4: К5=0:К6=0: PRINT "X=";X;"F3=":F3;"F4=";F4 7420 PRINT "H3=";H3;"H4=";H4 7430 FOR K5=l TO X:F(K5)=F3+K5×F4: PRINT "F(";K5;")= ";F(K5) 7440 Н(К5)=НЗ+К5×Н4:PRINT "Н(";К5;")= ";Н(К5) 7510 GOSUB 4150:GOSUB 4170:GOSUB 4450 7570 PRINT "Z(";K5;")=";Z(K5) 7575 NEXT K5:GOTO 8000 8000 PRINT "ВЫЯВЛЕНИЕ MAX Z(K5) И MIN Z(K5)":K8=0:K8=Z(1) 8002 РRINT “ВВОД I0=90" 8004 INPUT I0 8010 FOR K5=l TO X 8020 IF Z(K5) >= K8 THEN K8=Z(K5) 8040 NEXT K5:PRINT"MAX Z(K5)=";K8 8041 FOR K5=l TO X 8042 IF Z(K5)=K8 THEN PRINT'MAX Z(";K5;")=";Z(K5) 8044 NEXT K5 8050 K7=0:K7=Z(1) 8060 FOR K5=l TO X 8070 IF Z(K5) F7'); end; case X of 2: OUT_F_H_L(73); 4: OUT_F_H_L(74); 8: OUT_F_H_L(75); 16: OUT_F_H_L(76); 32: OUT_F_H_L(77); end; end; 5:writeln('----------F7'); end; case X of 3: OUT_F_H_L(73); 4: OUT_F_H_L(73); 5: OUT_F_H_L(73); 9: OUT_F_H_L(74); 12:OUT_F_H_L(74); 15:OUT_F_H_L(74);
226
16:OUT_F_H_L(74); 20:OUT_F_H_L(74); 25:OUT_F_H_L(74); 27:OUT_F_H_L(75); end; end; 5:writeln('----------