Инфоурок / Информатика / Конспекты / Учебное пособие по информатике и программированию
Обращаем Ваше внимание, что в соответствии с Федеральным законом N 273-ФЗ «Об образовании в Российской Федерации» в организациях, осуществляющих образовательную деятельность, организовывается обучение и воспитание обучающихся с ОВЗ как совместно с другими обучающимися, так и в отдельных классах или группах.

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

Только сейчас Вы можете пройти дистанционное обучение прямо на сайте "Инфоурок" со скидкой 40% по курсу повышения квалификации "Организация работы с обучающимися с ограниченными возможностями здоровья (ОВЗ)" (72 часа). По окончании курса Вы получите печатное удостоверение о повышении квалификации установленного образца (доставка удостоверения бесплатна).

Автор курса: Логинова Наталья Геннадьевна, кандидат педагогических наук, учитель высшей категории. Начало обучения новой группы: 27 сентября.

Подать заявку на этот курс    Смотреть список всех 216 курсов со скидкой 40%

Учебное пособие по информатике и программированию

библиотека
материалов

МИНИСТЕРСТВО ОБРЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательноеучреждение высшего профессионального образования

«Чувашский государственный университет имени И.Н. Ульянова»




В. К. Никишев







И Н Ф О Р М А Т И К А

и

ПРОГРАММИРОВАНИЕ

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














Чебоксары

2016




УДК 681.142.2

ББК И181я73

Н62


Рецензенты:

Горский А.В. ̶ канд. физ-мат. наук, доцент кафедры информатики и вычислительной техники Чувашского педагогического университета им. И.Я. Яковлева;

Григорьев Ю В. ̶ канд. пед. наук, старший преподаватель кафедры информатики и вычислительной техники Чувашского педагогического университета имени И. Я. Яковлева.



НИКИШЕВ В. К.

Н62 Информатика и программирование: учеб. Пособие /

В. К. Никишев ̶ Чебоксары: Изд - во Чуваш. ун-та, 2016. ̶ 248 с.


ISBN 978- 5- 7677- 2205- 1

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


Ответственный редактор канд. техн. наук,

профессор В. П. Желтов.


Утвержено Учебно-методическим советом университета

УДК 681.142.2

ISBN ББК И181я73

Издательство Чувашского

университета, 2016

с Никишев В. К., 2016


ПРЕДИСЛОВИЕ

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

̶ увеличением количества работников умственного труда;

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

̶ устаревшими методами доступа к современным информационным источникам;

̶ невозможностью обработки большого количества информации (человеческое сознание уже не в состоянии усвоить большой объем информации).

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

̶ использование новых информационных технологий (НИТ) и наличие компьютерной грамотности у учащихся;

профессиональное обучение учащихся;

перестройка содержания и методов обучения;

использование ЭВМ для управления образованием.

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

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

За «информационным обществом» следует новый этап развития общества, который называют как Smart-общество. Smart-общество это новое качество общества, в котором совокупность использования технических средств, сервисов и Интернета приводит к качественным изменениям в социальной и экономической жизни общества.

В смарт-обществе рост доступности и открытости информационных ресурсов и средств коммуникаций наряду с развитием Интернет-технологий радикально изменяет все элементы общественной жизни: экономику, социальную политику, образование, трудовые отношения. Новое общество построено таким образом: «умная» работа, которая образована «умной» жизнью, государством и бизнесом, основывается на «умной» инфраструктуре и «умных» гражданах, которые играют центральную роль в создании smart-культуры. А развитие таких отраслей, как Smart-транспорт, Smart-здравоохранение, Smart-энергетика, Smart-питание и т. д., приведет в конечном итоге к появлению Smart-мира.

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

Предлагаемое учебное пособие «Информатика и программирование» может помочь как преподавателям, так и студентам при изучении основ информатики и программирования.







ГЛАВА 1. ИНФОРМАТИКА И ПРОГРАММИРОВАНИЕ: ВЧЕРА, СЕГОДНЯ, ЗАВТРА

1.1. Общие сведения об информатике и программировании

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

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

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

В конце 50-х годов под руководством А. П. Ершова на базе вычислительной техники Академгородка в Новосибирске энтузиастами-учеными из университетов и научно-исследовательских институтов стали организовываться кружки по программированию в школах с математическим уклоном. В последующие годы вводятся специальные факультативные курсы по программированию в общеобразовательных школах. В перечень рекомендованных курсов включались системы счисления и устройство ЭВМ, алгоритмы и программирование, основы кибернетики, языки программирования и т.д. В 60-70-х годах в США появилось направление “Computer Science”, т.е. применение компьютерной техни ки в обществе. Во Франции распространен термин “Informatique”. В русском языке употребление термина “информатика” связано с узкоконкретной областью научно-технической информации и документалистики. Введение понятия информатики как учебной дисциплины и фундаментальной естественной науки связано с именем математика, профессора Новосибирского университета А. П. Ершова после выхода в 1976 году учебного пособия Ф.Л. Бауэра “Информатика” (перевод с немецкого) под редакцией А.П. Ершова и пособия А.П. Ершова “Информатика: предмет и понятие”. (Кибернетика. Становление информатики. ─ М.: Наука, 1986). Важной особенностью информатики является то, что она имеет широкую сферу применения: производство, управление, наука, образование, проектные разработки, торговля, медицина, криминалистика, охрана окружающей среды и т.д. Именно этим многообразием определяется предмет “информатика”.

В начале 70-х годов возникла специализация на базе учебно-производственных комплексов (УПК) по профессиональной подготовке учащихся старших классов в области применения вычислительной техники. В начале 1983 года в Академии наук СССР было открыто новое отделение информатики, вычислительной техники и автоматизации, а с 1 сентября 1987 года был введен новый школьный и институтский предмет “Основы информатики и ВТ”.

Для преподавания такого предмета в 1986 - 87 ‒ е годы были подготовлены учителя из числа работающих математиков, физиков и программистов из научно-исследовательских институтов. В первые годы в учебных заведениях использовались вычислительные машины КОРВЕТ, АГАТ, КУВТ86, УКНЦ и особенно большое распространение получили ЯМАХА, основные характеристики которых приведены в табл.1.


1.2 Краткая история информатики, вычислительной техники и программирования


История вычислительной техники начиналась от абака (приспособления для перекладывания камешек), счетов. Первые механические арифмометры, которые механизировали расчетные операции, появились в XVII веке. К таким техническим устройствам следует отнести: суммирующую машину Блеза Паскаля (1642 г.), арифмометр Вильгельма Лейбница (1673 г.), ткацкие станки, управляемые с помощью перфокарт Жаккара (1804 г.).

Однако впоследствии стало известно, что первые описания счетных машин были выполнены знаменитым Леонардо да Винчи. Был найден эскиз 13-разрядного суммирующего устройства с десятизубным колесом. Документы свидетельствуют, что первой моделью счетной машины была модель Шиккарда, выполненная в 1623 году. Кроме суммирующих устройств в этой машине были и множительные устройства.

В XVIII веке стали появляться различные модификации счетных машин: известный писатель Клод Перро изобрел суммирующую машину в 1688 году; немецкий математик Кристиан Людвиг Герстен изготовил в 1723 году арифметическую машину с контролем правильности ввода, затем появляется суммирующая машина Якобсона в 1770 году ─ часовым мастером из

г. Несвите Литвы. В 1845 году Зиновий Яковлевич Слонимский (еврейский ученый) из Белостока представил снаряд для сложения и вычитания.

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

С Бэббиджем непосредственно работала дочь Байрона ‒ Ада Лавлейс, которая стала первой программисткой. Она составила программы решения систем алгебраических уравнений, вычисления чисел Бернулли.

В 1889 году Холлерит построил суммирующую машину (табулятор) для обработки данных с использованием перфокарт. В 1933 году немецким ученым К. Цузе была построена модель механической вычислительной машины на основе реле с использованием двоичной системы счисления, с плавающей формой представления числа, с трехадресной системой программирования. Впоследствии он изготовил более современные образцы ЭВМ (Z3 - Z5). В 1939 году американский математик, профессор Гарвардского университета Г.Айкен с группой инженеров IBM разработал вычислительную машину “Марк 1”, в 1940 году в США Штибицем была создана машина на релейных элементах (релейный интерполятор).

Дальнейшая история ЭВМ ─ это история смены поколений ЭВМ, в которых вычислительные машины подразделялись на классы с учетом элементарной базы и производительности.

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

2. Компьютеры второго поколения появились после 1955 года. Особенности этих машин: использование транзисторов; появление магнитных сердечников для реализации памяти; использование первых языков программирования.

3. Компьютеры третьего поколения начали создаваться с 1964 года. Особенностями таких ЭВМ были: проектирование структур на основе интегральных схем (ИС) (МИС ─ малая степень интеграций 102 компонентов на кристалл, СИС ─ средняя степень интеграций до 103 компонентов на кристалл); использование операционной системы для управления устройствами ЭВМ; наличие мультипрограммирования.

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

В эти годы появились первые персональные компьютеры.

5. Компьютеры 5-го поколения начали проектироваться в Японии. На основе интеллектуальных компьютеров с архитектурой, ориентированной на обработку знаний (1982 г.). В 80-е годы получили развитие нейрокомпьютерные системы (нейрокомпьютеры).

Образцы вычислительных машин в СССР и зрубежом в

80-90-е годы (табл.1, 2).


Советские вычислительные машины Таблица 1.

Быстродействие

(тыс.опер / cсек

600

700

600

700

1000

Цвета экрана

8

4

4

8

8

Размеры

Тех. экрана

Граф. экрана


64 - 15

512 - 256


-

656-256


32 – 24

256 - 246


64 – 24

640 - 288


64 -24

512 - 288

Объем ОЗУ(КБ)

64

64

16

64

64

ОбъемДГМД(КБ)

2*800

1*800

2*200

2*400

2*800

Скорость локальной. сети

19200

-

9600

37000

57600


Зарубежные вычислительные машины Таблица 2.

Основными вехами в развитии теоретических основ построения ЭВМ и языков программирования являются:

- разработка двоичной системы счисления Вильгельмом Лейбницем в 1679 году и теории булевой алгебры

- методы программного управления (Жаккар, 1804 г.; Бэббидж, 1834 г.; К. Цузе, 1938 г.; Д. Нейман, 1944 г.);

- разработка программы-компилятора (Грейс Хоппер, 1951 г.);

- языки программирования (Алгол, Бейсик, Фортран, Паскаль, Кобол, Рл1, Ассемблер, программирование на языке Турбо Лисп, Ада;

- теория символьного вычисления и эвристического программирования для решения задач искусственного интеллекта (Г.Саймон, А.Ньюэлл и Д.Шоу 1956 г.);

- язык логического программирования Пролог (А. Кольмеро, 1971 г. );

- методы объектно-ориентированного программирования 1983 г.

Самостоятельной наукой информатика была признана лишь в 1970-х годах; до этого она развивалась в составе математики, электроники и других технических наук. Некоторые начала информатики можно обнаружить даже в лингвистике. Первый факультет информатики был основан в 1962 году в университете Пёрдью (Purdue University). В настоящее время факультеты и кафедры информатики имеются в большинстве университетов мира.

В школах СССР учебная дисциплина «Информатика» появилась в 1985 году одновременно с первым учебником А. П. Ершова «Основы информатики и вычислительной техники».

Высшей наградой за заслуги в области информатики является премия Тьюринга.

4 декабря отмечается День российской информатики, так как в этот день в 1948 году Государственный комитет Совета министров СССР по внедрению передовой техники в народное хозяйство зарегистрировал за номером 10 475 изобретение И. С. Брука и Б. И. Рамеева цифровую электронную вычислительную машину.

Основные даты по истории информатики и программировния представлены в таблице 3.

Таблица 3

1.Преобразование счета

саламинская доска;

абак;

серобан;

седан-поп


О. Саламин в Эгейском море,Греция, Япония, Китай

V – VI

до н. э.

2. Эскиз 13 - разрядного сумматора с 10 - зубовыми колесами

Леонардо

Да Винчи

Италия

XV в.

3. Русские счеты с 10-й системой счисления


Россия

XVI в.

4. Счетная машина

Вильгейм

Шиккард

Германия

1624 г.

5. Первый арифмометр

Блез

Паскаль

Франция

1642 г.

6. Суммирующая

машина

Самюэл

Морленд

Англия

1658 г.

7. Арифмометр для выполнения действий: сложения, вычитания, умножения, деления. Основы двоичной системы

Вильгейм

Лейбниц

Германия

1673 г.

8. Суммирующая машина

Клод Перро

Франция

1700 г.

9. Суммирующая машина для пятизначных значных чисел

Е. Якобсон

Литва


10. Счетные машины

Ч. Стэнхоум

Англия

1775 г.




Продолжение табл. 3

Карл

Томас

Германия

1820 г.

13. Проект разностной мпшины

Чарльз

Беббидж

Англия

1823 г.

14. Аналитическая машина

Чарльз

Беббидж

Англия

1871 г.

15. Первые программы ЭВМ

Леди Ада Лавлейс

Англия

1871 г.

16. Счетный прибор сложения и вычитания

Слонимский

Россия

1845 г.

17. Первая клавишная суммирующая машина

Д. Пармель

США

1864 г.

18. Основы булевой алгебры

Джорж Буль

Англия

1850 г.

19. Разностная машина

Г. Шойц

Германия

1854 г.

20. Двухразрядная машина

Томас Хилт

США

1857 г.

21. Счетный механизм на принципе русских счетов

В. Я. Буняковский

Россия

1867 г.

22. Первая пишушая машинка

К. Шоулз

США

1867 г.

23. Сумматор с непрерывным пересчетом десятков

Г. Л. Чебышев

Россия

1878 г.

24. Арифмометр с переменным числом зубцов

«Феликс»

В. Т. Однер

Россия

1880 г.

25. Электронная лампа

Т. Эдисон

США

1883 г.



Продолжение табл.

А. Н.

Крылов

Россия

1904 г.

30. Двухэлектродный прибор – диод

Д. А. Флеминг

Англия

1906 г.

31. Трехэлектродный прибор - триод

Л. Фостер,

Р. Либен

США

1906 г.

32. Ламповый триггер

М. Бонч-Бруевич

Россия

1918 г.

33. Абстрактная машина.

«Тьюринга»

А.Трьюринг

Англия

1936 г.

32. Теория информации

Колод

Шеннон

США

1936 г.

33. Универсальные цифровые машины с программным управлением на механических элементах

Цузе

Германия

1938 г.

34. ЭВМ на ламповых элементах

В. Атанасов

США

1937 г.

35. Релейное ЭВМ «Белл»

Дж. Стибниц

США

1939 г.


Продолжение табл. 3

Горвард

Эйкен

США

1943 г.

39. Архитектура современных компьютеров

Джон фон

Нейман

США

1945 г.

40. ЭВМ «EDVAC» с вводом чисел и программ в память

Джон фон

Нейман

США

1945 г.

41. Электронное ЭВМ

«Эмпак»

Д. П. Эккерт,

Д. У. Моучли

США

1946 г.

42. Тотечный германиевый транзистор

Уильм Шокли

США

1948 г.

43. МЭСМ (Малая Электронная Счетная Машина)

С. А. Лебедев

СССР

1950 г.

44. Плоский германиевый транзистор

Дж. Бардин, У. Браттейн

США

1951 г.

45. БЭСМ 2 ( Большая Электронная Счетная Машина)

С. А. Лебедев

СССР

1952 г.

46. Операторный метод программирования

А. А. Ляпунов

СССР

1953 г.

47. «Ферритовая память»

Дж. Форстер

США

1953 г.

48. Кремнивый транзистор.

Килби, Тил

США

1953 г.

Продолжение табл.3

59. Автоматизированная система управления

( АСУ)

В. М. Глушков

СССР

1960 г.

60. ЭВМ второго поколения: РАЗДАН 2, УРАЛ11 (14,16), МИНСК 22(32), М220, БЭСМ 3(4)


СССР

60-е годы

61. Управляющая ЭВМ

«Днепр 1»

В. М. Глушков

СССР

1961 г.

62. Интегральная схема

Килби

США

1961 г.



Продолжение табл.3

63. « ЧИП»

Интегральная схема ( 10 транзисторов)

Килби

США

1962 г.

64. ЭВМ

IBM/360


США

1965 г.

65. Язык программирования Бейсик

Дж. Кемени,

Т. Курц

США

1965 г.

66. Мини-ЭВМ

( НАИРИ-2, МИР-2)

Г. Е. Овснян, В. М. Глушков

СССР

1967 г.

67. ЭВМ БЭСМ-6

В. А. Мельников

СССР

1967 г.

68. Язык программирования ФОРТ

Ч. МУР

США

1970 г.

69. Компьютер

MANIAC

Джон фон Нейман

США

1970 г.

70. Язык программирования ПАСКАЛЬ

Н. Вирт

Швейцария

1970 г.

71. Полевые транзисторы, МОП –транзисторы


США

1970 г.

72. ЭВМ 3-го поколения ЕС ЭВМ «Электроника 100(200)», «Д3-28»


СССР

1970 г.

73. Микропроцессор 4004

Хофф

США

1971 г.

74. Гибкий магнитный диск

IBM

США

1972 г.

Продолжение табл. 3

Событие

Автор

Страна

Год

75. Микропроцессор 8080

IBM

США

1974 г.

76. Персональные компьютеры ПЭВМ

IBM

США

1974 г.

77. Мини ЭВМ


СССР

1975 г.

78. Суперкомпьютер Cray-1(100 операций в секунду)

IBM

США

1975 Г.

79. Суперкомпьютер ИЛЛИОК-IV

IBM

США

1975 г.

80. Микропроцессор 68000

IBM

США

1979 г.

81. Словари - переводчики


Япония

1997 г.

82. Супер ЧИП

(450 тыс. элементов)

Пиккард

США

1981 г.

83. Операционная система MS-DOC 1.0


США

1981 г.

84. ПЭВМ IBM PS


США

1982 г.

85. EC 1840 (1841)


СССР

1982 г.

86. Языки программирования РАБИК, РАПИРА, ШКОЛЬНИЦА

Звенигородский

СССР

1980-1984 гг.

87. Суперкомпьютер Gray X-MR/48


США

1984 г.

88. Курс ОИВТ

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



СССР

1985 г.



Продолжение табл. 3

Событие

Автор

Страна

Год

89. ПЭВМ IBM PC/XT, IBM PC/AT, PS/2


США

1985 г.

90. Операционная система MS DOC 1.4


США

1987 г.

91. Школьные КУВТ: УКНЦ, КОРВЕТ, СУРА, ДВК, ИСКРА 1030, БК-0010


СССР

1988 г.

92. IBM 486 SX


США

1991 г.

93. Русская операционная систем MS DOC


СССР

1991 г.

94. Микропрцессор Pentium ( 64 разряда), Macintosh LC-520, Windows NT


США

1993 г.

95. RISC-

микропрцессор Power PC


США

1994 г.

96. Кристалл объемом партии 1Гбайт


США

1995 Г.

97. ПЭВМ «APPLE»


США

1997 г.


1.3. Краткие сведения об ученых

в области информатики и программирования

hello_html_5efe43ca.png

БЛЕЗ ПАСКАЛЬ

(1623-1662 )

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


hello_html_m69db07f5.jpg


Машина Блеза Паскаля.

Паскалина








hello_html_6290980.png


Первая построенная механическая суммирующая машина (1642 г.)





ГЕРМАН ХОЛЛЕРИТ

(1860-1929 )hello_html_m481b9c3e.png

Американский изобретатель.

Создал электромеханическую счетную машину табулятор с использованием перфокарт. Машина использовалась для переписи населения в США в 1890 году. Основал корпорацию ИБМ (IBM, International Business Machines).



hello_html_md7e157.jpg

Табулятор Холлерита







hello_html_m49758a18.jpg




Карты табулятора Холлерита




ГОТФРИД ВИЛЬГЕЛЬМ hello_html_71abe317.png

ЛЕЙБНИЦ

(1646-1716)

Немецкий математик, историк, инженер.

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

С 1676 года на службе у ганноверских герцогов. По просьбе Петра I разработал проекты развития образования и государственного управления в России. Теоретически обосновал возможность построения вычислительных машин с использованием двоичной системы счисления. Один из основателей дифференциального исчисления. Тем не менее, примерно за 10 лет Паскаль построил около 50 и даже сумел продать около дюжины вариантов своей машины

hello_html_6a61fbf4.jpg












Арифмометр с четырьмя действиями (1673 г.)



ЧАРЛЬЗ БЭББИДЖhello_html_69c311d5.png

(1791-1871)

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

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

После смерти оставил 37 квадратных метров подробнейших чертежей. 1820-1856 гг. – Ч.Беббидж работает над проектом аналитической, программируемой машины.


hello_html_m17ccacda.jpg













Аналитическая машина




АДА ЛАВЛЕЙС

(1815-1852) hello_html_m679be295.jpg

Первая в мире женщина- программист. Дочь Джорджа Гордона Байрона. Разработала теоретические приемы управления последовательностью вычислений для составления программ (циклические алгоритмы).

В 1843 году она написала статью об Аналитической машине Бэббиджа с подробными комментариями по потенциальным возможностям машины “эта машина будет иметь ценность, практически непредсказуемую в её возможных применениях”. Составила программу решения алгебраических уравнений.

В 1975 году Министерство обороны США приняло решение о начале разработки универсального языка программирования. Министр прочитал подготовленный секретарями исторический экскурс и без колебаний одобрил и сам проект, и предполагаемое название для будущего языка «Ада». 10 декабря 1980 года был утверждён стандарт языка.

В честь Ады Лавлейс названы в Америке также два небольших города - в штатах Алабама и Оклахома. В Оклахоме существует и колледж ее имени.

27 ноября 1852 года Ада Лавлейс скончалась, не достигнув 37 лет. Вместе с выдающимся интеллектом отец передал ей и эту страшную наследственность раннюю смерть поэт умер в таком же возрасте… Она была погребена рядом с отцом в фамильном склепе Байронов.





ЖОРДЖ БУЛЬhello_html_6bf289c5.png

(1815-1864)

Английский математик, преподаватель университета в г. Корке.

Разработал математическую логику или алгебру логики, названную как Булева алгебра. Не имел специального математического образования, но тем не менее с 1849 году стал профессором математики.

ПАФНУТИЙ ЛЬВОВИЧ ЧЕБЫШЕВ

(1821-1894)

Русский математик, механик и изобретатель. hello_html_3236c6a1.png

Исследовал прикладные вопросы математики в связи с вопросами естествознания и техники. Разработал суммирующий аппарат (арифмометр) с плавным переносом разрядов.

В 1876 г. Чебышев выступил с докладом на V сессии Французской ассоциации содействия преуспеванию наук. Доклад назывался “Суммирующая машина с непрерывным движением”. Речь шла об одной из первых моделей суммирующей машины. По-видимому, именно об этой модели писали в 1958 г.: “Сохранился один из ранних экземпляров арифмометра, обнаруженный среди других архивных материалов”. Она была создана Чебышевым не позднее 1876 г. и хранится сейчас в музее истории Ленинграда.

Первый арифмометр Чебышева 10-разрядная суммирующая машина с непрерывной передачей десятков.


АЛЕКСАНДР НИКОЛАЕВИЧ hello_html_6df791db.gif

КРЫЛОВ

(1863-1916)

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

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


hello_html_m2ff03aa.png


КОНРАД ЦУЗЕ

(1910-1995)

Немецкий ученый.

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


ДЖОН ВИНСЕТ АТАНАСОВ hello_html_276197bb.jpg

(1903-1995 )

Американский доктор философии по теоретической физике.

Работал над проблемой автоматизации вычислений. В 1939 году разработал настольную вычислительную машину для решения систем уравнений с 29-ю неизвестными. В 1942 году построил компьютер, который имел имел 300 ламп. Компьютер Атанасова - Берри (Atanasoff-Berry Computer, ABC) первое цифровое вычислительное устройство, а также первая вычислительная машина без движущихся частей. Задуманная в 1937 году, машина не была программируемой, и разрабатывалась только в целях решения систем линейных уравнений. Работа Джона Винсента Атанасова и Клиффорда Берри над вычислительной машиной долгое время не была широко известна, пока в 1960-х годах она не всплыла в ходе конфликта по поводу первого появления электронного компьютера. Было определено, что первым компьютером в современном смысле этого слова является ENIAC, однако в 1973 году Федеральный районный суд США постановил отозвать патент ENIAC и заключил, что ABC является первым «компьютером».hello_html_2279493b.png


Копия компьютера

Атанасова



КЛОД Э́ЛВУД ШЕННОН

(1916 – 2001) (19160430)

Аамериканский инженер и математик, его работы являются синтезом математических идей с конкретным анализом чрезвычайно сложных проблем их технической реализации. Является основателем теории информации, нашедшей применение в современных высокотехнологических системах связи. Шеннон внес огромный вклад в теорию вероятностных схем, теорию автоматов и теорию систем управления области наук, входящие в понятие «кибернетика». В 1948 году предложил использовать слово «бит» для обозначения наименьшей единицы информации (в статье «Математическая теория связи»).hello_html_78674726.jpg


ГРЕЙС ХОППЕРhello_html_m4461fae4.png

(1906-1992)

Американская программистка создала первую компилирующую программу. В 1928 году окончила колледж, а затем в Йельском университете получила степень доктора математики. Принимала участие в создании ЭВМ Марк I, II, III, DNIVAC. Участвовала в разработке языков программирования Ассемблер, Автокод, Кобол и машинных языков для компьютера «Марк 1». В 1944 году получила первое офицерское звание, а впоследствии и звание адмирала.

Американский компьютерный учёный и военный деятель, контр-адмирал, работала над созданием первого в США компьютера Марк I, разработала первый в истории компилятор.

В её честь был назван эсминец ВМФ США USS Hopper (DDG-70).

ГОВАРД АЙКЕН

(1900-1973)

Американский математик, профессор Гарвардского университета. С группой инженеров фирмы IBM разработал “Марк-1” управляющую вычислительную машину (вес машины 5 тонн) для баллистических расчетов ВМС США. “Марк-1 отличалась высокой работоспособностью (если этот термин можно применить к машине) и надежностью. Этот колосс работал по 24 часа в сутки, без выходных, выполняя главным образом расчеты по секретным проектам военно-морского флота. За первые три года работы на компьютере “Марк-1 были составлены 19 таблиц различных математических функций (функций Бесселя, функций Хенкеля, интегральных синусов и косинусов и т. д.). Многочисленные исследования, связанные с решением больших систем линейных уравнений, с помощью компьютера “Марк-1 проводил профессор отделения экономики Гарвардского университета Василий Леонтьев (позже лауреат Нобелевской премии). Компьютер состоял из электромеханических реле. Команды кодировались на бумажных перфолентах. Умножение двух 23 значных чисел производилось за 3 с. Последний компьютер, созданный Г. Айкеном в Гарварде для военно-воздушных сил, “Марк-IV” - был закончен в 1952 году. В отличие от проектируемых в то время машин на основе менее надежной электростатической памяти, память “Марк-IV” с произвольным доступом состояла из 200 сдвигающих регистров на магнитных сердечниках. Машина имела также память большого объема на магнитном барабане с отдельными секторами для 4000 16-разрядных чисел и для 1000 команд. В машине были применены индексный регистр и декодирующее устройство со специальной клавиатурой для записи программ в алгебраических выражениях, близких к обычной записи. Большие успехи в деле автоматизации программирования принадлежат Грейс Хоппер (контр-адмирал ВМС США), которая работала с машинами “Марк” в Гарварде с 1944 по 1949 год. Ее вклад в дело создания первых компиляторов (кстати, термин “компилятор” был впервые введен Грейс Хоппер) и первых языков программирования неоспорим, а ее имя в тот период неразрывно связано с именем Говарда Айкена и его компьютерами.hello_html_m379f7513.jpg

АЛОН ТЬЮРИНГhello_html_m5e74061e.jpg

(1912-1954 )

А́лан Мэ́тисон Тью́ринг английский математик, логик, криптограф, оказавший существенное влияние на развитие информатики. Кавалер Ордена Британской империи (1945), член Лондонского королевского общества (1951)[1]. Предложенная им в 1936 году абстрактная вычислительная «Машина Тьюринга», которую можно считать моделью компьютера общего назначения, позволила формализовать понятие алгоритма и до сих пор используется во множестве теоретических и практических исследований. Общепринято считать Алана Тьюринга отцом информатики и теории искусственного интеллекта.

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

Принимал участие в разработке машин: Колосс, ACE (Automatic Computing Engine). Работал в Манчестерском университете.

Тест Тьюринга эмпирический тест, идея которого была предложена Аланом Тьюрингом в статье «Вычислительные машины и разум» (англ. Computing Machinery and Intelligence), опубликованной в 1950 году в философском журнале «Mind». Тьюринг задался целью определить, может ли машина мыслить.

Стандартная интерпретация этого теста звучит следующим образом: «Человек взаимодействует с одним компьютером и одним человеком. На основании ответов на вопросы он должен определить, с кем он разговаривает: с человеком или компьютерной программой. Задача компьютерной программы ввести человека в заблуждение, заставив сделать неверный выбор». Все участники теста не видят друг друга. Если судья не может сказать определенно, кто из собеседников является человеком, то считается, что машина прошла тест. Чтобы протестировать именно интеллект машины, а не её возможность распознавать устную речь, беседа ведется в режиме «только текст», например, с помощью клавиатуры и экрана (компьютера-посредника). Переписка должна производиться через контролируемые промежутки времени, чтобы судья не мог делать заключения, исходя из скорости ответов. Во времена Тьюринга компьютеры реагировали медленнее человека. Сейчас это правило необходимо, потому что они реагируют гораздо быстрее, чем человек.

hello_html_m28a0c398.jpg

ДЖОН фон НЕЙМАН

(1903-1957)

Американский математик, внесший важный вклад в квантовую физику, квантовую логику, функциональный анализ, теорию множеств, информатику, экономику и другие отрасли науки.

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

Родился в Венгрии. С 1933 г. работал научным сотрудником института перспективных исследований в Принстоне. Предложил хранить программу в памяти ЭВМ, где хранятся данные; предложил метод моделирования случайных чисел “метод Монте-Карло”. Принимал участие в разработке ЭВМ ЭНИАК, ЭДВАК, ИАС, ДЖОНИАК.

ЭНИАК (ENIAC, сокр. от англ. Electronic Number Integrator And Computer Электронный числовой интегратор и вычислитель) первый широкомасштабный электронный цифровой компьютер, который можно было перепрограммировать для решения полного диапазона задач (предыдущие компьютеры имели только часть из этих свойств). Построен в 1946 году по заказу Армии США в Лаборатории баллистических исследований для расчётов таблиц стрельбы. Запущен 14 февраля 1946 года.


hello_html_m4474535c.png

СЕРГЕЙ АЛЕКСЕЕВИЧ

ЛЕБЕДЕВ

(1902-1974)

Советский ученый. С 1928 по 1946 год работал во Всесоюзном электротехническом институте. С 1946 по 1951 год ─ директор Института электротехники в г. Киев. С 1951 года руководит институтом точной механики и вычислительной техники АН СССР. Занимался разработкой Единой Энергитической Системы, вычислительных машин МЭСМ (малая электронная вычислительная машина).


Первый универсальный программируемый компьютер в континентальной Европе был создан командой учёных под руководством Сергея Алексеевича Лебедева из Киевского института электротехники СССР, Украина. ЭВМ МЭСМ (Малая электронная счётная машина) заработала в 1950 году. Она содержала около 6000 электровакуумных ламп и потребляла 15 кВт. Машина могла выполнять около 3000 операций в секунду. Другой машиной того времени была австралийская CSIRAC, которая выполнила свою первую тестовую программу в 1949 году. БЭСМ (большая электронная вычислительная машина).

hello_html_2d85482b.jpg







ЭВМ МЭСМ

ДЖОН БЭКУС

(1924-2007)

Американский ученый. Родился в 1925 году. После окончания Колумбийского университета поступает в 1950 году программистом в фирму IBM. Автор алгоритмического языка Фортран (1957 год) ─ первый коммерческий язык. Принимал участие в разработке языка Алгол-68(60). 17 октября 1977 года на ежегодной конференции АСМ премия Алана Тьюринга была вручена человеку, который создал первый высокоуровневый язык программирования для научных и технических применений и о котором прекрасные слова произнесла председатель комитета по премиям Джин Сэммит. Более официально премия была присуждена Джону Бэкусу "...за глубокий и важный вклад в создание практических систем программирования высокого уровня, в особенности за работы по FORTRAN и частые публикации формальных процедур для спецификации языков программирования". Чтобы оценить гений Джона Бэкуса, нужно представить себе компьютерный мир в начале его развития конец 40-х начало 50-х годов XX века. ENIAC пример сложности раннего программирования: программа составлялась с помощью электрических соединений на коммутационном поле, и для ее установки требовалось от двух до трех дней. Затем появились компьютеры с хранимой в памяти программой исчезла потребность в ее монтаже. Однако труд программиста по написанию, вводу и отладке программ по-прежнему был нелегким. Сначала программы писались на машинном языке (в двоичном коде), потом — в восьмеричном. Далее для облегчения участи программистов были придуманы подпрограммы, а затем первые ассемблеры. Если бы кто-то мог написать транслятор, который бы переводил команды высокого уровня в машинный код, причем этот код не отличался от ручного кода программиста это было бы реальным достижением.hello_html_42e0a07e.jpg

ТОМАС КУРЦ

(Американский ученый. Родился в 1928 году)hello_html_1641f2b3.jpg

С 1956 года работает в Дартмутском колледже (г. Хановер, штат Нью-Гэмпшир), доктор по математической статистике. Томас Курц один из разработчиков семейства высокоуровневых языков программирования BASIC (сокращение от англ. Beginner’s All-purpose Symbolic Instruction Code универсальный код символических инструкций для начинающих; англ. basic - основной, базовый). Степень доктора философии получил в 1956 году в Принстонском университете под научным руководством Джона Тьюки, в этом же году перешёл на работу на математический факультет Дармутского колледжа. В начале - середине 1960-х годов совместно с Джоном Кемени разработал язык программирования BASIC и DTTS (англ. Dartmouth Time Sharing System) систему разделения времени для PDP-1, отмечаемую как первую успешную крупномасштабную реализацию концепции разделения времени. В 1991 году награждён медалью «Пионер компьютерной техники»[1], а с 1994 года - фелло Ассоциации вычислительной техники.


ДЖОН КЕМЕНИ

(1926-1992)

Венгерский эмигрант, ученый. Родился в 1926 году. После войны работал ассистентом у Альберта Эйнштейна в Принстонском институте. С 1953 года возглавил математический факультет в Дартмутском колледже.hello_html_368d78a2.jpg

Т. Курц и Д. Кемени в 1964 году разработали алгоритмический язык Бейсик (Beginners All - Purpose Symbolic Code) универсальный символический код для начинающих. В 1984 году разработали микрокомьютерную версию Истинный Бейсик. В 1949 году Кемени защитил докторскую диссертацию на тему "Теория типов как альтернатива теории рядов". В качестве студента-докторанта Кемени назначили ассистентом Альберта Эйнштейна. "Люди меня часто спрашивали: обладал ли я достаточным знанием предмета физики, чтобы помочь Эйнштейну? А я отвечал: Эйнштейн не нуждался в помощи по физике".




НИКОЛАЙ ИВАНОВИЧ БЕССОНОВ

(1906-1963)hello_html_49c77d14.jpg


Советский инженер, специалист по счетно-аналитическим машинам. Сконструировал релейную вычислительную машину РВМ-1 («Релейная Вычислительная Машина-1»), в 1957 г. Она работала в двоичной системе счисления, числа представлены в форме с плавующей запятой. Мантисса 27 разрядов, порядок 6 разрядов, 5500 реле. Благодаря применению каскадного принципа выполнения арифметических операций, изобретенного самим же Бессоновым, ему удалось заметно повысить быстродействие машины: она выполняла до 1250 умножений в минуту, т. е. свыше 20 в секунду. Целый ряд технических усовершенствований настолько улучшил ее надежность и эксплуатационные качества, что она работала до 1965 года, конкурируя с уже действующими электронными вычислительными машинами в тех задачах, где объем вычислений составлял 2*10^5-2*10^6 арифметических операций на задачу. РВМ-1 считалась одной из самых надежных конструкций того времени, когда плановое время работы машин на электронных лампах составляло в среднем 16 часов в сутки.


ДЖОН УИЛЬЯМ МОЧЛИ

(1907 - 1980)hello_html_4e8fc071.jpg


Родился в 1907 году. После окончания университета был сотрудником Института Карнеги, где занимаются вопросами статистического анализа геофизических данных. Выдвинул идею построения вычислительного устройства на электронных лампах, которые использовал для счета и запоминания. Последние годы работал в Муровской электротехнической школе Пенсильванского университета. Американский физик и инженер, один из создателей первого в мире электронного компьютера ENIAC (1946).Работал преподавателем электротехники в Пенсильванском университете в Филадельфии (США).

Полученный при разработке машин опыт Мокли обобщил в виде структуры построения ЭВМ. Они были изложены в отчёте, составленном совместно с Г. Голдстайном и А. Берксом в 1946 году и положены в основу ЭВМ IAC, руководителем разработки которой стал Джон фон Нейман. Материалы отчёта не публиковались в открытой печати до конца 1950-х годов, но были переданы некоторым компаниям США и Великобритании. Известность фон Неймана как крупного учёного сыграла свою роль изложенные им принципы и структура ЭВМ стали называться фоннеймановскими, хотя их соавторами являлись также Мокли и Джон Преспер Экерт.


ПРЕСПЕР ЭККЕРТ hello_html_m4a9e2ea3.jpg

(1919-1995)


Выпускник Муровской электротехнической школы Пенсильванского университета.

Д. Моучли и Д. Преспер Эккерт разработали ЭВМ ЭНИАС (электронный цифровой интегратор и вычислитель Electronics Numerical Intergotor and Computer). ЭВМ имел 18000 электронных ламп, 1500 реле. Потреблял 150 кВт электроэнергии. Время на умножение ─ 0.0028 с., на сложение ─ 0.0002 с. Ввод данных с помощью перфокарт. Программы набирают с помощью штеккеров и наборных полей.

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


БАШАР ИСКАНДАРОВИЧ РАМЕЕВ

( 1918— 1994)

Советский учёный-изобретатель, разработчик первых советских ЭВМ (Стрела, Урал-1). Доктор технических наук (1962). Лауреат Сталинской премии (1954). Участник Великой Отечественной войны (войска связи).hello_html_38a45ead.jpg

В 1935 г. Б. И. Рамеев стал членом Всесоюзного общества изобретателей; В 1937 г. поступил в Московский энергетический институт. В 1938 г. после ареста отца Б. И. Рамеев был отчислен из института (и надолго остался без формального диплома о высшем образовании), он долго не мог найти работу. Наконец, в 1940 году он устроился техником в Центральный научно-исследовательский институт связи. С началом Великой Отечественной войны Б. И. Рамеев пошёл добровольцем в батальон связи Министерства связи СССР. В составе специальной группы обеспечения войск 1-го Украинского фронта УКВ-связью Б. И. Рамеев участвовал в форсировании Днепра в 1943 г. и освобождении Киева. В 1944 г. он был освобождён от службы в армии в соответствии с приказом о специалистах, направляемых для восстановления народного хозяйства. Поступил на работу в ЦНИИ № 108, руководил которым академик А. И. Берг. В начале 1947 года, слушая передачи «Би-Би-Си», Рамеев узнал о том, что в США создана ЭВМ «ЭНИАК», и почувствовал желание заняться этой новой тогда областью науки и техники. По рекомендации А. И. Берга он обратился к члену-корреспонденту АН СССР И. С. Бруку и в мае 1948 года был принят инженером-конструктором в Лабораторию электросистем Энергетического института АН СССР.Уже в августе 1948 Исаак Брук и Башир Рамеев представили первый в СССР проект «Автоматическая цифровая электронная машина».Среди множества разработок Рамеева ЭВМ «Стрела», серия ЭВМ «Урал». «Стрела́» - советская ЭВМ первого поколения.

Им разработана в СКБ-245, г. Москва (c 1958 года это НИИ электронных математических машин НИЭМ, с 1968 года НИЦЭВТ[1]). Главный конструктор Юрий Яковлевич Базилевский. В числе помощников был Башир Рамеев, впоследствии ставший главным конструктором ЭВМ серии Урал. Разработка завершена в 1953 году. Выпускалась серийно на Московском заводе счётно-аналитических машин (САМ), с 1953 по 1956 г. Всего было выпущено семь машин, которые были установлены в вычислительном центре Академии наук СССР, в МГУ, в вычислительных центрах нескольких министерств (ВЦ-1 МО СССР и др.). Быстродействие машины - 2000 оп/с. Элементная база - 6200 электровакуумных ламп, 60 000 полупроводниковых диодов. Оперативная память на электронно-лучевых трубках - 2048 слов. Длина слова 43 двоичных разряда (из них - 35 бит на мантиссу и 6 на экспоненту). Постоянное ЗУ на полупроводниковых диодах. Внешнее ЗУ - два накопителя на магнитной ленте. Ввод данных — с перфокарт и с магнитной ленты. Вывод данных — на магнитную ленту, на перфокарты и на широкоформатный принтер. Последний вариант «Стрелы» использовал память на магнитном барабане (4096 слов), вращающемся со скоростью 6000 об.мин.




ВИКТОР МИХАЙЛОВИЧ ГЛУШКОВ

(1923-1981)

Советский математик, кибернетик. Решил обобщённую пятую проблему Гильберта (англ.). Под его руководством в 1966 году была разработана первая персональная ЭВМ «МИР-1» (машина для инженерных расчётов).hello_html_m5e884fdf.jpg

Основатель и директор Института кибернетики АН УССР. Руководил разработкой ЭВМ Киев, Проминь, Мир, Днепр. Окончил университет в Ростове-на-Дону, затем работал в Уральском лесотехническом институте. Создал теории цифровых автоматов, дискретных преобразователей, макроконвейерных вычислителей и автоматизированных систем управления с использованием ЭВМ. В 1964 году прошла разработка концепции АСУП и участие в создании и внедрении «Системы Львов» на Львовском телевизорном заводе, принятой в эксплуатацию в 1967 году.

В 1966 году на механико-математическом факультете Киевского государственного университета им. Т. Шевченко была создана кафедра теоретической кибернетики, которую возглавил Глушков. Позднее, в 1969 году, был создан факультет кибернетики, на который и была перенесена эта кафедра. Инициатором создания факультета был Глушков, ставший первым деканом. В 1967 году в Киеве под руководством академика Глушкова была организована кафедра МФТИ при Институте кибернетики АН УССР, в будущем Институт кибернетики им. В. М. Глушкова НАН Украины. Глушков был инициатором и главным идеологом разработки и создания Общегосударственной автоматизированной системы учёта и обработки информации (ОГАС), предназначенной для автоматизированного управления всей экономикой СССР в целом. Для этого им была разработана система алгоритмических алгебр и теория для управления распределёнными базами данных

СЕЙМУР ПЕЙПЕРТ

(Родился в 1928 году)

Выдающийся математик, программист, психолог и педагог. Один из основоположников теории искусственного интеллекта, Американский профессор математики и педагогики. В конце 60-х годов разработал алгоритмический язык Лого (по-гречески «слово»). В 1964 году работал в лаборатории искусственного интеллекта МТИ. hello_html_7159bb97.jpg

«Изучение языков – одно из увлекательнейших занятий для ребенка. Каждый ребенок может научиться разговаривать с компьютером». Доктор Пейперт имеет заслуженную репутацию выдающегося учёного за свои работы в области математики, искусственного интеллекта и использования компьютера для образования. Он утверждал, что дети могут успешнее учиться, используя современные технологии. Пейперт несколько раз приезжал в Россию, бывал в Москве и в Санкт-Петербурге (впервые в 2001 году , последний раз - в мае 2005), выступал перед учителями и администраторами образовательных учреждений. Он пропагандировал использование новых технологий в образовании как средство преодолеть отставание России от других стран LOGO - это не игрушка, а настоящий язык программирования, но только для детей.

НИКЛАУС ВИРТ hello_html_m5bdcc625.jpg

(Родился в 1934 году)

Швейцарский учёный, специалист в области информатики, один из известнейших теоретиков в области разработки языков программирования, профессор компьютерных наук (ETH), Лауреат премии Тьюринга 1984 года. Ведущий разработчик языков Паскаль, Модула-2, Оберон.

Профессор информатики Федерального технического университета Щвейцарии. Увлекался построением радиоуправляемых моделей самолетов. В 1963 году получил степень бакалавра по электронике в Калифорнийском университете. В 1968 году после пяти лет работы в Стенфордском университете создал язык программирования Паскаль. ”Искусство инженера сделать сложные задачи простыми”. Язык Паскаль путь к структурному программированию.


АНДРЕЙ ПЕТРОВИЧ ЕРШОВ

(1931 – 1988)

Советский учёный, один из пионеров теоретического и системного программирования, создатель Сибирской школы информатики, академик АН СССР. Его работы оказали огромное влияние на формирование и развитие вычислительной техники не только в СССР, но и во всём мире. Советский ученый в области математики, информатики и вычислительной техники. Один из основателей школьной информатики и вычислительной техники. Написал первые учебники по информатике и вычислительной технике для школьников. Занимался теорией по автоматизации программирования, математического обеспечения ЭВМ.hello_html_36200f8.jpg




ГЕННАДИЙ АНАТОЛЬЕВИЧ ЗВЕНИГОРОДСКИЙ

(1952 – 1984) hello_html_m6bce6b57.jpg

Советский ученый в области математики, информатики и вычислительной техники. Работал в Академгородке в Новосибирске.

Разработал алгоритмические языки РАБИК, РАПИРА, ШКОЛЬНИЦА для первых отечественных школьных вычислительных машин. Один из первых основателей школьной информатики. Звенигородский был одним из организаторов Летних школ юных программистов, которые проводились в новосибирском Академгородке с 1976 г. до сих пор, Всесоюзной заочной школы программирования, организованной на базе журнала для школьников «Квант». Он регулярно вёл занятия в воскресной школе юных программистов при ВЦ СО АН СССР.


НИКОЛАЙ ПАНТЕЛЕМОНОВИЧ

БУСЛЕНКО

(1922 – 1977)

Советский математик, член-корреспондент АН СССР (1966), член Президиума Научного совета АН СССР по комплексным проблемам кибернетики. Известность получили работы Б. по моделированию на ЭВМ сложных систем, функционирующих в условиях воздействия большого количества взаимозависимых случайных факторов; последующие труды посвящены машинным методам количественного и качественного исследования больших систем. hello_html_475bb237.jpg



ПЕТЕР НАУР

(Родился 25 октября 1928 года)

Один из создателей языка программирования АЛГОЛ. Датский учёный в области информатики, один из пионеров компьютерной науки. Более всего известен как один из разработчиков первого языка структурного программирования Алгол 60 и, совместно с Бэкусом, как изобретатель формы Бэкуса — Наура.hello_html_7d6ec791.jpg



ГУРИЙ ИВАНОВИЧ МАРЧУК

( Родился в 1925 году) hello_html_52b44e43.jpg

Советский математик. С 1964-1978 гг. был директором Вычислительного отделения АН СССР. Президент академии наук СССР. Основные труды по вычислительной и прикладной математике, моделированию в задачах физики атмосферы и окружающей среды. С 1980 по 2003 год заведующий кафедрой математического моделирования физических процессов Московского физико-технического института (МФТИ), с 2004 по 2013 год возглавлял кафедру вычислительных технологий и моделирования факультета вычислительной математики и кибернетики в Московском государственном университете (МГУ) им. М. В. Ломоносова По совместительству с 1980 по 2000 год директор Отдела вычислительной математики АН СССР, впоследствии Института вычислительной математики РАН, с 2000 года его почётный директор.


БИЛЛ ГЕЙТС

(Родился в 1955 году)

Основатель фирмы Microsoft. Американский предприниматель и общественный деятель, один из создателей (совместно с Полом Алленом) операционной системы MS-DOS и крупнейший акционер компании Microsoft. До июня 2008 года являлся руководителем компании, после ухода с поста остался в должности её неисполнительного председателя совета директоров. В 10 классе написал программу составления расписаний для школы. В 1973 году поступил в Гарвардский университет, который бросил после организации фирмы Microsoft с другом Полом Алленом. В 1983 году фирма разработала текстовый редактор Word, а в 1990 году введена система Windows 3.0. Также он является сопредседателем благотворительного Фонда Билла и Мелинды Гейтс. В период с 1996 по 2007 год и в 2009 году самый богатый человек планеты по версии журнала Forbes. Его состояние в сентябре 2012 года по данным журнала Forbes оценивалось в 66 млрд долларов, увеличившись на 7 млрд долларов по отношению к тому же месяцу прошлого года. Это 19 раз подряд сделало его самым богатым американцем и вторым во всём мире. Билл Гейтс является одним из рекордсменов по размеру средств, переданных на благотворительность: в период с 1994 по 2010 год вложил в Фонд Билла и Мелинды Гейтс более $28 млрд[3]. В феврале 2010 года Гейтс выступил с предложением ко всем миллиардерам о передаче половины их состояния на благотворительную деятельность.hello_html_m17a7f4ce.jpg




ПИТЕР НОРТОН

(Родился в 1943 году)hello_html_m5d9ce587.jpg

В 1965 окончил учебу. В 1970-х годах некоторое время был буддистским монахом. В 1980-х годах создал популярную программу для персональных компьютеров, позволяющую восстанавливать стертые данные. Эта утилита вместе с несколькими другими образовали пакет Norton Utilities. Вскоре в пакет был включен Norton Commander, удобный файловый менеджер для операционной системы DOS.

В 1980-е годы П. Нортон был владелецем компании «Peter Norton Computing» и автор бестселлера «The Peter Norton Programmer’s Guide to the IBM-PC». В 1990 году он продал свою компанию фирме Symantec вместе с брендом «Norton». Годом ранее организовал вместе с женой благотворительный фонд семейства Питера Нортона (Peter Norton Family Foundation) для поддержки художников. Семейство Нортонов владельцы самой большой в США коллекции современного искусства.

Один из лучших современных программистов, разработал системы Norton Commander, Norton Utilities. Окончил Калифорнийский университет, основал фирму Питер Нортон.

ВЛАДИМИР АНДРЕЕВИЧ

МЕЛЬНИКОВhello_html_m6e660de5.jpg

(1928 – 1993)

Ученый, инженер, руководитель создания отечественной вычислительной техники серии БЭСМ (2 – 6), Электроника СС БИС Супер ЭВМ. С 1983 года возглавлял Институт проблем кибернетики АН СССР. Был главным редактором журнала «Информатика и образование».


ФИЛИПП КАН

(Родился в 1952 году)hello_html_56a56fd0.jpg

Новатор технологии и предприниматель, которому приписывают создание первой телефонной камеры для обмена фотографиями в публичных сетях. Кан основал четыре технологии компании: Fullpower технологий, Starfish Software, LightSurf технологий и Borland Программист, основатель фирмы Борланд Интернэшнл. В 1982 года разработал язык программирования Турбо – Паскаль. Родился во Франции, окончил университет в Цюрихе.


А́КСЕЛЬ ИВАНОВИЧ БЕРГ

( 1893 - 1979)hello_html_m6091513e.jpg

Советский учёный радиотехник, адмирал, заместитель министра обороны СССР. С 1950 по 1960 год председатель Всесоюзного научного совета по радиофизике и радиотехнике АН СССР. С 1959 года председатель научного совета по комплексной проблеме «Кибернетика» при Президиуме АН СССР. Возглавлял координацию исследований по кибернетике. Внёс значительный вклад в становление в СССР бионики, технической кибернетики, структурной лингвистики, искусственного интеллекта. « Отец» советской кибернетики.

НОРБЕРТ ВИНЕРhello_html_m3ea6f6f4.jpg

(1894- 1964)

Американский учёный, выдающийся математик и философ, основоположник

кибернетики и теории искусственного ин-

теллекта.

Основные труды:

Кибернетика, или Управление и связь в животном и машине. М.: Сов. радио, 1968. 320 с.

Нелинейные задачи в теории случайных процессов. М.: ИЛ, 1961. 158 с.

Управление и связь в животном и машине. Новые главы кибернетики. М.: Совэ радио, 1963. 120 с.

Я математик. М.: Наука, 1964. 354 с.

Интеграл Фурье и некоторые его приложения. М.: Физматлит, 1965. 256 с.


БЬЁРН СТРАУСТРУПhello_html_m595f8b92.jpg

(Родился в 1950 году)

Программист, автор языка программирования C++. Окончил Орхусский университет (Дания, 1975) по математике и информатике, защитил диссертацию (Ph. D.) по информатике в Кембридже (1979). До 2002 года возглавлял отдел исследований в области крупномасштабного программирования в компании AT&T (Computer Science Research Center of Bell Telephone Laboratories). Ныне профессор Техасского университета А&М.

hello_html_m40382e6.jpg

ДЕННИС РИТЧИ

(1941 - 2011)

Компьютерный специалист, известен по участию в создании языков программирования BCPL, B, C, расширения ALTRAN для языка программирования FORTRAN, участию в разработке операционных систем Multics и UNIX.


АНДЕРС ХЕЙЛСБЕРГ

(Родился в 1960 году)hello_html_m24565e0c.jpg

Датский инженер-программист.

В 1980 году написал свой первый компилятор языка Паскаль, который после портирования под операционную систему MS-DOS продал фирме Borland. Эта версия легла в основу Turbo/Borland Pascal, который развивался до 1995 года. До 1996 года Хейлсберг был главным инженером фирмы Borland, где создал новое поколение компиляторов Паскаля язык Delphi, компилятор которого работал уже под операционной системой Windows.

В 1996 году он перешёл в Microsoft, где работал над такими проектами, как J++ и Microsoft Foundation Classes. Позже возглавил группу по созданию и проектированию языка C#.

В 2000 году Андерс Хейлсберг получил награду популярного журнала Dr. Dobb's Journal за создание Turbo Pascal, Delphi и C#.


ВИЛЬГЕЙМ ШИККАРД

(1592 -1635)hello_html_3600b879.jpg

Немецкий математик и астроном, профессор Тюбингенского университета, создатель механического вычислительного устройства. Шиккард с 1617 года преподавал в Тюбингенском университете восточные языки. Обратив внимание на незаурядные способности молодого ученого, Кеплер порекомендовал ему заняться математикой. В 1631 году Шиккард стал профессором математики и астрономии Тюбингенского университета.

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


КЛОД ПЕРРО

(1613 – 1688)

Французский архитектор и учёный. Родился в семье юриста, судьи Парижского парламента Пьера Перро. Братья Шарль и Пьер стали писателями, Николя богословом. Сам Клод Перро изучал медицину и достиг успехов в биологии, благодаря которым стал одним из первых членов Французской академии наук. Он занимался и механикой Среди изобретений Клода Перро (25.09.1613 – 09.10.1688) – «машины для поднятия тяжестей», «маятниковые часы, приводимые в движение с помощью воды», «машина для увеличения эффекта огнестрельного оружия», «система рычагов для вращения зеркала телескопа» и многие другие. Под номером десять в «Сборнике» числится изобретение, объясняющее наш интерес к Клоду Перро, – это суммирующая машина, в которой взамен зубчатых колес используются зубчатые рейки (кремальеры). «Я назвал эту машину «Рабдологический абак», потому что древние называли абаком небольшую доску, на которой написаны цифры, а Рабдологией – науку выполнения арифметических операций с помощью маленьких палочек с цифрами...» – так начинает описание своего изобретения Клод Перро.hello_html_m3894db7c.png






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

Первое поколение (1945-1954)

Развитие ЭВМ делится на несколько периодов. Поколения ЭВМ каждого периода отличаются друг от друга элементной базой и математическим обеспечением. Первое поколение (1945-1954) ЭВМ на электронных лампах (вроде тех, что были в старых телевизорах). Это доисторические времена, эпоха становления вычислительной техники. Большинство машин первого поколения были экспериментальными устройствами и строились с целью проверки тех или иных теоретических положений. Вес и размеры этих компьютерных динозавров, которые нередко требовали для себя отдельных зданий, давно стали легендой. Ввод чисел в первые машины производился с помощью перфокарт, а программное управление последовательностью выполнения операций осуществлялось, например в ENIAC, как в счетно-аналитических машинах, с помощью штеккеров и наборных полей. Хотя такой способ программирования и требовал много времени для подготовки машины, то есть для соединения на наборном поле (коммутационной доске) отдельных блоков машины, он позволял реализовывать счетные "способности" ENIAC'а и тем выгодно отличался от способа программной перфоленты, характерной для релейных машин. Солдаты, приписанные к этой огромной машине, постоянно носились вокруг нее, скрипя тележками, доверху набитыми электронными лампами. Стоило перегореть хотя бы одной лампе, как ENIAC тут же вставал, и начиналась суматоха: все спешно искали сгоревшую лампу. Одной из причин, возможно, и не слишком достоверной, столь частой замены ламп, считалась такая: их тепло и свечение привлекали мотыльков, которые залетали внутрь машины и вызывали короткое замыкание. Если это правда, то термин "жучки" (bugs), под которым подразумевают ошибки в программных и аппаратных средствах компьютеров, приобретает новый смысл. Когда все лампы работали, инженерный персонал мог настроить ENIAC на какую-нибудь задачу, вручную изменив подключение 6 000 проводов. Все эти провода приходилось вновь переключать, когда вставала другая задача. Первой серийно выпускавшейся ЭВМ 1-го поколения стал компьютер UNIVAC (Универсальный автоматический компьютер). Разработчики: Джон Мочли (John Mauchly) и Дж. Преспер Эккерт (J. Prosper Eckert). Он был первым электронным цифровым компьютером общего назначения. UNIVAC, работа по созданию которого началась в 1946 году и завершилась в 1951-м, имел время сложения 120 мкс, умножения 1800 мкс и деления 3600 мкс. UNIVAC мог сохранять 1000 слов, 12000 цифр со временем доступа до 400 мкс максимально. Магнитная лента несла 120000 слов и 1440000 цифр. Ввод/вывод осуществлялся с магнитной ленты, перфокарт и перфоратора. Его первый экземпляр был передан в Бюро переписи населения США. Программное обеспечение компьютеров 1-го поколения состояло в основном из стандартных подпрограмм. Машины этого поколения: « ENIAC », «МЭСМ», «БЭСМ», «IBM -701», «Стрела», «М-2», «М-3», «Урал», «Урал-2», «Минск-1», «Минск-12», «М-20» и др. Эти машины занимали большую площадь, использовали много электроэнергии и состояли из очень большого числа электронных ламп. Например, машина «Стрела» состояла из 6400 электронных ламп и 60 тыс. штук полупроводниковых диодов. Их быстродействие не превышало 2 - 3 тыс. операций в секунду, оперативная память не превышала 2 Кб. Только у машины «М-2» (1958) оперативная память была 4 Кб, а быстродействие 20 тыс. операций в секунду.

hello_html_m3dcf236c.png








Компьютер БЭСМ-6

hello_html_18484866.png







ЭВМ Эниак


Второе поколение: конец 50-х ─ конец 60-х годов

hello_html_m214b0727.jpg

Следующим крупным шагом в истории компьютерной техники, стало изобретение транзистора в 1947 году. Они стали заменой хрупким и энергоёмким лампам. О компьютерах на транзисторах обычно говорят как о «втором поколении», которое доминировало в 1950-х и начале 1960-х. Благодаря транзисторам и печатным

платам, было достигнуто значительное уменьшение размеров и объёмов потребляемой энергии, а также повышение надёжности. Например, IBM 1620 на транзисторах, ставшая заменой IBM 650 на лампах, была размером с офисный стол. Однако компьютеры второго поколения по-прежнему были довольно дороги и поэтому использовались только университетами, правительствами, крупными корпорациями.hello_html_md1cf5f3.png

Быстродействие до миллиона операций в секунду! (Сравните несколько тысяч у ламповых компьютеров).

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

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

В 1964 году появился первый монитор для компьютеров ─ IBM 2250. Это был монохромный дисплей с экраном 12 х 12 дюймов и разрешением 1024 х 1024 пикселов. Он имел частоту кадровой развертки 40 Гц. Первой ЭВМ, в которой частично использовались полупроводниковые приборы вместо электронных ламп, была машина SEAC (Standarts Eastern Automatic Computer), созданная в 1951 году.

Третье поколение: 1970 – 1980 годы

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

Бурный рост использования компьютеров начался в третьем поколении вычислительных машин. Начало этому положило изобретение интегральных схем, которые независимо друг от друга изобрели лауреат Нобелевской премии Джек Килби и Роберт Нойс. Позже это привело к изобретению микропроцессора Тэдом Хоффом (компания Intel).

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

Начиная с момента широкого использования интегральных схем в компьютерах, технологический прогресс в вычислительных машинах можно наблюдать, используя широко известный закон Мура. Один из основателей компании Intel Гордон Мур в 1965 году открыл закон, согласно которому количество транзисторов в одной микросхеме удваивается через каждые 1,5 года. В вычислительных машинах третьего поколения значительное внимание уделяется уменьшению трудоемкости программирования, эффективности исполнения программ в машинах и улучшению общения оператора с машиной. Это обеспечивается мощными операционными системами, развитой системой автоматизации программирования, эффективными системами прерывания программ, режимами работы с разделением машинного времени, режимами работы в реальном времени, мультипрограммными режимами работы и новыми интерактивными режимами общения. Появилось и эффективное видеотерминальное устройство общения оператора с машиной видеомонитор, или дисплей.

Однако и это еще не все поистине, рубеж 60-х и 70-х годов был судьбоносным временем. В 1969 году зародилась первая глобальная компьютерная сеть зародыш того, что мы сейчас называем Интернетом. И в том же 1969 году одновременно появились операционная система Unix и язык программирования С («Си»), оказавшие огромное влияние на программный мир и до сих пор сохраняющие свое передовое положение.


Четвертое поколение: 1980 ─ по нынешнее время

hello_html_m3709fd58.jpg











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

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

Чтобы получить ответ на этот вопрос, давайте вернемся к началу 70-х годов. Именно в это время была предпринята попытка выяснить, можно ли на одном кристалле разместить больше одной интегральной схемы. Оказалось, можно! Развитие микроэлектроники привело к созданию возможности размещать на одном-единственном кристалле тысячи интегральных схем. Так, уже в 1980 году, центральный процессор небольшого компьютера оказалось возможным разместить на кристалле площадью всего в четверть квадратного дюйма (1,61 см2). Началась эпоха микрокомпьютеров.

Каково же быстродействие современной микроЭВМ? Оно в 10 раз превышает быстродействие ЭВМ третьего поколения на интегральных схемах, в 1000 раз превышает быстродействие ЭВМ второго поколения на транзисторах и в 100000 раз превышает быстродействие ЭВМ первого поколения на электронных лампах.hello_html_3afc12d5.jpg

К тому же, почти 40 лет назад компьютеры типа Юнивак стоили около 2,5 млн. долларов. Сегодня ЭВМ со значительно большим быстродействием, более широкими возможностями, более высокой надежностью, существенно меньшими габаритами и более простая в эксплуатации стоит примерно 1000 долларов. Через 2 года стоимость ЭВМ снижается примерно в 2 раза.

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

Первый персональный компьютер создали в апреле 1976 года два друга, Стив Джобе (1955 г. р.) сотрудник фирмы Atari, и Стефан Возняк (1950 г. р.), работавший на фирме Hewlett-Packard. На базе интегрального 8-битного контроллера жестко запаянной схемы популярной электронной игры, работая вечерами в автомобильном гараже, они сделали простенький программируемый на языке Бейсик игровой компьютер «Apple», имевший бешеный успех. В начале 1977 года была зарегистрирована Apple Сотр., и началось производство первого в мире персонального компьютера Apple.


История создания первого IBM PC

(ай-би-э́м пи-си)



hello_html_5629f64e.jpg











IBM PC положил начало семейству наиболее распространенных современных персональных компьютеров, началась в июле 1980 года и была завершена 12 августа 1981 года представлением модели IBM 5150. Модель стоила 2880 долларов.

В то время фирма IBM не придавала большого значения персональным компьютерам, поэтому в IBM PC было использовано много «чужих» компонентов (например, использовался процессор фирмы Intel, а операционная система MS-DOS была лицензирована Microsoft у компании Seattle Computer Products) - до этого IBM предпочитала всё делать самостоятельно. Более того, вопреки жёсткой политике IBM в области интеллектуальной собственности, ни эти компоненты, ни разработанная тут же базовая система ввода-вывода не были залицензированы, что позволило сторонним фирмам, пользуясь опубликованными спецификациями, создать множество клонов РС и отобрать у IBM львиную долю этого быстрорасширяющегося рынка.

В течение одного месяца компания IBM сумела продать 241 683 компьютера IBM PC. По договоренности с руководителями Microsoft компания IBM отчисляла создателям программы определенную сумму за каждую копию операционной системы, устанавливавшуюся на IBM PC. Благодаря популярности персонального компьютера IBM PC руководители Microsoft Билл Гейтс и Пол Аллен вскоре стали миллиардерами, а Microsoft заняла лидирующее положение на рынке программных продуктов.

Предшественниками IBM PC были компьютеры Altair, IMSAI, Apple I и II, Radio Shack TRS-80, Atari 400 и 800, Commodore PET и многие другие.

Конфигурация первого IBM PC:

Процессор Intel 8088 с частотой 4.77 МГц, емкость ОЗУ от 16 до 256 Кбайт. Флоппи-дисководы емкостью 160 Кбайт приобретались за отдельную плату в количестве 1 или 2 шт. Жесткого диска не было.


ГЛАВА 2. ТЕОРИЯ ИНФОРМАЦИИ

2.1. Общие сведения об информации

Термин <информация> (от латинского informatio разъяснение, представление) является основным понятием науки информатики, которая определяется как ввод, переработка, хранение, вывод и передача информации с помощью ЭВМ. По утверждению Н. Винера, информация есть информация, а не материя и не энергия. В качестве источника информации может выступать лишь некоторый материальный объект, который излучает сигналы различного вида (электромагнитные, световые, звуковые, текстовые и т. д.). Эти сигналы приходят к приемнику информации. Информация это сообщение о состоянии и свойствах объекта, явления, процесса, это сведения об окружающем мире и протекающих в нем процессах, воспринимаемые мозгом человека или техническим устройством. В качестве технического устройства может быть система управления, которая предназначена для получения информации с целью управления объектом. Понятие информации относится и к биологическим системам, например, способность воспринимать информацию для выживания,( свойство чувствительности к прикосновению, способность ловить насекомых, запоминать и отбирать для выживания необходимую информацию). Как в живых организмах, так и в искусственных системах имеют место информационные процессы, которые связаны с обменом информаций между центрами и перефирийными элементами. В общем случае эти информации процессы сводятся к восприятию, обработке и хранению информации с последующим ее использованием. Информация это не материя, а свойство организованной материи, т. е. она не обладает свойствами материи как масса, не подчиняется законам сохранения массы и энергии. Основополжником теории информации является Клод Шеннон. В 1948 году предложил использовать слово «бит» для обозначения наименьшей единицы информации. Ввел понятие энтропии – меры хаотичности информации, котрая определяет неопределенность появления любого символа. Энтропия по Шеннону определяется по формуле

hello_html_m710cd42.gif

,

где pi – веоятность i-го события .


2.2 Формы представления и кодирование информации

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

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

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

Дискретность по величине ( по уровню) означает, что амплитуда, уровень сигнала могут принимать лишь определенное конечное количество значений.

Методы преобразования непрерывных сигналов в дискретные называют квантованием по времени или по уровню.

Для автоматического преобразования сигналов из одной формы в другие используются аналого-цифровые и цифро-аналоговые преобразователи. Существует алфавитный способ записи информации, основанный на представление в языковой форме, т. е. в виде слов, составленных из букв и символов алфавита. Так, алфавит русского языка содержит 33 буквы, немецкого ─ 26, греческого ─ 24 буквы, а алфавит внутреннего языка ЭВМ имеет всего два символа 0 и 1.

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

Основу алфавита составляет система счисления количество цифр (символов), используемых для представления чисел (величин).

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



Любое число N в позиционной системе счисления с основанием “а” выражается в виде:

,hello_html_m65aaf053.gif


где i порядковый номер;

k коэффициент, принимающий значение: 0, 1, ... ( а -1);

n количество разрядов целого числа;

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

а количество символов (чисел) в системе счисления (основание системы счисления).

Пример. Представить число 36 в различных системах счисления:

- десятичной системе счисления (а=10)

hello_html_34bc0f32.gif

- двоичной системе счисления (а=2)

hello_html_m76a5ab32.gif

- троичной системе счисления (а=3)

hello_html_2924e8f9.gif

- в восьмеричной системе счисления (а=8)

hello_html_2f9bd53.gif

- шестнадцатиричной системе счисления (а=16)

hello_html_m6e6426f6.gif

Количество элементов М, необходимых для хранения N чисел, может определяться по зависимости

hello_html_m60972525.gif.

Если надо определить, при каком основании α количество элементов М будет минимальным, то после дифференцирования


hello_html_32156a0.gif


можно определить, что следует выбрать основание системы между 2 и 3.

Имеем

а=2 а=3 а=5 а=16 а=20

М=39,2 М=38,24 М=42,5 М=60 М=91,5

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

Ральф Винтон Лайон Хартли (1888 - 1970) американский учёный-электронщик. Предложил генератор Хартлипреобразование Хартли и сделал вклад в теорию информации, введя в 1928 году логарифмическую меру информации H=Klog2(M), которая называется хартлиевским количеством информации или просто мерой Хартли. hello_html_3894d90e.jpg

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

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

I1=log N. .

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

H = f (n) = log n,

где n количество равновероятных исходов;

Н неопределенность исхода опыта (энтропия ).

При n=1 величин неопределенности обращается в ноль , а при росте n неопределенность возрастает.

Если n=2, то такое соотношение лежит в основе единицы измерения неопределенности, называемой битом. Слово bit образовано из двух начальных букв английского алфавита binary unit, т.е. двоичная единица, которая представляет неопределенность, содержащаяся в одном опыте, имеющем два равновероятных исхода.

Если обозначить p=1/n, где Р − вероятность любого из n равновероятных исхода опыта, то выражения для измерения неопределенности можно переписать в виде

Н = n ( p log р ).

При наличии N опытов можно переписать зависимость в формеhello_html_m710cd42.gif

.


Если алфавит источника сообщений содержит всего два символа, появление которых характеризуется равными вероятностями р=0,5, то количество информации

hello_html_40443d7e.gif

.


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

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

1 Кбит = 1024 бит, 1 Кбайт = 1024 байт,

1 Мбит = 1024 Кбит, 1 Мбайт = 1024 Кбайт,

1 Гбит = 1024 1Мбит, 1 Гбайт = 1024 1Мбайт.

Эти единицы соответствия читаются как 1 килобайт, 1 мегобайт, 1 гигобайт.

Пример. Определить количество информации в русском тексте, состоящей из m-букв.

В русском языке имеются 32 буквы. Средняя информация на одну букву русского алфавита равна

hello_html_m67bb3512.gif

.


hello_html_6c76968e.gif


Если все буквы алфавита равновероятностны, то количество информации на букву равно I = log 32= 5 бит.

Если учитывать вероятности появления букв в русском тексте, то средняя информация на одну букву равна 4.35 бит.

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

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

Суть метода в том, что мера ценности информации определяется как изменение вероятности достижения цели при получении i-й информации.

hello_html_m5a7e9c48.gif


,

где p0 − начальная информация до получения информации, вероятность достижения цели;

p1 вероятность достижения цели после получения информации,

если Iy = 0, то информация пустая,

если Iy < 0 , то это дизинформация,.

если Iy > 0 , то это полезная информация.



Александр Александрович Харкевич hello_html_m5460005d.png

19041965)

Советский учёный, член-корреспондент АН УССР, действительный член АН СССР, профессор, к 1951 г. − руководитель отдела технической физики киевского Института физики АН УССР. С 1922 по 1930 год учился в Ленинградском электротехническом институте имени В. И. Ульянова (Ленина). В 1924 году - монтёр в аккумуляторной лаборатории, позже практикант, техник и руководитель работ на заводе. К 1938 году  доктор технических наук, профессор, крупнейший специалист в области теоретической и прикладной акустики. В начале 50-х годов переехал в Москву и, объединив несколько разрозненных групп, создал и возглавил Институт проблем передачи информации Академии наук СССР. Он возглавлял этот институт вплоть до своей кончины. С 1965 до 1988 года институт возглавлял член-корреспондент АН СССР В. И. Сифоров. В 2004 году институту присвоено имя А. А. Харкевича. Скончался 30 марта 1965 года в Москве. Похоронен на Новодевичьем кладбище.

Мера Харкевича − мера оценки целесообразности информации, предложенная А. А. Харкевичем ,

hello_html_m3c388331.png

,


где р0  вероятность достижения цели до получения информации; 

р1 − вероятность достижения цели после получения и использования информации.

Закон Харкевича сформулирован в виде "Количество информации растет, по меньшей мере, пропорционально квадрату промышленного потенциала страны" .


ГЛАВА 3. ОСНОВНЫЕ ПРИНЦИПЫ ПОСТРОЕНИЯ ЭЛЕКТРОННЫХ ВЫЧИСЛИТЕЛЬНЫХ МАШИН

3.1. Общая характеристика ЭВМ

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

Основными показателями эффективности работы компьютеров являются производительность, емкость памяти и разрядность.

Производительность количество действий, выполняемых машиной в единицу времени (с). По производительности ЭВМ можно разделить на малые (10-50 тыс. операций /с), средние (от 50 тыс. до 1 млн операций /с), большие (свыше 1 млн операций /с). Под операциями подразумеваются короткие операции типа передачи или сложения. В последнее время большие по производительности ЭВМ стали характеризоваться не количеством операций в сек, а тактовыми частотами в МГц (мегагерцах). Так, для ЭВМ типа IBM от 2,5 МГц до 200 МГц и более. Емкость памяти ─ наибольшее количество данных, выраженных в единицах информации, которые одновременно могут храниться в памяти.

Емкость памяти приводится для различных видов запоминающих устройств. Так, для ОЗУ - оперативного запоминающего устройства, которое предназначено для временного хранения текущей информации как программ, так и данных, емкость памяти может составлять от 4 Мбайт до 32 Мбайт. Для долговременного хранения информации используется винчестер, емкость памяти может составлять от 400 Мбайт до 2 Гбайта.

Разрядность − характеристика ЭВМ, которая включает количество разрядов ЭВМ, используемых для изображения чисел. В настоящее время разрядность компьютеров составляет от 8 двоичных разрядов до 32 или 64.

В 90-х годах в учебных заведениях использовались различные виды компьютеров и комплектов управляемой вычислительной техники(КУВТ): Корвет, БК (КУВТ 76), УКНЦ, Дельта, Элара-Диск 128, Агат и другие. В настоящее время используются современные вычислительные комплексы типа IBM, Macintosh и др.

3.2 Основные принципы построения ЭВМ

В основе построения современных ЭВМ заложены общие принципы, разработанные выдающимся американским математиком Джоном фон Нейманом.

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

Второй принцип − это принцип хранения программы. Программа задачи хранится в основной памяти наряду с обрабатываемыми данными.

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

Таблица 4hello_html_m1026a7bc.png

где: АЛУ ─ арифметико-логическое устройство;

ДЗУ ─ долговременное запоминающее устройство;

ОЗУ ─ оперативное запоминающее устройство;

ПЗУ ─ постоянное запоминающее устройство;

РОН ─ регистр общего назначения (сверхоперативная

память;

СК ─ счетчик команд;

ДК ─ дешифратор программ;

БК ─ буфер команд;

Работа ЭВМ сводится к выполнению следующих этапов:

1. Выборка команды из памяти ОЗУ в буфер команд

2. Раскодирование команд в ДК.

3. Выборка данных из памяти ОЗУ,необходимых для выполнения команд ,с записью в регистры процессора.

4. Настройка АЛУ на выполнение конкретной программы в устройстве УУ;

5. Выполнение операций в АЛУ;

6. Запись результата вычислений в регистр процессора с возможностью перезаписи в ОЗУ;

7. Выбор последующей команды с помощью счетчика команд.

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

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

-параллельная обработка команд и данных;

- совмещение работ центральных и периферийных устройств;

-совмещение обработки очередной команды с вы боркой последующей команды;

-одновременное выполнение нескольких программ (мультипрограммный режим).

3.3. Структура электронных

вычислительных машин

Общее устройство компьютеров типа IBM

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

Процессор (системный блок) состоит из следующих элементов:

- микропроцессора МП;

- памяти (ОЗУ, ПЗУ);

- сопроцессора;

- контроллеров ;

- шин;

- материнской платы;

- дисководов;

- винчестера;

К внешним устройствам относятся: клавиатура, монитор (дисплей), принтер,”мышка”, сканер, модем.



Структура системного блока

Микропроцессор предназначен для непосредственного выполнения программ и для управления работой всех устройств компьютера. На ПЭВМ типа IBM используются микропроцессоры - Intel 8080, 8086, 80286, 80386, 80486, Pentium и др. В конце 1995 года фирмой INTEL выпущен новый микропрцессор PENTIUM PRO (P6) с тактовыми частотами 150,166,180,200 и более MГц.

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

- оперативное запоминающее устройство(ОЗУ) RAM (Random-Access-Memory) или быстродействующее запоминающее устройство с произвольным доступом. В настоящее время для работы с современными инструментальными программными средствами необходимо иметь от 4 Мбайт до 32 Мбайт памяти (емкости) ОЗУ;

- постоянное запоминающее устройство (ПЗУ) ROM (Read-Only- Memory) предназначено только для чтения информации из памяти, в которой хранятся константы и программы для обеспечения процедур начальной загрузки BIOS (Basic Input / Output System) базовой системы ввода и вывода.

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

хранения части операционной системы (ОС) DOS, которая

обеспечивает тестирование компьютера, начальную загрузку

ОС, а также выполнение основных низкоуровневых услуг ввода-

вывода; для передачи изображения на экран и т. д.;

В настоящее время ОЗУ реализуется в виде микросхем - SIMM (Siryle In-Line Memory Module), в которых может размещаться от 256 Кбайт до 32 Мбайт информации. Современные SIMM выпускаются 30 и 72 - контактные.

Оперативная память представляется в виде карты физического поля. Так, для IBM PC она имеет вид:

Начальный адрес Память

Десятеричный Шестнадцатеричный


0 0 RAM 256К (ОЗУ)

256К 4000 RAM 384К (ОЗУ)

640К А000 RAM 121К (ОЗУ)

- видеопамять

768К C000 ROM 129К (ПЗУ)

960К F000 ROM (ПЗУ)


Сопроцессор предназначен для работы с числами, представленными в форме чисел с плавающей запятой (Intel 8087, 80287, 80387).

Микропроцессоры Intel 80486 DX и Pentium сами поддерживают режим работы с плавающей запятой.

КЭШ память предназначена для быстрого доступа к оперативной памяти. Такая память имеет небольшой объем от 64 до 256 Кбайт. В КЭШ памяти хранятся наиболее часто используемые участки оперативной памяти.

Системные шины предназначены для обмена данными между устройствами ЭВМ. Обычно шины состоят из шины адреса, шины данных и шины управления. В зависимости от производительности в настоящее время используются следующие шины: ISA, MCA, EISA,VESA и т. д.

Дисководы − это устройства, предназначенные для чтения и записи данных с гибких магнитных дисков,а также для чтения информации с компакт-дисков. Дисководы подразделяются на магнитные и лазерные. Магнитные дисководы бывают двух размеров пяти и трехдюймовые. Для считывания и записи информации используются дискеты. Наиболее распространены дискеты размером 5,25 и 3,5 дюйма. Дискеты 5.25 дюйма имеют емкость 360 Кбайт (Double Side/Double Density DS/DD) и 1,2 Мбайт (Double Side/High DS/HD) Дискету на 360 Кбайт можно отформатировать (разметить) на 720 и 800 Кбайт. В современных компьютерах такие диски не используются.

Дискеты размером 3,5 дюйма имеют емкость памяти 0,7 и 1,4 Мбайт. Эти дискеты находятся в жестком пластмассовом конверте. Для защиты дискет от записи на дискетах 5,25 дюйма имеется прорезь, которую надо закрыть . На дискетах 3,5 дюйма имеется переключатель - защелка.

Лазерные дисководы CD-ROM считывают информамацию с компакт дисков, на которых размещается около 640 Мбайт информации (это эквивалентно обьему информации 275 томов энциклопедии по 1000 страниц в каждой).

Накопители на жестком диске (винчестеры) предназначены для постоянного хранения информации в компьютере. Емкость дисков бывает в следующих пределах: для IBM PC/XT, 80286 и 80386 от 40-400 Мбайт, а для IBM типа 80486 DX,PENTIUM от 500-800 до 2 Гбайт и более. Важной характеристикой винчестеров является время доступа к информации, выраженное в мс. У современных винчестеров время доступа в пределах от 18 мс до 8 мс. Производительность винчестера зависит от интерфейса, который обеспечивает подсоединение накопителя к контроллеру. В настоящее время встречаются следующие

виды интерфейса: ST 506/412,AT BUS(IDE) иSCSI. Наиболее производительным является интерфейс SCSI, имеющий скорость обмена 4 Мбайт в секунду.

Винчестеры обычно имеют наименование

HDD 840 Мb IDE, HDD 1Gb IDE

Контроллеры предназначены для управления работой периферийных устройств ( винчестера, монитора и т. д.) и обеспечивают их связь с основной платой. Имеются следующие контроллеры:дисководов BDD, винчестера HDD, монитора VGA, SVGA, принтера и “мыши” I/O card 2SIP.

Материнская плата предназначена для размещения микропроцессора и элементов памяти, контроллеров, параллельных и последовательных портов, блока питания. На материнской плате имеются разьемы расширения (слоты) . В них устанавливаются платы контроллеров, звуковые и видеоплаты, модем и сетевые платы. Разьемы расширения имеют несколько стандартов: PC, ISA, EISA,VESA LB, PCI.

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

Звуковые платы используются для цифровой записи, воспроизведения и обработки звука. Платы состоят из преобразователей, музыкальных синтезаторов и встроенные интерфейсы внешних устройств, например, компакт-диски. Звуковые платы бывают 8 и 16 − разрядные.

Видеоплаты предназначены для передачи видеоизображения с телевизора или видеокамеры. Защитные экраны используются для защиты зрения и кожи от негативного воздействия на центральную нервную систему излучений монитора. Ухудшение зрения зависит от яркого света от экрана и мерцания картинок изображений монитора. Существуют сетчатые защитные экраны, которые увеличивают время работы за экраном с 2 до 4,5 часов. Они также уменьшают на 50 % ультрафиолетовое излучение. Защитные экраны из стекла тяжелых металлов уменьшают как ультрафиолетовое, так и рентгеновское излучение на 80- 90%. Самыми совершенными являются защитные экраны “Total Shield”.

 Монитор (дисплей)  компьютера IBM PC предназначен для вывода на экран текстовой и графической информации. Мониторы бывают цветными и монохромными. Они могут работать в одном из двух режимов: текстовом или графическом.  В текстовом режиме экран монитора условно разбивается на отдельные участки ─ знакоместа, чаще всего ─ на 25 строк по 80 символов (знакомест). В каждое знакоместо может быть введен один из 256 заранее заданных символов. В число символов, изображаемых на экране в текстовом режиме, могут входить и символы кириллицы (буквы русского алфавита).

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

Графический режим монитора предназначен для вывода на экран графиков, рисунков и т. д. Разумеется, в этом режиме можно также выводить и текстовую информацию в виде различных надписей, причем эти надписи могут иметь произвольный шрифт, размер букв и т.д. В графическом режиме экран монитора состоит из точек, каждая из которых может быть темной или светлой на монохромных мониторах или одного из нескольких цветов ─ на цветном. Количество точек по горизонтали и вертикали называется разрешающей способностью монитора в данном режиме. Например, выражение “разрешающая способность 640 х 200” означает, что монитор в данном режиме выводит 640 точек по горизонтали и 200 точек по вертикали. Следует заметить, что разрешающая способность не зависит от размера экрана монитора, подобно тому, как и большой, и маленький телевизоры имеют на экране 625 строк изображения.

Наиболее широкое распространение в компьютере IBM PC получили мониторы типов MDA, CGA, Hercules, EGA и VGA.

Монитор Цвет/моно Текст режим Граф режим

EGA Цветной 80х25, 16 цветов 640х350,

VGA Цветной 80х25, 16 цветов 640х480.

Минимальным элементом изображения на экране является пиксель(picture element). Для вывода символов формируется матрица из пикселей. Для EGA − 8*14 (8 столбцов по 14 строк).

Четкость изображения на экране определяется физическими данными монитора (размер зерна люминофора и размер экрана по диагонали, например, 14, 15, 17, 20 дюйм, 1 дюйм = 2,54 см).

Клавиатура предназначена для ввода информации в компьютер. Так, для ПЭВМ IBM клавиатура состоит из ( табл. 5):

-алфавитно-цифровых и знаковых клавиш (пробел,цифры 0-9, латинские буквы A-Z, символы кириллицы А-Я, знаки пунктуации, служебные символы (+,-,/,* и т.д.)

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

 Ввод прописных и строчных букв и других символов, располагающихся на верхнем регистре клавиатуры, выполняется клавишей  [Shift] .

Клавиша  [Caps Lock] служит для фиксации режима прописных букв. Это удобно при вводе текста, состоящего из таких букв. Повторное нажатие клавиши [Caps Lock] отменяет режим прописных букв.

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

Одни драйверы используют для переключения на другой алфавит клавишу [Shift], другие − одновременное нажатие обеих клавиш [Shift] или одновременное нажатие клавиш [Shift] и [Ctrl]. Клавиша  [Enter]  (на некоторых клавиатурах − [Return] предназначена для окончания ввода строки. Клавиша  [Del] (Delete удаление) используется для удаления символа, находящегося под курсором.

Клавиша  [Ins]  (Insert ─ вставка) предназначена для переключения между двумя режимами ввода символов: ввода с раздвижкой символов (вставка) и ввода с замещением ранее набранных символов(замещение).

Клавиша  [Backspase]  (стрелка влево над клавишей [Enter]) удаляет символ, находящийся слева от курсора.

 Ввод в компьютер произвольных символов.

 Клавиша [Alt], и расположенные в правой части клавиатуры, клавиши [0]-[9] (т. е. клавиши перемещения курсора и клавиша [Ins]), дают возможность вводить в компьютер произвольные символы, в  том числе и те, которых нет на клавиатуре. Для этого необходимо нажать клавишу [Alt], не отпуская ее, набрать десятичный код нужного символа на клавишах 0-9 в правой части клавиатуры, а затем отпустить клавишу [Alt].

[Ctrl-Break] завершение работы выполняемой программы или команды;

 [Ctrl-Alt-Del]   перезагрузка DOS (одновременное нажатие клавиш );

Клавиша [Esc] (Escape убегать, спасаться), как правило, используется для отмены какого-либо действия, выхода из режима программы и т. д.

Функциональные клавиши  [F1]-[F12]   предназначены для различных специальных действий. Их действия определяются выполняемой программой.

[Ctrl-C] прекращение работы любой команды или программы DOS;

 [Ctrl-P] −  включение и выключение режима копирования на принтер выводимой на экран информации;

 [Ctrl-S]  приостановка выполнения программы;

 [F6]   ввод символа конца файла (этот символ обоз-

начается [Ctrl-Z] и имеет код 26;

 [F7] ввод символа с кодом 0 .





 







Таблица 5

hello_html_m19af289c.png

Принтер (печатающее устройство) предназначен для вывода информации на бумагу. В настоящее время применяются следующие типы принтеров: струйные, матричные и лазерные. В матричных принтерах принцип печати основан на использовании печатающей головки со стержнями (9, 24, 48), которые ударяют по бумаге через красящую ленту. Скорость печати от 60 до 10 с на страницу.

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

Лазерный принтер использует принцип ксерографии: изображение переносится на бумагу со специального барабана, к которому электрически притягиваются частички краски. Разрешающая способность 600( 800) тыс. на файл. Скорость от 15 до 5 с на страницу.

Модем ─ устройство для обмена информацией с другими компьютерами через телефонную сеть. Модемы отличаются друг от друга максимальной скоростью передачи данных (1200, 2400, 9600 бод и более, 1 бод = 1 бит в с). Сканер ─ устройство для считывания графической и текстовой информации в компьютер. Сканеры бывают настольные (планшетные) и ручные.

Плоттер (графопостроитель) − устройство для вывода чертежей на бумагу.

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

- блокнотные (note-ook) компьютеры размер экрана дисплея имеет лист бумаги AY(210*297мм), вес 4кг ;

- субблокнотные (subnotebook) компьютеры имеют размер в 1,5 раза меньше блокнотных; вес 1,5 кг;

- карманные (packet ) компьютеры, вес 0,5 кг.

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

- компактность,что позволяет работать практически везде;

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

Основными недостатками являются:

- мониторы имеют меньшие размеры и худшее качество;

- клавиатура также не очень удобна для работы;

- эти компьютеры стоят значительно дороже.



3.4. Общее устройство микропроцессора 8086

Микропроцессор состоит из операционного устройства (ОУ) и шинного интерфейса (ШИ). Роль ОУ заключается в выполнении команд, в то время как ШИ подготавливает команды и данные для выполнения.

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

Три элемента шинного интерфейса блок управления шиной, очередь команд и сегментные регистры осуществляют три важные функции. Во-первых, ШИ управляет передачей данных на операционное устройство (ОУ), в память и на внешнее устройство ввода-вывода. Во-вторых, четыре сегментных регистра управляют адресацией памяти объемом до 1 Мбайт. Третья функция ШИ это выборка команд. Все программные команды находятся в памяти, и ШИ должен иметь доступ к ним для выборки их в очередь команд. Так как очередь имеет размер 4 байт или более, в зависимости от процессора ШИ должен “заглядывать вперед” и выбирать команды так, чтобы всегда существовала непустая очередькоманд, готовых для выполнения. Операционной устройство и шинный интерфейс работают параллельно, причем ШИ опережает ОУ на один шаг. Операционное устройство сообщает шинному интерфейсу о необходимости доступа к данным в памяти или на устройство ввода-вывода. Кроме того, ОУ запрашивает машинные команды из очереди команд. Пока ОУ занято выполнением первой в очереди команды, Ши выбирает следующую команду из памяти. Эта выборка происходит во время выполнения, что повышает скорость обработки. Особенность этих регистров состоит в том, что возможна адресация их как одного целого слова, или как однобайтовой части. Левый байт является старшей частью (high), а правый младшей частью (low). Например, двухбайтовый регистр CX состоит из двух однобайтовых CH и CL, и ссылки на регистр возможны по любому из этих трех имен. Следующие три ассемблерные команды засылают нули в регистры CX, CH и CL соответственно:

MOV CX,00

MOV CH,00

MOV CL,00

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

AX: ¦ AH ¦ AL ¦

2. Регистр BX. Является базовым регистром.

3. Регистр CX. Является счетчиком. Он необходим для управления числом повторений циклов и для операций сдвига влево или вправо. Регистр CX используется также для вычислений.

CX: ¦ CH ¦ CL ¦ Процессоры 8086 и 8088 имеют 14 регистров, используемых для управления выполняющейся программой, для адресации памяти и для обеспечения арифметических вычислений. Каждый регистр имеет длину в одно слово (16 бит) и адресуется по имени. Биты регистра принято нумеровать слева направо:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Процессоры 80286 и 80386 имеют ряд дополнительных регистров, некоторые из них 32-битовые.

Сегментные регистры: CS, DS, SS и ES.

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

1. Регистр CS. Регистр сегмента кода содержит начальный адрес сегмента кода. Этот адрес плюс значение смещения в командном указателе (IP) определяет адрес команды, которая должна быть выбрана для выполнения. Для обычных программ нет необходимости делать ссылки на регистр CS.

2. Регистр DS. Регистр сегмента данных содержит начальный адрес сегмента данных. Этот адрес плюс значение смещения, определенное в команде, указывают на конкретную ячейку в сегменте данных.

3. Регистр SS. Регистр сегмента стека содержит начальный адрес сегмента стека.

4. Регистр ES. Некоторые операции над строками используют дополнительный сегментный регистр для управления адресацией памяти. В данном контексте регистр ES связан с индексным регистром DI.

Регистр общего назначения AX, BX, CX и DX.

При программировании на языке Ассемблер регистры общего назначения являются “рабочими лошадками”.

5. Регистр DX. Является регистром данных. Он применяется для некоторых операций ввода-вывода и тех операций умножения и деления над большими числами, которые используют регистровую пару DX:AX.

DX: ¦ DH ¦ DL ¦

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

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

1. Регистр SP. Указатель стека обеспечивает использование стека в памяти, позволяет временно хранить адреса и иногда данные. Этот регистр связан с регистром SS для адресации стека.

2. Регистр BP. Указатель базы облегчает доступ к параметрам (данным и адресам, переданным через стек).




Индексные регистры SI и DI.

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

1. Регистр SI. Этот регистр является индексом источника и применяется для некоторых операция над строками. В данном контексте регистр SI связан с регистром DS.

2. Регистр DI. Этот регистр является индексом назначения и применяется также для строковых операций. В данном контексте регистр DI связан с регистром ES.

Регистр командного указателя IP.

Регистр IP содержит смещение на команду, которая должна быть выполнена. Обычно этот регистр в программе не применяется, но он может изменять свое значение при использовании отладчика DOS DEBUG при тестировании программы.

Флаговй регистр

Девять из 16 бит флагового регистра являются активными и определяют текущее состояние машины и результаты выполнения. Многие арифметические команды и команды сравнения изменяют состояние флагом. Назначение флаговых битов:

Флаг Назначение

O (Переполнение) Указывает на переполнение стар-

шего бита при арифметических ко-

мандах.

D (Направление) Обозначает левое или правое на-

правление пересылки или сравне-

ния строковых данных (данных в

памяти, превышающих длину од-

ного слова).

I (Прерывание) Указывает на возможность внешних прерываний.

T (Пошаговый режим) Обеспечивает возможность рабо ты процессора в пошаговом режиме.


Основные команды микропроцессора

Команды пересылок

MOV ─ переслать из регистра MVI − переслать операнд

LDA ─ ввести в аккумулятор LXI − ввести операнд в ре

IN/OUT ввод.вывод в АК гистровую пару

Арифметические команды

ADD сложение ADC сложение с переносом

ADI сложение с операндом SUB вычитание

SUI вычитание с операндом MUL умножение

IMUL умножение со знаком DIV деление

IDIV деление со знаком AAA коррекция слож.

AAB коррекция вычитания AAM коррекция умн.

AAD коррекция вычитания

Логические команды

ANA умножение с содержимом аккумулятора

ORA сложение с содержимом аккумулятора

XRA ислючение

CMA обратный код A

CMP сравнение

CPI сравнение

Команды передачи управления

IP при положительном JNC нет переполнения

результате

IZ при нулевом результе JNZ результат не ноль

JM при отрицательном JPE четное число

результате

JPO при нечетном числе HLT остановка

CALL вызвать PUSN поместить в стек

POP вытолкнуть из стека SPHL переместить





hello_html_m651fd221.png




hello_html_d020569.png



ГЛАВА 4. ОПЕРАЦИОННЫЕ СИСТЕМЫ

4.1. Общие сведения

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

Операцио́нная система, сокр. ОС (англ. operating system, OS)  ─ комплекс управляющих и обрабатывающих программ, которые являются  интерфейсом между устройствами  вычислительной системы и прикладными программами, а также для управления устройствами управления вычислительными процессами, эффективного распределения вычислительных ресурсов между вычислительными процессами и организации надёжных вычислений.

Наиболее распространенные операционные системы: MS-DOSOS/2UNIXWINDOWS, LINUXWINDOWS NT, которые имеют разные модификации. Исследования ОС показали, что а Unix-подобные системы использовали всего 0,84% пользователей, в то время как операционные системы от Apple (MacOS) используют 7,18%. Больше всего пользователей различных версий Windows – 90,13%.

Операционные системы классифицируются:

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

числу процессов, одновременно выполняемых под управлением системы: однозадачные, многозадачные;

количеству поддерживаемых процессоров: однопроцессорные, многопроцессорные;

разрядности кода ОС: 8-разрядные, 16-разрядные, 32-разрядные, 64-разрядные;

типу интерфейса: командные (текстовые) и объектно-ориентированные (графические);

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

В течение долгих лет с момента своего появления персональные компьютеры (IBM - совместимые) обходились без специальных "пользовательских оболочек", работая непосредственно под управлением операционной системы (MS DOS, DR DOS , PC DOS). Пользователи, садившиеся за такой компьютер, обречены были увидеть после включения на голом экране опостылевшую подсказку С: \ . Все операции управления компьютером производились путем ввода с клавиатуры некоторых слов ─ директив. Такой алфавитно-цифровой интерфейс был очень неудобен.

Одним из недостатков операционной системы MS-DOS, которая стала фактическим стандартом для IBM PC-совместимых компьютеров в 80-е годы, был очень примитивный пользовательский интерфейс. Впервые в эти годы появился компьютер Macintosh фирмы Apple с дружественным оконным графическим пользовательским интерфейсом (Graphics User Interface, GUI), который выглядел выигрышнее командной строки MS DOS IBM PC. В оконном интерфейсе каждой выполняемой программе отводиться экранное окно.

Современные операционные системы имеют сложную структуру, каждый элемент которой выполняет определенные функции по управлению компьютером.

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

Файловая система это часть операционной системы, чтобы обеспечить пользователю удобный интерфейс при работе с данными, хранящимися на диске. Файловая система связывает носитель информации  с одной стороны и API (интерфейс программирования приложений (англ. application programming interface, API  [эй-пи-ай]) − набор готовых классовпроцедур,  функцийструктур, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах. Используется программистами для написания всевозможных приложений для доступа к файлам, с другой.

Файловые системы классифицируются на следующие виды: с  произвольным доступом (жёсткий диск  FAT32, HPFS, др.; с последовательным доступом ( магнитные ленты): QIC и др.; для оптических носителей — CD и DVD: ISO9660, HFS, UDF и др.; виртуальные файловые системы: AEFS и др.; сетевые файловые системы: NFS, CIFS, SSHFS, GmailFS и др.; для флэш-памяти: YAFFS,  ExtremeFFS, exFAT.

Задачи файловой системы:

  • именование файлов;

  • программный интерфейс работы с файлами для приложений;

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

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

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

Имена файлов

Файлы имеют символьные имена, при этом учитываются ограничения ОС как на используемые символы, так и на длину имени. Так, в популярной файловой системе FAT длина имен ограничивается размером 8.3 (8 символов собственно имя, 3 символа расширение имени), а в ОС UNIX имя не может содержать более 14 символов. Современные файловые системы, как правило, поддерживают длинные символьные имена файлов. Например, Windows NT в своей новой файловой системе NTFS устанавливает длину имени файла 255 символов. Имя файла может иметь уникальное имя, которое представляет собой числовой идентификатор и используется программами операционной системы, например, в системе UNIX.

Типы файлов

Файлы бывают разных типов: обычные файлы, специальные файлы, файлы-каталоги.

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

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

Логическая организация файла

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

Физическая организация и адрес файла

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

Права доступа к файлу

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

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

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

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

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

Технология "Plug and Play" (подключи и играй) позволяет автоматизировать подключение к компьютеру новых устройств и обеспечивает их конфигурирование. В процессе установки Windows определяет тип и конкретную модель установленного устройства и подключает необходимый для его функционирования драйвер. При включении компьютера производится загрузка драйверов в оперативную память.

Пользователь имеет возможность вручную установить или переустановить драйверы.

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

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

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

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

На 16-разрядных ПЭВМ, где используются 16-разрядные микропроцессоры типа 8088, доминируют ОС типа MS-DOS, которая приобрела статус стандарта ОС для 16-разрядных ПК.

К достоинствам ОС MS-DOS можно отнести следующее:

1. Развитой командный язык.

2. Организация многоуровневого каталога.

3. Возможность работы со всеми последовательными устройствами как с файлами.

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

5. Возможность запуска фоновых задач одновременно с диалоговой работой ОС.

Для работы DOS требуется 60 Кбайт оперативной памяти.

К основным понятиям DOS относятся:

Program (программа) последовательность операций, выполняемых ЭВМ для решения задачи

Программы в машинном коде. В отличие от программ в текстовой форме, в какой они создаются программистами, программа в машинном коде готова к загрузке в оперативную память и к исполнению (поэтому иногда файл с машинным кодом называют загрузочным или исполняемым). Машинный код создается из исходного текста программы в процессе трансляции и компоновки, осуществляемых особыми системными программами. Машинный код программы хранится в файле, имеющем один из двух типов: COM или EXE (файл типа EXE порождается компонов щиком из объектных модулей; файлы типа COM ─ некоторыми трансляторами). Различают эти два типа файлов лишь способами загрузки с внешних носителей в оперативную память и настройки на фактические адреса. Для пользователей эта разница неощутима и запуск программы обоих типов производится одинаково: достаточно указать имя соответствующего файла без расширения (COM или EXE). Например, C:\>TB и загрузится транслятор языка Бейсик.(если открыть подкаталог TB, а запускающий файл TB.EXE.

File (файл) последовательность однозначных записей на магнитном носителе.

Filename (имя файла). Состоит из двух частей: собственно имени (filename) и расширения (extension). Имеет длину от 1 до 8 символов. В имени используются символы: A...Z a...z 0...9 $ % “ -!& { } ~ @ # ( ) “. Расширение состоит из точки, за которой следует от одного до трех символов. Cледующие расширения указывают ЭВМ, что содержимое файлов надо выполнять как команды: .exe (от executable-выполняемый), .com (от command-команда) и .bat (oт batch-пакет).

Шаблоны имен файлов используются при сокращении записи в командах. В шаблонах употребляются знаки * и ?.

Примеры шаблонов:

PR*.* все файлы с именем, начинающимся с PR;

*.EXE все файлы типа EXE;

*.* все файлы текущего каталога;

*. все файлы, у которых отсутствует тип;

???.BAS все файлы типа BAS с не более, чем 3-х буквенными именами;

A?.* все файлы, имена которых начинаются с А и состоят из одной или двух букв.

File attribute (атрибут файла) задание файлу определенных признаков. Атрибутов 4: read-only (сокращенно R только для чтения), archive (A архивный), system (S системный), hidden (H невидимый, скрытый). Read-only: файлы этого типа нельзя изменять командами DOS. Archive: используется программами архивирования для определения изменился файл или нет .System: устанавливается для системных файлов. Hidden: файл невидим для DOS, т. е. не выводится в каталог командой DIR.

Командные файлы принадлежат к категории исполняемых файлов. Такие файлы снабжаются типом BAT (от слова BATH пачка). Они могут содержать целую группу команд DOS или обращения к прикладным программам, которые выполняются последовательно или в более сложном порядке. Командный файл, в отличие от исполняемых файлов остальных двух типов (.COM и .EXE) содержит немашинный код прог -раммы, а текст, который интерпретируется командным процессором DOS. Таким образом, по форме это обычный текстовый файл, содержимое которого можно вывести на принтер или экран. Строки этого текста могут представлять собой:встроенные команды DOS; обращение к исполняемым программам; вызовы других командных файлов; специальные команды для управления выдачей на экран; специальные команды для организации ветвлений и циклов; метки.

Directory каталог) группа файлов на одном носителе, объединенных по какому-либо критерию (обычно логически взаимосвязанных). Каталог имеет имя и может быть зарегистрирован в другом каталоге. Цепочки подчиненных (включенных друг в друга) каталогов обозначаются их именами, разделенных знаком “ \”. Каталог самого высокого уровня называется корневым. Например, запись Emo\Vicont\Text1.txt говорит о том,что файл Text1.txt расположен в каталоге Vicont, который, в свою очередь, расположен в каталоге Demo, являющимся корневым. Каталогам даются любые имена,аналогичные именам файлов.

Disk drive (дисковод) устройство, которое вращает диск и обеспечивает перемещение головок при записи/чтении. Иногда называют и накопители на магнитных дисках. Полные имена дисководов обозначаются А: и В: (для гибких дисков), С: и D: (для жесткого винчестеровского диска).

Hard-disk (жесткий диск) винчестеровский диск обеспечивает 40 Мбайт памяти (IBM PС AT - 286), 120 Мбайт - (IBM PС AT - 386), 1.2 Гбайта -(IBM Pentium).

Виртуальный диск. Если в ПЭВМ установлена достаточно большая оперативная (больше 256 Кбайт) память, то часть ее можно занять под виртуальный диск (их может быть несколько), который будет использоваться точно так же, как и обычный накопитель на магнитном диске (псевдодиск). В момент создания виртуальный диск не содержит никакой информации, а после выключения машины все, что туда было записано, пропадает. Доступ для записи и чтения файлов к виртуальному диску производится гораздо быстрее, чем к реальному гибкому диску, что создает определенные удобства для работы. Накопитель, соответствующий псевдодиску, обозначается очередной буквой латинского алфавита: D:, E: и т. д. Расчет величины псевдодиска может быть приближенным.

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

Keybord (клавиатура). Label (метка) имя, которое можно присваивать диску. Физически метка это специальным образом организованный файл на диске.

Command (команда). Под командой понимают как команду, которую пользователь вводит с клавиатуры, так и программу, которая эту команду исполняет. Существуют два типа команд MS DOS: внешние и внутренние. Внутренние команды являются частью файла command.com и загружаются в память во время загрузки системы. Для использования внешней команды MS-DOS соответствующий файл нужно иметь на диске. Для запуска команды MS-DOS достаточно набрать ее имя без расширения.

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

Копирование, переименование, удаление, распечатка, установка атрибутов файла

Copy (скопировать файл).

C:\>Copy A:*.* C:

Копирование всех файлов из текущего каталога А

в текущий каталог диска С

C:\>Copy \mivt\fiz

Копирование всех файлов каталога Mivt в \fiz

C:\>Copy mivt stud

Копирование файла mivt в stud

C:\>Copy A:mv.txt\ex\st.txt

Файл mv.txt c диска А:копируется в каталог ex

c новым именем st.txt

В качестве имени файла в аргументах команды Copy могут называться стандартные устройства: Prn основной (первый) принтер; Lpt1 другое имя основного принтера; Lpt2 дополнительный принтер; Con «консоль», т. е. дисплей + клавиатура; Nul пустое устройство; Lpt1, Lpt2, Prn устройства-приемники файлов; Con может быть и приемником и источником. Например, C:\>Copy mv.doc prn файл mv.doc копируется на принтер, т. е. печатается

C:\>Copy con t.bat файл t.bat создается в результате копирования с устройства con. Конец файла задается как [ctrl-z].

Rename (переименовать) .

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

C:\stud>ren D:*.txt *.doc

Переименование файлов на диске D:. Вместо типа TXT устанавливается тип doc.

Из каталога stud удаляются все файлы, имеющие тип txt C:\>del\stud. Удаляются все файлы подкаталога stud.

Установка атрибутов файлов ( +A/-A C:\nic.txt)

Добавить(удалить) атрибут архивного файла(H/-H C:\nic.txt);

Добавить(удалить)атрибут скрытого файла (+R/-R C:\nic.txt);

Добавить(удалить) атрибут только для чтения(+S/-S C:\nic.txt).


4.3. Оболочки операционных систем

Программы-оболочки обеспечивают более удобный и наглядный способ работы с компьютером, чем с помощью командной строки DOS. В основном весь набор действий, осуществляемый программой-оболочкой, можно реализовать и средствами самой ОС. Тем не менее многие пользователи предпочитают использовать оболочки. Основная причина состоит в следующем. Взаимодействие пользователя с ОС DOS осуществляется по принципу диалога: пользователь набирает команду, нажимает клавишу [Enter], и ОС выполняет эту команду. Такой способ не очень удобен. Так, если надо скопировать какой-либо файл, нужно правильно набрать имя команды, имя файла, имя каталога. Трудность в том, что все команды надо помнить и не ошибиться при наборе. Гораздо проще «ткнуть» мышью (или курсором) в определенное место экрана, чтобы указать нужный файл, каталог и требуемое действие. Оболочка позволяет работать именно так.

Программы-оболочки обеспечивают:

- создание, копирование, пересылку, переименование, удаление, поиск файлов, а также изменение их атрибутов;

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

- создание, обновление и распаковку архивов (групп сжатых файлов);

- просмотр текстовых файлов;

- редактирование текстовых файлов;

- выполнение команд DOS;

- запуск программ;

- выдачу информации о ресурсах компьютера;

- создание и удаление каталогов;

- поддержку межкомпьютерной связи.

Примеры программ-оболочек: Norton Commander, Volkov Commander, FAR, Windows Commander и др. В верхней части экрана размещаются две синих панели, каждая из которых содержит оглавление одного из каталогов файловой системы. Ниже располагается командная строка с обычным приглашением MS DOS и мерцающим курсором, в которой можно набирать обычные команды DOS. В последней строке экрана находится список функциональных клавиш [F1]-[F10] с кратким обозначением их функций.

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

  1. строку “..”, обозначающую выход в “родительский ” каталог данного каталога;

  2. строки с именами подкаталогов данного каталога (высвечены прописными буквами);

  3. строки с именами отдельных файлов данного каталога (высвечены строчными буквами).

Строки любого типа могут отсутствовать в оглавлении данной панели: строка 1 отсутствует, если на панели представлен корневой каталог (выходить некуда); строки 2 отсутствуют, если в данном каталоге нет подкаталогов; строки 3 отсутствуют, если в данном каталоге не зарегистрированы отдельные файлы.
Одна из строк рабочей панели (т.е. панели с выделенным заголовком) выделена рамкой серо-зеленого цвета (как и заголовок). Можно перемещать курсорную рамку по строкам панели, как в обычном меню: стрелками курсора – вниз, вверх, влево, вправо; клавишами [End] и [Home] – на последнюю строку и на первую строку оглавления; клавишами [PgDn] и [PgUp]
на страницу вверх или вниз. В последней строке панели – строке состояния, как правило, указано имя выделенного файла, его размер в байтах, дата и время создания или последнего обновления.
Перемещение между левой и правой панелями осуществляется нажатием клавиши [Tab].

Для возврата в «родительский» каталог необходимо переместить курсорную рамку панели на верхнюю строку (..) и нажать клавишу [Enter]. Для входа в каталог следующего уровня (т.е. в каталог, для которого текущий каталог является «родительским») необходимо переместить курсорную рамку на имя каталога и нажать [Enter]. Если необходимо переместиться в каталог, который находится на другом логическом диске (не показанном на панелях NC), то для смены логического диска левой панели надо нажать клавиши [Alt]-[F1], а для смены диска правой панели – клавиши [Alt]-[F2].

Появится диалоговое окно – меню из имен логических дисков, которые доступны компьютеру. Курсорную рамку следует переместить на нужное имя и нажать [Enter] или просто нажать клавишу с изображением соответствующей буквы. Если вы передумали менять диск, надо нажать [Esc]. Менять диск можно в любой панели – в рабочей и нерабочей.

  1. Создание каталога. Прежде всего, необходимо перейти в ту среду, где надо создать каталог. Например, для создания подкаталога в каталоге P диска C: надо войти в каталог P и нажать клавишу [F7]. На экране появится диалоговое окно с приглашением набрать имя нового каталога. Оно не должно совпадать с именами каталогов, уже зарегистрированных в P (например, MY_DIR). Новое имя надо набрать на клавиатуре и нажать [Enter]. В рабочей панели появится имя нового каталога (прописными буквами), а курсорная рамка укажет на это имя. Нажав затем [Enter], можно войти в новый каталог. В нем будет только одна строка − “..”. Это означает, что новый каталог пока пуст и располагает только строкой для выхода в “родительский“ каталог. Теперь в этот каталог можно помещать и отдельные файлы, и подкаталоги.

  2. Копирование файла. При копировании файла создается точная копия исходного файла – с тем же именем (только в другом каталоге!) или с другим именем (в любом, в том числе, и в текущем каталоге). Исходный файл остается в неприкосновенности. В файловой системе возникают два совершенно одинаковых файла. Общая свободная память на дисках уменьшается на величину, равную размеру файла. Для копирования файла следует нажать клавишу [F5]. На экране появится диалоговое окно с сообщением, что NC готов скопировать файл в каталог, открытый в соседней панели. По нажатию клавиши [Enter] файл будет скопирован с тем же именем в соседний каталог. Если надо скопировать файл в другой каталог, то имя этого каталога и путь к нему нужно ввести с клавиатуры в соответствующую строку диалогового окна.

Если надо скопировать файл в текущем каталоге, то после нажатия [F5] следует набрать в диалоговом окне имя файла-копии (не совпадающее с исходным) и нажать [Enter]. Файл будет скопирован с другим именем в том же каталоге.
В копировании может быть отказано, если на диске недостаточно места для размещения файла. В таком случае придется отказаться от операции или освободить место, удалив один или несколько ненужных файлов.

  1. Пересылка (перемещение) файла. Исходный файл пересылается в другой каталог. Нового файла в системе не возникает, просто файл меняет свой адрес. Если файл пересылается в другой каталог на том же логическом диске, физического перемещения не происходит (файл просто меняет адрес), и общий объем занятой памяти на этом диске не меняется. Если файл перемещается на другой логический диск, он переписывается заново. Однако и в этом случае общая свободная память на дисках не изменяется.

Все действия пользователя такие же, как и при копировании, но нажимать надо клавишу [F6].

  1. Переименование файла. Эта операция заменяет старое имя файла на новое. Нельзя присваивать файлу имя, уже принадлежащее другому файлу в том же каталоге. Для переименования файла надо нажать клавишу [F6] и в диалоговом окне набрать новое имя файла. Затем нажать [Enter]. Файлу будет присвоено новое имя.

  2. Удаление файла. Это одна из самых опасных операций на ПК. Получив сигнал на уничтожение файла, система объявляет занятое им на диске место свободным, и любая операция записи, которая последует за этим сигналом, может безвозвратно погубить файл. После удаления файла свободная память на дисках увеличивается на величину, равную размеру удаленного файла. Для уничтожения файла надо нажать [F8]. На экране появится диалоговое окно с предупреждением: «Вы действительно хотите удалить файл?». Для подтверждения надо нажать [Enter], и файл будет уничтожен. Для отмены нажать [Esc].

  3. Просмотр файла (выведение содержимого файла на экран). Курсорную рамку надо установить на интересующий вас файл и нажать [F3]. Содержимое файла будет выводиться на экран постранично. «Листать» страницы можно клавишами [PgUp], [PgDn]. В режиме просмотра можно найти нужную информацию по ключевому слову. После нажатия клавиши [F3] нижняя строка (подсказок) заменяется на новую. В данном режиме у клавиши [F7] функция – Поиск (Search). Надо нажать [F7], в появившемся приглашении набрать ключевое слово, затем нажать [Enter]. В тексте файла это слово будет выделено курсорной рамкой. Выход из режима просмотра осуществляется клавишами [Esc] или [F10].

  4. Редактирование файла. По нажатию клавиши [F4] содержимое файла, на котором стояла курсорная рамка, выводится на экран. В первой позиции верхней строки текста – мерцающий курсор. Это режим для небольших правок. Для серьезных корректировок лучше использовать более мощные редакторы. Первая строка редактора – информационная. В ней выводится имя файла, номера строки, столбца, код символа над курсором, количество свободной памяти. Курсор можно перемещать курсорными клавишами, клавишами [PgUp], [PgDn] – на страницу вверх или вниз, [Ctrl]-[←] или [Ctrl]-[→] – на слово назад или вперед, [Ctrl]-[Home] или [Ctrl]-[End] – в начало файла или в конец, [Alt]-[F8] – на строку с заданным номером (номер запрашивается). Клавиша [Del] – удаляет символ в позиции курсора, [BackSpace] – слева от курсора. Комбинации клавиш [Ctrl]-[Y] – удаляет строку, в которой установлен курсор; [Ctrl]-[K] – удаляет текст от курсора до конца строки.

  5. Строка функциональных клавиш после нажатия [F4] меняется. Клавишей [F7] можно осуществить поиск строк символов. В ответ на запрос надо ввести искомую строку и нажать [Enter]. Для повторения поиска той же строки надо нажать [Alt]-[F7]. Нажатие клавиши [F8] позволит заменить некоторое слово в тексте на другое (исходное и заменяющее слова запрашиваются). Выход из редактора – [Esc] или [F10].

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

Можно установить курсорную рамку на имя нужного файла и нажать клавишу [Ins]. Имя файла будет высвечено желтым цветом файл включен в группу. Подобным же образом можно выделить любое число файлов в каталоге. Для исключения файла из группы нужно подвести к нему курсорную рамку и снова нажать [Ins].

  1. Чтобы включить в группу все файлы текущего каталога или файлы с определенным расширением, проще воспользоваться автоматическим способом создания группы. Нажатие клавиши [+] на цифровой клавиатуре («серый» плюс) выведет на экран диалоговое окно с предложением набрать маску выбора, т.е. указать, какую группу файлов нужно выделить. Например, если в группу должны быть включены все файлы с расширением .doc, то надо набрать маску *.doc и нажать [Enter]. Все файлы с расширением .doc будут высвечены желтым цветом. Символ «*» заменяет собой любое количество символов в имени или расширении файла. Если нужно выделить все файлы текущего каталога, маска должна иметь вид *.*. Для отказа от выделения группы следует нажать [Esc].

  2. После выделения группы в нижней строке панели выводится информация об общем числе выделенных файлов и их суммарном объеме (в байтах).

  3. Из выбранной группы можно исключить часть файлов, подводя к их именам курсорную рамку и нажимая [Ins]. Если надо исключить часть файлов по маске или вообще отменить выбор группы, следует нажать клавишу [-] («серый» минус) на цифровой клавиатуре, набрать в диалоговом окне маску (если предложенная маска не устраивает) и нажать [Enter].

  4. Выделенную группу файлов можно копировать или перемещать в другой каталог. Эти операции выполняются так же, как копирование или пересылка отдельного файла: надо
    нажать клавишу [F5] или [F6], а затем, после появления предложения NC, клавишу [Enter]. Удаление группы файлов выполняется так же, как и удаление отдельного файла (клавиша [F8]). Однако в данном случае NC дважды спросит, действительно ли следует уничтожить эти файлы. Сначала будет задан общий вопрос. Далее FAR Manager − консольный файловый менеджер для операционных систем семейства Microsoft Windows. Программу разработал  Евгений Рошал.

Norton Commander (сокращенно называемый на советском пространстве NC) − популярный файловый менеджер для DOS, первоначально разработанный американским программистом Джоном Соухэ. Программа была выпущена компанией Peter Norton Computing (глава  Питер Нортон). Первая версия была выпущена в 1986 году.

Начиная с версии 4.0. программу разрабатывала целая команда программистов, поскольку в 1990 фирма Peter Norton Computing была куплена компанией Symantec, но новый коммандер постепенно начал утрачивать популярность, так как увеличил размер занимаемой памяти (что было критично для DOS), содержал ошибки и, к тому же, начал вытесняться собственными клонами. Менее функциональные, чем Norton Commander, Volkov Commander и Pie Commander, более-менее точно копировали нортоновский интерфейс. DOS Navigator, визуально схожий с Norton Commander, предоставлял гораздо больший ряд возможностей. Впоследствии клоны появились и на других операционных системах: BSD, Linux − Midnight Commander, Krusader; Microsoft Windows − FAR Manager, Total Commander; и другие аналогичные программы.

Команда Symantec продолжала борьбу за рынок, выпустив для DOS версии 5.0 (1995), 5.51 (1998) и для Microsoft Windows версию 2.01. В Norton Commander 5.51 для DOS появилась поддержка длинных имен файлов при работе в Windows. Но большого распространения эти версии уже не получили, так как появившиеся к тому времени клоны и последователи NC обладали большими возможностями, а некоторые пользователи предпочитали пользоваться штатным файл-менеджером Windows. А в середине 2000 года появляется FAR Manager, который, наследуя двухоконную идеологию, стандартную расцветку и систему команд (управление с клавиатуры) у файлового менеджера Norton Commander, становится наиболее популярным файловым менеджером (в основном, среди IT-специалистов).

4.4. Операционная система Windows

Значительным шагом в направлении создания «дружественного» пользователю программного обеспечения стала разработка и использование графического интерфейса. Впервые графический интерфейс был применен в 1983 году в компьютерах Apple Computer Lisa. В 1984 году появился графический интерфейс Apple Macintosh. Вслед за этим серьезно проблемой создания графического интерфейса занялась фирма Microsoft. В 1985 году появилась графическая оболочка Windows 1.0. Затем − Windows 2.0, 3.0, 3.1, 3.11. В 1995 г. была выпущена ОС Windows 95 – первая полноценная графическая операционная система. В 1998 году появилась ОС Windows 98  (ориентирована на работу в Internet).

ОС Windows 9x – это интегрированные ОС, основанные на современных 32-разрядных технологиях, которые предлагают сетевую поддержку.

К особенностям ОС Windows относятся:

- Вытесняющая многозадачность (процессор переключается между программами).

- Единый программный интерфейс – это создание данные в одних программах и перенос их в другие.

- Единый интерфейс пользователя. Это означает, что интерфейс приложений (программ, написанных для работы под управлением ОС) стандартизован, а значит, изучив одну программу, легче освоить другие.

- Единый аппаратно-программный интерфейс.

ОС Windows сама обеспечивает совместимость разнообразного оборудования и программ. Изготовители оборудования добиваются только работы с Windows, а дальше ОС берет на себя заботы по обеспечению работы устройств. Точно также изготовители программ могут не беспокоиться о работе с неизвестным им оборудованием. Их задача сводится к тому, чтобы обеспечить взаимодействие с Windows. ОС Windows ввела новый стандарт самоустанавливающихся устройств (plug and play). Подключение таких устройств происходит автоматически. ОС сама «узнает», что установлено в компьютере, и настраивается на работу с новым оборудованием.

К преимуществам Windows можно отнести:

- Принцип точного отображения WYSIWYG (What You See Is What You Get). При работе с документом пользователь видит на экране изображение, практически полностью соответствующее тому, что будет получено после распечатки на принтере. Это происходит благодаря использованию масштабируемых шрифтов TrueType.

- Удобные принципы работы с мышью (в частности, принцип Drag and Drop).

- Встроенные сетевые возможности и поддержка работы в Internet.

- Широкая поддержка средств мультимедиа.

- Особые возможности для пользователей с отклонениями в состоянии здоровья.

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

Для работы с объектами предусмотрена система контекстных меню, которые отражают их свойства и поведение, позволяют изменять свойства (настраивать) и выполнять допустимые над данным объектом действия. По существу, все действия, выполняемые в ОС Windows, − это обмен сообщениями между объектами.

Не на всякий ПК можно установить ОС Windows-9х. Минимальными требованиями ОС к аппаратуре являются:

  • Процессор 486 и выше

  • Объем памяти не менее 8 Мб

  • Видеоадаптер SuperVGA

  • Винчестер объемом не менее 300 Мб

  • Для использования средств мультимедиа: CD-ROM, звуковая карта, колонки

  • Для использования сетевых возможностей: сетевая карта

  • Для работы в Internet: модем.

4.5. Операционная система UNIX

Первая система UNIX была разработана в 1969 году. В наятоящее время создано большое количество различных UNIX-систем. Некоторые отличительные признаки UNIX-систем:

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

  • широкое применение утилит, запускаемых из командной строки;

  • взаимодействие с пользователем посредством виртуального устройства − терминала;

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

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

В настоящее время UNIX - системы распространены в основном среди серверов, а также как встроенные системы для различного оборудования. Среди ОС для рабочих станций и домашнего применения UNIX и UNIX - подобные ОС занимают после Microsoft Windows второе (OS X), третье (GNU/Linux) и многие последующие места. UNIX - системы имеют большую историческую важность, поскольку благодаря им распространились некоторые популярные сегодня концепции и подходы в области ОС и программного обеспечения. Также в ходе разработки UNIX - систем был создан язык Си.

4.6. Операционная система Linux

Linux также Линукс − общее название Unix-подобных операционных систем. Операционная система Linux создаётся и распространяется в соответствии с моделью разработки свободного и открытого программного обеспечения, которая распространяется в основном бесплатно. Эндрю Таненбаум, автор операционной системы MINIX и Линус Торвальдс.hello_html_167019ff.png

На начальном этапе Linux бесплатно разрабатывался только энтузиастами-добровольцами, но с успехом Linux и его массовым коммерческим использованием дорабатывать ОС и вносить свой вклад стали и компании, со временем став значительной силой. Подавляющее большинство ПО доступно по свободным лицензиям, как правило, за исключением небольшого количества программ. В настоящее время системы Linux лидируют на рынках смартфонов (Android занимает 64,1 % рынка[9]), интернет-серверов (60 %), самых мощных суперкомпьютеров (93,8 %), а также, согласно Linux Foundation, в дата-центрах и на предприятиях, занимают половину рынка встраиваемых систем, имеют значительную долю рынка нетбуков (32 % на 2009 год). На рынке домашних компьютеров Linux прочно занимает 3-е место (по разным данным, от 1 до 5 %). Согласно исследованию доля Linux среди электронных устройств составляет около 42 %.

В настоящее время в Китайской Народной Республике сообщили о том, что китайскими специалистами разрабатывается национальная операционная система, предназначенная для использования внутри страны. Основная цель создания этой ОС − защита от вмешательства иностранных спецслужб. ОС носит название COS (сокращение от China Operating System - «операционная система Китая»). Она основана на ядре Linux и имеет закрытый исходный код. COS относится к классу «универсальных» систем - ее можно установить на компьютеры, смартфоны, планшеты и телевизионные приставки. Операционную систему разрабатывают компания Shanghai Liantong Network Communications Technology и Институт программного обеспечения при Китайской академии наук. Сообщается, что поддержку проекту будут оказывать местные производители устройств (в частности, Lenovo, Huawei и тайваньская HTC) и мобильные операторы.

В Китае уже существует ОС Kylin, созданная с целью «избавиться от зависимости» от иностранного ПО. Она предназначена для использования главным образом в вооруженных силах и госсекторе. Первые версии Kylin, разработка которой стартовала в 2001 году, базировались на ОС Linux.

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

Linux на сегодняшний день является единственной альтернативой операционной системы Windows от разработчиков Microsoft.

В 1991 году молодой финляндский программист Линус Торвальдс начал работу над первой версией системы, которую и назвали в честь его имени. Популярность Linux началась с самого его появления. В первую очередь это связано с тем, что эта ОС и большинство программ, которые написаны под нее, обладают важнейшими качествами:

Бесплатность. Конечно, раньше этот вопрос не был настолько актуальным, однако сегодня к интеллектуальной собственности отношение совсем другое. Многие пользователи понимают, что довольно крупные неприятности может принести установка на компьютер пиратской копии Windows. А заплатить за лицензионную версию сможет далеко не каждый. А установив ОС Linux, можно получить тысячи бесплатных программ. Конечно, они будут не привычными, по сравнению с Windows-программами, но будут абсолютно функциональными.

Надежность. При корректной работе компьютера Linux позволяет несколько лет работать без зависаний и перезагрузок. И кнопка Reset абсолютно не понадобится.

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

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


ГЛАВА 5. АРИФМЕТИЧЕСКИЕ И ЛОГИЧЕСКИЕ ОСНОВЫ ПОСТРОЕНИЯ ЭВМ

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

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

Системы счисления подразделяются на позиционные и непозиционные. Непозиционные системы счисления системы, для которых значение символа не зависят от его положения в числе. Примером такой системы является римская система счисления, использующая набор следующих символов (I-1, V-5, X-10, L-50, C-100, D-500, M-1000 и т.д.). Например, LX-60, XL-40.

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

Каждое число в любой системе счисления может быть записано в следующей форме:

n

A(q) =∑ a(i) * q(i),

i=-m

где q основание системы;

a(i) коэффициенты ряда;

n, m количество целых и дробных разрядов.

Например. В двоичной системе счисления используются цифры 0, 1. В восьмиричной системе счисления числа изображаются с помощью цифр 0,1,2,3,4,5,6,7. (124,537(8) =1*82 + 2*81 + 4*80 + 5*8-1 + 3*8-2 + 7*8-3 ). В шестнадцатиричной системе счисления числа изображают с по мощью цифр и букв: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. (F3F (16) = 15*162 + 3*161 + 15*160 .

В таблице приведены эквиваленты десятичныx цифр в различных системах счисления.

Десятичная система

q = 2 q = 3 q = 8 q = 16

0 0000 000 00 0

1 0001 001 01 1

2 0010 002 02 2

3 0011 010 03 3

4 0100 011 04 4

5 0101 012 05 5

6 0110 020 06 6

7 0111 021 07 7

8 1000 022 10 8

9 1001 100 11 9

10 1010 101 12 A

11 1011 102 13 B

12 1100 110 14 С

13 1101 111 15 D

14 1110 112 16 E

15 1111 120 17 F



Методы перевода чисел из

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

а) перевод целых чисел

Целые числа с основанием q1 переводят путем деления на новое основание q2.

Пример. Перевести десятичное число А = 98 в двоичную систему счисления (q2 = 2).






_ 98 2

98 49 2

b0=0 48 24 2

b1=1 24 12 2

b2=0 12 6 2

b3=0 6 3 2

b4=0 2 1= b6

b5=1


Ответ: А(2) = 1100010

Пример. Перевести двоичное число а = 1101001 в десятичную систему счисления (q2 = 10). Основание q2 изображается в двоичной системе счисления эквивалентом q2 = 1010.

1101001 1010

1010 1010 1010

001100 1010 1010 b2=1

b0=0101 b1=0000

Ответ: А = 105.

б) перевод дробных чисел

б) перевод дробных чисел

Правильные дроби переводятся умножением на основание q2 новой системы счисления.

Пример. Перевести десятичную дробь А = 0,625 в двоичную систему счисления.


0 625

2

b(-1) = 1 250

2

b(-2) = 0 500

2

b(-3) = 1 000


Ответ: А(2) = 0,101

в) перевод чисел в десятичную систему счисления

Все числа переводятся по зависимости

n i

А =∑ a(i) q

i=-m

Пример. Перевести число 10101 в десятичную систему счисления.

А(10) = 1*24 + 0*23 + 1*22 + 0*21 + 1*20 = 21


Пример. Перевести число А = F5A в десятичную систему счисления.

А(10) = 15*162 + 5*161 + 10*160 = 3930


г) перевод чисел с использованием триад и тетрад.

Пример. Перевести число А(8) = 1523 в двоичную систему счисления.

А(2) = 001.101.010.011 Ответ: А(2) = 1101010011

Пример. Перевести число 1101010011 в восьмирич ную систему счисления. 001.101.010.011 = 1523

Ответ: А(8) = 1523

Пример. Перевести число F6E в двоичную систем

счисления. 1111.0110.1110 Ответ: А(2) = 111101101110

Перевод числовой информации из одной системы счисления в другую влечет за собой появление погрешностей, величина которой определяется формой представления чисел и длиной разрядной сетки ЭВМ. Усредненная абсолютная ошибка перевода чисел в двоичную систему счисления отн. ошибка (min) = 0,5*2-n отн. ошибка (max) = 2-1

В форме с плавающей запятой абсолютное значение ошибки лежит в пределах

2-1 <= ошибка <= 1-2-n отн. погр. (min) = 0,5*2-n отн. погр. (max) = 2-n

Относительная ошибка чисел в форме с плавающей запятой не зависит от величины числа.


5.2. Кодирование чисел

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

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


х, если х>=0

Х(пр) =

1 + х, если х<0

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

Х = 0.1011 Х(пр) = 0.1011

Х = -0.1011 Х(пр) = 1.1011

В прямом коде числа хранятся в ОЗУ (ПЗУ), а также используются в операции умножения чисел.

Обратный код для дробного числа получается из формулы

х, если х>=0

Х(обр) = 2 – 2-m + х, если х<0

Положительные числа не изменяются, а отрицательные числа записываются в обратном коде таким образом, что вместо 0 записывается 1, а вместо 1 записывается 0.


Х = 0.1011 Х(обр) = 0.1011

Х = -0.1011 Х(обр) = 1.0100

Обратный код целого числа получается из формулы

х, если х>=0

Х(обр) = 2-n - 20 + х, если х<0. Дополнительный код дробного и целого чисел соответственно получаются из выражений

х, если х>=0

Х(доп) =

2 + х, если х<0


х, если х>=0

Х(доп) =

2n + х, если х<0

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


Х = 0.1011 Х(доп) = 0.1011

Х = -0.1011 Х(доп) = 1.0101

Модифицированные коды получаются путем ввода двух знаковых разрядов. Положительным числам 00, отрицательным числам 11. Эти коды используются для определения переполнения разрядной сетки чисел.

5.3. Арифметические оперции в двоичной системе

счисления

а) сложение чисел в форме с фиксированной запятой

Сложение чисел осуществляется в соответствии с таблицей сложения и вычитания.


0 + 0 = 0 0 - 0 = 0

0 + 1 = 1 1 - 0 = 1

1 + 0 = 1 0 - 1 = 1

1 + 1 = 0 и 1 в следующий разряд 1 - 1 = 0


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

В дополнительном коде эта единица просто отбрасывается.



Примеры.

1) А = 0.010 А(обр) = 0.010

В = -0.100 В(обр) = 1.011

————————

С(обр) = 1.101

С(пр) = -0.010

2) А = 0.010 А(доп) = 0.010

В = -0.100 В(доп) = 1.011

+1

——

1.100

С(доп) = 0.010

1.100

——

1.110

С(пр) = -0.010

3) А = -0.0101 А(обр) = 1.1010

В = -0.1001 В(обр) = 1.0110

————————

С(обр) = 11.0000

+1

————

1.0001


С(пр) = -0.1110

4) А = -0.0101 А(доп) = 1.1010

В = -0.1001 В(доп) = 1.0111

————————

С(доп) = 11.0010

С(пр) = -0.1101

+1

————

0.1110



Сложение чисел в форме с плавающей запятой

Для выполнения операции сложения используется следующий алгоритм:

1. Перевод мантиссы и порядка в двоичную систему счисления.

2. Преобразование мантиссы и порядка в обратный

(дополнительный) код.

3. Выравнивание порядков, определение знака и величины.

4. Сдвиг мантиссы.

5. Сложение мантиссы.

6. Нормализация мантиссы суммы.

7. Вычисление порядка суммы.

Пример.

A = 0,1011*2-2 , B = -0,1001*2-3


m(A) = 0.1011 P(A) = 1.010

m(B) = 1.1001 P(B) = 1.011


Дополнительные коды P(A) = 1.110 (D)

P(B) = 1.101 (D)

Определение знака и величины сдвига мантисс

P(A) - P(B) = P(A) + (-P(B)) = 1.110 + 0.011 = 0.001


Так как P(A) > P(B), то мантисса m(B) сдвигается вправо на 0.001.

m(B) = 1.0100

Дополнительные коды мантисс m(A) = 0.1011 (D)

m(B) = 1.1010 (D)



Сложение мантисс m(A) = 0.1011

m(B) = 1.1010

————————

m(C) = 0.0111


Нормализация мантиссы m(C) = 0.1110 (H)

P(A) = 1.110

P(-1) = 1.111

————————

P(C) = 11.101 = - 0.011

Ответ: C = 0.0111*2-3

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

A = -0,1100*24 , B = -0,1000*24

m(A) = 1.0100 P(A) = 0.100

m(B) = 1.1000 P(B) = 0.100

——————————

m(C) = 0.1100 P(C) = 0.100

Знак мантиссы результата отличен от знака складываемых мантисс. Это свидетельствует о переполнении разрядной сетки.

m(C) = 0.1100 = (коррекция) -0.1010

(C) = 0.100 + 0.001 = 0.101

Ответ: C = -0.1010*25

Умножение двоичных чисел

Учножение в двоичной системе счисления операции умножения выполняются двумя способами:

1) умножение начиная с младших разрядов

1101 - Множимое

1101 - Множитель

————

1101

0000 - Частные произведения

1101

1101

——————

10101001 - Произведение


2) умножение начиная со старших разрядов

1101 - Множимое

1101 - Множитель

————

1101

1101 - Частные произведения

0000

1101

——————

0101001 - Произведение

Для реализации умножения используется схема

hello_html_m4337ea1a.png










Алгоритм умножения

1. Очистить сумматор и установить счетчик сдвигов в 0

2. Если младший разряд регистра В равен 0, то перейти к шагу 3, если 1, то прибавить содержимое регистра А к сумматору.

3. Сдвинуть содержимое сумматора на один разряд право.

4. Сдвинуть содержимое регистра В на один разряд вправо.

5. Если счетчик сдвигов равен количеству разрядов, то закончить умножение. Если нет, то увеличить счетчик сдвигов на 1 и перейти к шагу 2.

Знак произведения получается путем сложения знаков множителя и множимого в двоичном сумматоре в соответствии с логической операцией сложение по модулю 2.

1 + 1 = 0

1 + 0 = 1

0 + 1 = 1

1 + 1 = 0


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


Деление двоичных чисел

В общем случае процесс деления выполняется по форме

Делимое - _ 1100100 1010 - Делитель

1010 ———

———— 1010 - Частное

_ 00101

1010

———

_ 1011

1010

————

01010

1010

————

0000


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




Делимое - 0.1100100 1.0110 - Дополнительный 1.0110 код отрицательно-

————— го делителя

+ 10.0010

0.0101 Сдвиг остатка влево,

1.0110 если остаток (+)

—————

- 1.1011 Восстановление остатка.

+ 0.1010 Остаток (-).

—————

10.0101

0.1010 Сдвиг влево.

1.0110

—————

1.00000

Алгоритм операции деления

1. Перевод (отрицательного) делителя в дополнительный код.

2. Сложение делимого и дополнительного кода делителя.

3. Если остаток положительный, то в частное записывается 1, а остаток сдвигается влево. Если остаток отрицательный, то в частное записывается 0 и остаток восстанавливается путем прибавления прямого кода делителя.

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

Схема операции деления должна иметь следующие блоки:

hello_html_m42534e63.png









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

mC = mA / mB ; PC = PA - PB

5.4. Логические основы построения ЭВМ

Для математического описания работы ЭВМ, синтеза и анализа элементов, узлов и систем используется наука алгебры логики. В основе алгебры логики лежит понятие высказывания.

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

1. Логическое отрицание (операция НЕ, инверсия),

f(x) = x , где х − булева переменная.

x f(x)

0 1

1 0

2. Логическое сложение (операция ИЛИ, дизъюнкция),

f(x) = x1 ˅ x2

x1 x2 f(x)

0 0 0

1 0 1

0 1 1

1 1 1

3. Логическое умножение (операция И, конъюнкция),

f(x) = x1˄ x2

x1 x2 f(x)

0 0 0

1 0 0

0 1 0

1 1 1

  1. Логическая функция сложения по модулю 2

(операция mod 2)

f(x) = x1 x2

х1 х2 f(x)

0 0 0

0 1 1

1 0 1

1 1 0

  1. Логическая функция – штрих Шеффера

Штрих Шеффера, обычно обозначаемый |, эквивалентен операции И-НЕ 

f(x) = x1 | x2 = x1 ˄ x2

x1 x2 f(x)

0 0 1 0 1 1

1 0 1

1 1 0

  1. Логическая функция – стрелка Пирса

Стрелка Пирса, обычно обозначаемая ↓, эквивалентна операции ИЛИ-НЕ 

f(x) = x1 ↓ x2 = x1 ˅ x2

  1. Логическая функция – импликация

Импликация как булева функция ложна лишь тогда, когда посылка истинна, а следствие ложно.

f(x) = x1 → x2 (x2 ← x1) или (¬ х1) ˅ х2

x1 x2 f(x) x1 x2 f(x)

0 0 1 0 0 1

0 1 1 0 1 0

1 0 0 1 0 1

1 1 1 1 1 1

  1. Логическая функция – запрет( отрицание)

Логическое отрицание. (inversio – лат. переворачиваю) Присоединение частицы «не» к высказыванию A называется операцией логического отрицания или инверсией. Обозначается A или ¬A.

f(x) = ¬ x1, х1


Основные законы алгебры логики


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

  1. Закон двойного отрицания =

x = x

2 Коммутативность дизъюнкции

x1 ˅ x2 = x2 ˅ x1


3. Коммутативность конъюнкции

x1 ˄ x2 = x2 ˄ x1


4. Ассоциативность дизъюнкции

(x1 ˅ x2) ˅ x3 = x1 ˅ (x2 ˅ x3)


5. Ассоциативность конъюнкции

(x1 ˄ x2) ˄ x3 = x1 ˄ (x2 ˄ x3)


6. Дистрибутивность конъюнкции

относительно дизъюнкции

x1 ˄ (x2 ˅ x3) = (x1 ˄ x2) ˅ (x1 ˄ x3)


7. Дистрибутивность дизъюнкции

относительно конъюнкции

x1 ˅ (x2 ˄ x3) = (x1 ˅ x2) ˄ (x1 ˅ x3)


8. x ˅ x = x 9. x ˅ x = x 10 x ˅ 0 = x


11. x ˄ 1 = x 12 x ˄ 0 = 0 13 x ˅ 1 = 1


14. x ˅ x = 1 15. x ˄ x = 0 16 x1 ˄ x2 = x1 ˅ x2

17. x1 ˅ x2 = x1 ˄ x2



Комбинационные элементы



hello_html_706b3f53.png

hello_html_6592b9e4.png




На базе логических элементов строятся основные узлы ЭВМ(счетчики, регистры, сумматоры, дешифраторы, шифраторы и т.д.).

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

Этапы синтеза логических схем

1. Разработка и составление таблиц истинности по алгоритму работы логической схемы.

2. Составление логических формул на основе совершенно дизъюнктивной или совершенно конъюнктивной формы.

3. Минимизация логических формул.

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

x1 x2 y знак

0 0 0 +

0 1 1 -

1 0 1 -

1 1 0 +

Составим логическое уравнение в совершенно дизъюнктивно нормальной форме

__

y = x1x2 V x1x2


В совершенно конъюнктивной нормальной форме эти уравнения будут иметь следующий вид:

hello_html_m70e3578d.png








ГЛАВА 6. ОСНОВЫ АЛГОРИТМИЗАЦИИ

6.1. Общие сведения об алгоритмизации

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

Термин “алгоритм” транскрипция имени узбекского математика Мухаммеда Аль-Хорезма, жившего в IX веке и разработавшего правила выполнения четырех действий арифметики.

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



1. Конкретность.

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

2. Массовость.

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

3. Понятность.

Исполнитель должен знать цель и данные для выполнения алгоритма.

4. Дискретность.

Алгоритм представляется в виде конечной последовательности шагов (действий), т. е. алгоритм имеет дискретную структуру.

5. Определенность.

Каждый шаг (действие) алгоритма должен быть четко и недвусмысленно определен и не должен допускать произвольной трактовки.

6. Эффективность.

Алгоритм должен быть выполнен точно и за минимальное время.

6.2. Формы записи и методы построения алгоритма

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

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

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


Примеры:

1. Алгоритм Евклида ─ нахождение наибольшего общего делителя двух натуральных чисел: А и В (например, 4 и 12).

1. Если A=B, то перейти к п.5

2. Если A>B, то A=A-B.

3. Если Aто B=B-A.

4. Перейти к п.1.

5. Наибольший общий делитель.

2. Алгоритм вычисления корней квадратного уравнения:

  1. Вычислить

. hello_html_me8f32bc.gifhello_html_3002f543.gif

2. Если d>0, то hello_html_54b4aefb.gif


3. Если d<0, то решения нет;

4. Вывод значений x1, x2 .

5. Конец.

3. Алгоритм нахождения максисимального числа из последовательности чисел:

1. Ввести количество чисел n.

2. Ввести массив чисел а(n).

3. Задать начальные значение max, М=0.

4. Установить счетчик чисел i=1.

5. Если а(i)>M, то M=а(i).

6. Если i>n, то перейти к п.8.

7. i=i+1, перейти к п.5.

8. Вывод значений М=max a(i).

9. Конец.

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



Примеры.

1. АЛГ “АЛГОРИТМ ЕВКЛИДА”

АРГ A,B: вещ

РЕЗ НОД: вещ

НАЧ

ЕСЛИ А=В ТО НОД:=A

ИНЕС А>B ТО А:=А-B

ИНАЧЕ В:=B-A

КЕСЛИ

КОН

Примечание. ИНЕС - иначе если;

КЕСЛИ - конец выбора если.

2. АЛГ “ВЫЧИСЛЕНИЕ КОРНЕЙ”

АРГ а, в, с, d: вещ

РЕЗ : вещ.

НАЧ

.

ЕСЛИ то

ИНАЧЕ

ЕСЛИ

КОН

3. АЛГ “НАХОЖДЕНИЕ MAX ЧИСЕЛ”

АРГ n, i: цел

а[1:n]: вещ

RES MAX: вещ

HАЧ

MAX:=0

OT i=1 ДО n ЦИКЛ

ЕСЛИ а[i] > MAX TO MAX:=a[i]

ECЛИ

КЦИКЛ

КОН

Блок-схема (cхема алгоритма) представляет алгоритм в наглядной графической форме. Для изображения алгоритмов приняты определенные стандарты графических фигур.

hello_html_m65ddae31.png

Стандарты графических фигур для изображения алгоритмов

hello_html_716d0ac3.png



















hello_html_m476b89a9.png


Графическое изображение условий выбора

hello_html_m736c801a.png

































6.3. Примеры блок-схем алгоритмов

1. Алгоритм вычисления наибольшего общего делителя

hello_html_m6dab1427.png
















  1. Алгоритм вычисления корней квадратного уравнения


hello_html_m3cabd7d4.png














3. Алгоритм нахождения максимального значения



hello_html_ma818921.png































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

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

Cоставные алгоритмы

hello_html_m70076672.png




















Примеры алгоритмов

Задача 1. Вычислить сумму ряда с заданной точностью ε


S= ;


Отношение последующего и предыдущего членов ряда


или

Алгоритмы

  1. Ввод х, ε;

  2. k=1, S=x, a=1;

  3. k=k+1;

  4. a=a·(x/(k+1));

  5. s=s+a;

  6. если АВS(a)> ε, то переход к пункту 3;

  7. вывод s, k;



hello_html_6dedb4d8.png


Задача 2. Отсортировать массив по убыванию ( или по

возрастанию) методом «пузырька» и «обмена»

Словесный алгоритм

1. Ввод размерности массива n.

2. Генерирование массива М(n) заданной размерности с организацией цикла.

3. Организовать циклы:

( метод пузырька) ( метод вставки)

внешний от i=2 до n от i=1 до n ( от i=1 до n)

внутренний oт j=N, i j=n до i -1 ( j=i+1 до1).

  1. Если M(j)>M(j-1),то если M(i)>M(j), то

  2. Поменять M(j), M(j-1) поменять M(i),M(j)

6. После завершения внешнего цикла вывод отсортированного массива.

Блок-схема алгоритма


hello_html_m163f625a.png






Задача 3. Сортировка массива с записью в файл последовательного доступа

Словесный алгоритм

1. Ввод размерности массива N.

2. Ввод элементов массива A(N).

3. Сортировка массива методом «пузырька».

4. Открытие файла последовательного доступа для записи.

5. Запись массива A(N).

6. Открытие файла последовательного доступа для чтения и считать записи с выводом на экран и подсчитать количество записей.

7. Вывод.

hello_html_4559afd7.png

.


Блок-схема алгоритма сортировки методом вставки





Задача 4. Бинарный поиск необходимых чисел

Словесный алгоритм

1. Ввод массива чисел A(n).

2. Сортировка массива, например, по убыванию.

3. Ввод ключа (элемента массива) k.

4. Деление массива пополам (А+В)\2, где А=1; В=n.

5. Если kтогда B=I-1.

6. Если k>A(I), тогда A=I+1.

7. Если B>=A, тогда переходим на пункт 4.

8. Вывод результата.


Блок-схема алгоритма






hello_html_3b930151.png


Задача 5. Вычисление интеграла методом Симпсона

Словесный алгоритм

1. Ввести исходные данные: интервалы А, В,точность вычисления Е и шаг h.

2. Вычислить значения f(x) для шагов h и 2h.

3. Сравнить по модулю разность (f(h) - f(2h)) c точность Е.

4. Если разность удоволетворяет точности, то вывести результат на экран монитора, если нет, то изменить шаг h на 2h и продолжить вычисления до получения заданной точности..


Блок-схема алгоритма

hello_html_m73e31cfa.png





Задача 6. Решение дифференциальных уравнений

методом Эйлера

Словесный алгоритм

1. Ввод: n ─ порядок системы,

x0, yi0 ─ начальные условия,

h, xk ─ шаг и конечное значение вычислений

2. Запись правых частей уравнений в программу.

3. Вычисление значений yi,k+1.

4. Расчет ошибки R и уточненное значение yi,k+1

5. Проверка на конечное значение xk. Если xi, то печать значений xi, yi,k+1, yi,k=yi, k+1 xi+1=xi+h и переход к п. 3, иначе к п.6.

6. Конец.


hello_html_m67ebfac7.png

Задача 7. Определение опорного плана транспортной

задачи методом «северо-западного угла»

Опорный план ─ это такое допустимое решение, которое удовлетворяет условиям ограничения.

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


В1 В2 В3 а(i)

А1 10 1 3 40

А2 6 2 5 80

А3 2 5 14 60

b(j) 30 100 50 180


Вначале заполняется клетка А1-В1. Спрос пункта В1 составляет 30 единиц, а запасы пункта отправления ‒ 40 единиц. Следовательно, спрос В1 можно полностью удовлетворить за счет запасов А1. Далее рассматривается клетка А1-В2. Спрос составляет 100 единиц. В последующих распределениях назначаются перевозки для клетки А2-В2 (80 единиц). Для третьей строки выделяются 10 единиц на клетку А3-В2, так как надо обеспечить 100 единиц и оставшиеся 50 единиц для клетки А3-В3. Таким образом, опорный план будет иметь вид:

В1 В2 В3 а(i)

10 1 3

А1 30 10 40

6 2 5

А2 80 80

12 5 14

А3 10 50 60

b(j) 30 100 50 180





Алгоритм способа «северо-западного угла»

1. Ввод данных i,j = M,N, S(i,j), A(i), B(j).

2. Организация цикла по i, т.е. i=1,M.

3. Организация цикла по j, т.е. j=1,N.

4. Если A(i) > B(j), то K(i,j) = B(j), A(i)=A(i)-B(j),

B(j)=0, иначе K(i,j)=A(i), B(j)=B(j)-A(i), A(i)=0.

5. Если j

Блок-схема алгоритма «северо-западного» углаhello_html_67f08c80.png


Задача 8. Решение нелинейных уравнений методом

половинного деления

Решение уравнения, представленного в общем виде как F(x)=0, сводится к двум этапам: отделение корней и определение корней с заданной точностью. Отделение корней на отрезке [A,B] при условии определенности и непрерывности функции F(x) выполняется в соответствии с алгоритмом. Если функция принимает на каждом отрезке значения разных знаков (т.е. F(a)*F(b)<0), то уравнение имеет на этом отрезке по меньшей мере один корень. Суть метода (половинного деления) сводится к делению [A,B] отрезка в отшошении С = (a + b)/2.

В дальнейшем производится выбор того из отрезков [a,c], [c,b], на концах которого функция принимает значения разных знаков. Процесс продолжается до тех пор, пока длина “текущего” отрезка и модуль разности значений функций на его концах будет меньше заданной точности.

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

1. Ввести исходные данные: границы А, В и точность вычисления Е.

2. Вычислить значение С = (А+В)/2.

3. Если F(A)>F(B), то B=C, иначе A=C.

4. Сравнить значение (B-A) > E, то перейти на 2.

5. Вывести значение X=(B+A)/2 и погрешность вычисления (B-A)/2.






hello_html_7422d5ca.png


Задача 10. Вычисление сумм чисел двумерного массива, которые расположены выше и ниже главной и побочной

диагоналей


3 6 7 4 9 7 3 6 7 4 9 7

2 4 2 8 5 4 2 4 2 8 5 4

1 5 4 8 9 7 1 5 4 8 9 7

3 1 6 3 3 8 3 1 6 3 3 8

6 7 3 8 2 9 6 7 3 8 2 9

3 8 9 1 4 3 3 8 9 1 4 3

Словесный алгоритм

1. Ввести размерность массива n*n

2. Ввести двумерный массив A(n,n)

c использованием датчика случайных чисел

3. Вывести массив на экран с высвечиванием чисел

на главной диагонали, например красного цвета

4. Вывести массив на экран с высвечиванием чисел

на побочной диагонали, например синего цвета

5. Цикл от i=1 до n

Цикл от j=1 до n

Если i>j то s1=s1+ A(i,j) ─ сумма ниже главной диагонали

Если i

Если i>n-j+1 то s3=s3+ A(i,j) ─ сумма ниже побочной диагонали

Если i

6. Вывести суммы чисел на экран s1, s2, s3, s4









Блок-схема алгоритма

hello_html_m771e2e0e.gif


































Задача 11. Формирование спирали


1 2 3 4 1 8 9 16

5 6 7 8 2 7 10 15

9 10 11 12 3 6 11 14

13 14 15 16 4 5 12 13

Словесный алгоритм

1. Ввести размерность массива n*n

2. Ввести двумерный массив A(n,n) с числами

от 1 до n

3. Вывести массив A(i,j) на экран с заданием местоположения первого элемента массива

5. Цикл от i=1 до n

Цикл от j=1 до n

Если i> четное, то B(j,i)=A(i,n-j+1)

иначе B(j,i)=A(i,j)

6. Вывести массив B(i,j) на экран с заданием местоположения первого элемента массива, смещеного относительно первого массива на величину М.
















Блок-схема алгоритма












Задача 12. Вычисление площади фигуры методом

Монте-Карло

hello_html_m13a62170.png









Словесный алгоритм

1. Ввести графический режим

2. Нарисовать фигуру с учетом выбранной системы координат

3. Ввести число точек n

4. Задать цикл от i=1 до n

5. Ввести точки с помощью датчика случайных чисел с координатами x, y в пределах квадрата ( прямоугольника)

6. Сформировать уравнения круга x^2+y^2=r^2 и треугольника y1=k1 ·x1+b1, y2=k2 ·x2+b2, y3=k3 ·x3+b3

7. Если x^2+y^2 < r^2 and y1 (> = , <=) k1 ·x1+b1 and y2 (>=,<=)

к2 ·x2+b2 and y3 (>=,<=) k3 · x3+b3, тогда k=k+1

  1. Площадь фигуры определяется выражением

s=(k/n)*L*H.

Примечание. Знак неравенства (>=) или (<=) определяется условием попадания точек относительно линии (правее или левее линии). Допустим, что координаты точек следующие: x1=-5; y1=-5; x2=-3; y2=5; x3=8; y3=-2. Тогда с учетом общего уравнения линий, представленных выше, имеем y=0,5x+2,5; y=(1/11)x+3/11; y=(-1/13)x+1/13. Для попадания точек вне треугольника неравенства можно записать так:

y>0,5+2,5; y>(1/11)x+3/11; y>(-1/13)x+1/13.

Блок-схема алгоритма



ГЛАВА 7. ПРОГРАММИРОВАНИЕ

7.1. Общие сведения о программировании

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

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

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

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

Интерпретатор ─ программа, которая осуществляет пооператорную (покомандную) обработку и выполнение команд.

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

Транслятор выполняет следующие операции:

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

2. Производит генерацию машинной программы.

Дальнейшим развитием языков программирования является появление языков высокого уровня, ориентированных на решение конкретных задач и имитирующие естественные языки. Так, язык программирования ФОРТРАН предназначен для решения научно-технических задач, язык КОБОЛ ─ для решения экономических задач. Появились универсальные языки программирования на ПЛ 1, БЕЙСИК, рассчитанных на решение широкого класса задач. Все эти языки программирования не имеют машинной ориентации. Развитие языков программирования высокого уровня позволило заниматься программированием широкому кругу пользователей: инженерам, экономистам, научным сотрудникам. Системные программисты, разрабатывающие на машинных языках (языке Ассемблер) подпрограммы, обеспечивают эффективное использование языка программирования. Эти подпрограммы объединены в систему программирования.

Основные системы программирования: модульное, структурное, объекто-ориентированное программирование. Эти системы программирования имеют место в современных языках Турбо Паскаль, Турбо Си++ и др.

Самые востребованные, перспективные и популярные 
языки программирования. Рейтинг 2015

Самые востребованные языки программирования в 2015 году были

hello_html_7aa9add9.png

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

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

  3. Objective C – этот язык пригодится вам, если вы собираетесь заняться разработкой приложений для Apple Mac OS X, а также для айфонов, айпадов. Этот язык стал весьма востребованным еще со времен выхода первого айфона в 2007-м году.

  4. Язык C# (Си шарп). Это самый популярный язык сейчас для разработки приложений для Windows, и очень популярный для мобильных устройств. А еще движок для разработки игр (Unity 3D) также использует C# в качестве одного из основных языков.

  5. Язык PHP является важным инструментом для создания современных.

  6. Веб-приложений. На PHP разработано большинство сайтов, ориентированных на большой объём данных. Например, системы управления контентом, типа WordPress.

7. Каждый современный сайт использует JavaScript. Это ключевой язык для создания интерактивности сайта или построения пользовательских интерфейсов, создано много популярных JavaScript-фреймворков.

8. Ruby on Rails. Этот язык набирает популярность среди начинающих компаний, поскольку лучше подходит для быстрой разработки веб-приложений (по сравнению с Java или .Net).

9. Python. Веб-приложения, статистика, анализ данных, пользовательские интерфейсы − для каждой бы задачи найдётся подходящий фреймворк в Python.



Перспективные языки программирования 2015-2025 годов.

Язык Erlang. Главная фишка ─ параллельность! Крупные банки с миллионами пользователей используют Erlang.

Язык R. Широко используется для разработки статистического программного обеспечения.

Язык Swift. Язык программирования Swift ─ новый, более быстрый и легкий путь разрабатывать под Mac и iOS, по сравнению с Objective-C.

Язык Go. Этот язык разработан Google. Правильный подход к построению системного программного обеспечения на многоядерных компьютерах.

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

В настоящее время можно выделить несколько сфер использования: корпоративный сектор, веб-разработка, мобильная разработка, системное программирование.

Корпоративные приложения

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

Изучать прежде всего Java. И обязательно базы данных (язык SQL) - Oracle, MSSQL. Также хороши и Microsoft решения в этой сфере. Изучать C#, да и вообще всю платформу .Net

Иногда язык программирования С++

Веб-разработка

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

Сначала изучают HTML, CSS, JS. Затем продолжают прогрммировать на PHP + базы данных MySQL. Также некоторая доля разработок приходится на Ruby и порой даже на MS решения (ASP .Net)

Мобильные приложения

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

Тут все поделено на 3 сферы- Android, Apple, Windows.

Для Apple нужно знать Objective C и Swift.

Для Андроида - Java. Для Windows - .Net

Системное программирование

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

С, С++, Assembler. И обязательно знать устройство железа, операционных систем, сетей.

Рейтинг языков программирования 2015 года

  1. Java, C# , SQL

  2. PHP, JS

  3. C, C++.

  4. Objective C, Swift, Ruby.

  5. Python, Perl, Basic.


7.2. Методы программирования

Методы сортировки

Имеется массив символов M(i), состоящий из записей (чисел, букв, слов). К каждой записи приписан соответствующий ключ KM(i), по которому можно выстроить множество записей массива в порядке убывания (возрастания), т. е. выполнить сортировку.

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

M(1)=3, M(2)=6, M(3)=1, M(4)=9, M(5)=4,

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

9, 6, 4, 3, 1.

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

M(4)=9, M(2)=6, M(5)=4, M(1)=3, M(3)=1.

Однако существует и второй способ ─ способ адресной сортировки, когда элементы остаются в исходном массиве M(i), а сортируется ключ массива, т. е.

M(1)=3, M(2)=6, M(3)=1, M(4)=9, M(5)=4,

M(1)=4, M(2)=2, M(3)=5, M(4)=1, M(5)=3.

Пример. Символьный массив представлен в виде результатов соревнований в беге на 100 м.

№№ Ф.И.О. Город Результат

1. Иванов В.И. Чебоксары 10,25

2. Петров Е.П. Канаш 10,40

3. Сидоров Г.И. Алатырь 11,05

4. Кистанов С.С. Шумерля 10,16

5. Катков В.И. Вурнары 10,30

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

Кср(1)=1, Кср(2)=4, Кср(3)=5, Кср(4)=4, Кср(5)=3,

Кр(1)=2, Кр(2)=4, Кр(3)=5, Кр(4)=1, Кр(5)=3.

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

Пузырьковая сортировка

Смысл такого метода состоит а том, что белее «легкие» элементы постепенно всплывают на поверхность. Это означает, что меньшие по значению числа перемещаются влево или вправо массива. Условиями сортировки являются определение инверсий, т.е. если M(j)>M(j-1), то Mj)M(j-1) (меняются местами) и постепенно перемещаются в конец (левый или правый) массив. Условием сортировки является обеспечение перемещений более «легкого» элемента и в последующих циклических операциях больше не использовать этот элемент с целью сравнения. Эффективность метода O(n2), т.е. любых M(n) сортировка решений за Cn2 операций.

Cортировка методом вставки

В отличие от описанного метода данный метод основан на использовании циков i=1,n; j=i+1,n и сравниваются значения, если M(i).>M(j), то M(i)M(j) (меняются местами).

Древовидная сортировка

Суть метода состоит в том, что сортируемый массив M(n) представляется в виде бинарного дерева.

Сортировка выполняется в два этапа.

На первом этапе определяется наименьшее из каждой пары элементов массива при n\2 сравнений. В последующие n\(n+1) просмотрах находятся наименьшие элементы для отобранных уже пар для n-1 соединений.( знак «\ » означает целочисленное деление).

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

После n ─ кратного выполнения на втором этапе дерево будет состоять из значений и процесс сортировки закончится.

Пример. Задан массив с элементами

9, 8, 13, 4, 1, 3, 15, 6.

Представим бинарное дерево, начиная с нижнего уровня, и выполним первый этап сортировки.hello_html_111a0b6a.png




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

hello_html_m98895e8.png


hello_html_45b717fc.png

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


hello_html_65366162.png

Быстрая сортировка

Суть метода состоит в том, что одномерный массив M(K) разбивается на поля массива M1, M2 так, чтобы в M1 находились элементы не превосходящие x, а в M2 ─ не меньше x.

Пример. Задан массив

6, 23, 17, 8, 14, 25, 9, 3, 2, 1, 7, ( число 14 середина массива)

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

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

I этап. 6 23 17 8 14 25 9 3 21 7

II этап.

1 – й цикл. 6 7 3 8 9 25 14 17 21 23

2 – й цикл. 3 7 6 8 9 17 14 25 21 23

3 – й цикл. 3 6 7 8 9 17 14 23 21 25

4 – й цикл. 3 6 7 8 9 17 14 21 23 25

III этап. 3 6 7 8 9 17 14 21 23 25



Методы поиска

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

Смысл поиска можно описать с помощью примера.

Имеется массив M(n) c n -записями и ключами KM(i) .

При такой постановке можно иметь следующие виды поиска:

- найти одну запись в M(n), имеющую ключ K(n);

- найти все записи с соответствующим ключом;

- при отсутствии требуемой записи, добавить новую запись;

- просто включить новую запись.

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

Наиболее эффективным является бинарный поиск или метод деления пополам.

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

Методы решения дифференциальных уравнений

Метод Эйлера

Дифференциальное уравнение представляется в канонической форме Коши:

dy/dx =f(x,y)при начальных условиях y(x0) = y00.

Решение основано на разложении функции y(x) в ряд Тейлора .

y(x)= y(x0)+(x-x0 )y(x0)+(x-x0)·2/2dy/dx0+....

В точке [x0 + h] при малых значениях h можно ограничиться двумя членами ряда, тогда

y(x0+h) = y0 + h·y(x0) +0(2),

где 0(2) ─ бесконечно малая величина порядка 2,

x0 ─ начальное (нулевое) условие.

Заменим производную y(x0) значением f(x,y), в результате получим:

y(x0+h) = y0 + h·f(x0y0) или

y(k+1) = yk + ∆yk,

где yk = h·f(xkyk), k=1,2,...n, h ─ шаг вычислений.

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

, hello_html_m1837bc96.gif


где yn(x) ─ приближенное решение дифференциального уравнения в точках с шагом h;

ykn(x) ─ приближенное решение уравнения с шагом kh;

p ─ порядок метода.

С учетом погрешности метод Эйлера можно представить зависимостью: hello_html_m53d16701.gif

.

Для систем дифференциальных уравнений формула Эйлера имеет вид: .hello_html_m5826e9ba.gif

Исходные дифференциальные уравнения приводятся к системе уравнений первых порядков.

Например:

d2y/dx2+dy/dx+3·y=6·x

Обозначим: Система уравнений первого порядка:

y1=y, dy1=y2,

y2=dy/dx dy2=6·x-2·y2 -3·y1


С учетом записи начальных и конечных значений y в массивы yk(n), yk1(n) системы уравнений будут иметь вид:

dy/dx(1)=y(2)

dy/dx(2)=6x-2y(2)-3y(1)

Метод Рунге-Кутта четвертого порядка

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

y(n)=f(x,y,dy/dx,....y(n-1),y(x0)=y(0),dy/dx(x0)=dy/dx(0),

y(n-1)(x0 )=y0(n-1),

yi(x+h)=yix+dyix (i=1,2,...n),

dyix=1/6ki1+2ki2+ 2ki3+ ki4),

где ki1=hf(x,y1x ,y2x ,y3x,....ynx),

ki2=hf(x+h/2,y1x+ki1/2,.........ynx+ki1/2 )

ki3=hf(x+h/2,y1x+ki2/2,.........ynx+ki2/2 )

ki4=hf(x+h,y1x+ki3 ,y2x+ ki3,ynx+ ki3).

Погрешность решений дифференциальных уравнений можно оценить по зависимости

R0 = [yn(x) - y2n(x)]/15.

В качестве примера рассмотрим приведение уравнений типа y” +p(y2-1)·y+y=0 к форме Коши. Данное уравнение является математической моделью автоколебательных механических и электрических систем. Для малых (р<<1) и больших (p>>1) значений параметров в теории колебаний развиты приближенные методы аналитического решения уравнений Ван дер Поля. Для промежуточных значений Р уравнение приходится решать численным методом.

Для приведения уравнения к форме Коши введем обозначение:

y1(x) = y(x),

y2(x) = dy/dx(x)

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

dy1/dx=y2(x);

dy2/dx=p(1-y12(x))y2(x)- y1(x).

Решение нелинейных уравнений методом половинного деления

Решение уравнения, представленного в общем виде как F(x)=0 сводится к двум этапам: отделение корней и определение корней с заданной точностью. Отделение корней на отрезке [A,B] при условии определенности и непрерывности функции F(x) выполняется в соответствии с алгоритмом. Если функция принимает на каждом отрезке значения разных знаков (т.е. F(a)*F(b)<0), то уравнение имеет на этом отрезке по меньшей мере один корень. Суть метода дихотомии (половинного деления) сводится к делению [A,B] отрезка в отшошении С = (a + b)/2. В дальнейшем производится выбор того из отрезков [a,c], [c,b], на концах которого функция принимает значения разных знаков. Процесс продолжается до тех пор, пока длина “текущего” отрезка и модуль разности значений функций на его концах будет меньше заданной точности.

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

Метод интегрирования Симпсона


Для определения интеграла вида,

где a и b ─ нижний и верхний пределы интегрирования,

f(x) ─ непрерывная функция на отрезке [a,b], часто используется при моделировании метода Симпсона.

Суть метода состоит в замене подинтегральной функции f(x) интерполяционным полиномом второй степени P2(x) ─ параболой, проходящей через узлы x0, x1 и x2. После использования интерполяционной формулы Нью тона для трех узлов можно получить формулу для интегрирования методом Симпсона.

hello_html_20a6c958.png

для n+1 узла

hello_html_69b226d2.png

Погрешность определяется следующей зависимостью

hello_html_m4617a4c9.png,

где М=max | f(x)|.


Получение значения M требует дополнительных вычислений, что усложняет задачу. В связи с этим получило распространение другое практическое правило оценки погрешности - правило Рунге. которое связано с вычислением двух значений интеграла с шагом h и с шагом 2h.Тогда погрешность R(n) имеет величину:

hello_html_28597306.png.

Метод динамического программирования

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

hello_html_35448891.png

Необходимо определить кратчайший путь из начальной вершины в конечную. Время перехода из одной вершины в другую указано около каждой дуги графа. Построим матрицу расстояний. Обозначим через fi(1,7) кратчайший путь из начальной вершины в j-ю вершину графа. Вычислим кратчайшие пути из начальной в j-е вершины.

f1=t01=1; f2=t02=3; f3=t03=4;

f4=min(f1+t14; f2+t24;

f3+t34)=min(1+8;3+5;4+2)=min(9;8;6)=6; f5=min(f1+t15; f4+t45) = min(1+10; 6+3)=9;

f6=min(f3+t36; f4+t46) = min(4+5; 6+2) = 8;

f7=min(f4+t47; f5+t57; f6+t67) = min(6+4; 9+3; 8+3) = 10.

В соответствии с приведенным выражением можно вывести общую зависимость для определения:

fj=min(fi+tij)

i j=1,2,...n .


7.3. Cтруктуры данных

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














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




Операции над структурами данных

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

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

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

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

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

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

Современные языки программирования блочного типа (PASCAL, C) обладают достаточно развитыми возможностями построения программ с модульной структурой и управления доступом модулей к данным и процедурам. Расширения же языков дополнительными возможностями конструирования типов и их инкапсуляции делает язык объектно-ориентированным. Сконструированные и полностью закрытые типы данных представляют собой объекты, а процедуры, работающие с их внутренней структурой ─ методы работы с объектами. При этом в значительной степени меняется и сама концепция программирования. Программист, оперирующий объектами, указывает в программе, что нужно сделать с объектом, а не как это надо делать.

7.4. Язык программирования С++

Общие сведения

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

Язык С++ был разработан в 1980 году сотрудником AT&T Laboratories Бьярном Страуструпом как объектно -ориентированный язык, предназначенный для решения как системных, так и прикладных задач. Он имеет ряд полезных конструкций по сравнению с языком С : - можно использовать два вида комментариев (обычный /* */ и строчный //); - описывать переменные можно в любом месте блока;

- при обращении к функциям надо указывать ее объявление (declure) и типы аргументов или ее прототип, в этом случае сама функция может находиться в любом месте программы;

- становится более доступной операция занятия и освобождения памяти путем ввода операторов new, delete;

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

- можно создавать пользователю новые типы данных и структуры с использованием функции operation.  

Типы данных в языке программирования С++

Целые числа со знаком (int,short,long).

Эти данные могут иметь положительные и отрицательные значения.

Int ─ основной тип данных для конкретной ЭВМ, имеет диапазон чисел от 32768 до 32767 (2 байта);

Short ─ аналогичен типу данных int, диапазон short <= int;

Long ─ имеет размер от ─ 2 млрд до 2 млрд (4 байта).

Можно встретить такое описание данных: short int или long int. Пример: int a; short b; long c; int a1, a2, a3;

Целые константы ─ это числа, представленные без десятичной точки и без показателя степени. Для записи целых констант типа long в конце числа ставится буква L или l. Например, 212L., c=-6; int a=23;

short A1,B1=93;

Целые числа без знака (unsigned int, short, long)

Эти данные имеют только нулевые и положительные значения. Для обозначения чисел используется ключевое слово ugsigened. Диапазон чисел int(short) от 0 до 65535 (2 байта). а типа long от 0 до 4 млрд (4 байта). Примеры описания целых чисел без знака:

unsigned int a; unsigned long b; unsigned short c;

Числа с плавающей запятой(float,double).

Числа с обозначением float имеют сходство с типом real в языке Pascal.

Примеры представления чисел:

1000 000 000 = 10*10^9 = 1.0 e 9

123000 = 1.23*10^5=1.23 e 5

322.56 = 3.2256*10^2=3.2256 e 2

0.000056 = 5.6*10^-5=5.6 e -5. Для размещения чисел в памяти отводится 4 байта (8 бит для порядка и знака, 24 бита для мантиссы. Точность представления до 6-7 десятичного числа в диапозоне +/-.(10 ^ -37 до 10 ^ 38).

Числа с обозначением DOUBLE предусматривают обработку данных с двойной точностью Для представления чисел используется 64 бита(8 байта) в диапазоне от -10 ^307 до 10 ^307.

Примеры описания чисел:

float a,b; double c; float d=6.3e-32;

Символьные данные (char)

Ппредставляются в диапазоне от 0 до 255 символов ( 1 байт ).

Примеры описания символов:

char b; char c,d; char k=”s”;

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

Указатели

Это переменные, используемые для указывания на переменные, которые определяют не значение переменной, а ее адрес. Объявление указателей выполняется символом *(звездочка) и индикатором переменной.

Пример: int*r1; unsiggned long*p1,p2;

Символ операции &, поставленный перед переменной , показывает на адрес этой переменной. Например, выражение &x означает, что это адрес переменной x.

Для размещения чисел в памяти отводится 4 байта (8 бит для порядка и знака, 24 бита для мантиссы. Точность представления десятичного числа в диапазоне .(10 ^-37 до 10 ^ 38).

Числа с обозначением Double предусматривают обработку данных с двойной точностью Для представления чисел используется 64 бита(8 байта) в диапазоне от -10 ^307 до 10 ^307.




Пример:

#include

main()

{

char a,*b,c;

a=”F”;

b=&a;

c=*b;

printf(“%c\n,c);

}

На экране будет высвечен символ X.

Символьные данные (char)

Представляются в диапазоне от 0 до 255 символов ( 1 байт ).

Примеры описания символов:

char b; char c,d; char k=”s”;

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

Структуры

Это размещение элементов и данных различного типа.

Пример:

typedef struct student

{

char name[15];

char family[20];

char date[15];

int i,a,g;

}

  Структуры и элементы программ

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

Пример:

#include stdio.h

/*Включение функции вывода на печать

из стандартной библиотеки языка С */

main(void)

{

Cout<<” Привет студентам”

//printf(“Привет студентам”);//оператор вывода

return O;

}

Программа содержит директиву препроцессора

- #include stdio.h, в которой имеется файл-заголовок stdio.h для объявления функции printf;

- два комментария

/*Программа вывода на печать*/ и //оператор вывода;

- объявление функции main, которая содержит заголовок main

(void) и тело функции

{

printf(“Привет студентам”);

return O;

}

- оператор (обращение к функции printf, после выполнения которой на экране выводится запись “Привет студентам”;

- оператор return с аргументом 0.

Программа вычисления корней

квадратного уравнения

/*включение стандартной библиотеки */

#include

#include

#include

#include

/*начало главной функции*/

main()

{

/*описание переменных*/

int a,b,c;

float x1,x2,x11,d;

clrscr();

/*вызов стандартной функции*/

printf(“введите коэффициенты a,b,c\n”);

/*ввод коэффициентов*/

scanf(“%d %d %d”,&a,&b,&c);

gotoxy(25,10);

printf(“a=%d b=%d c=%d \n”,a,b,c);

d=b*b-4*a*c;

/*условный оператор*/

if (d<0)

{

x1=(-b)/(2*a);

x11=sqrt(fabs(d))/(2*a);

gotoxy(20,15);

printf(“x1=%f +j%f\n”,x1,x11);

gotoxy(20,16);

printf(“x2=%f -j%f\n”,x1,x11);

}

else

{ x1=(-b+sqrt(d))/(2*a);

x2=(-b-sqrt(d))/(2*a);

gotoxy(20,12);

printf(“x1=%f x2=%f”,x1,x2);

}

/*останов до нажатия клавиши пробел*/

getch();

return(0); }

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

Директивы подстановки #include имеют формат

#include “ имя файла “ или

#include < имя файла >

В результате интерпретации директивы #include осуществляется подстановка на ее место содержимого файла. Директивы определения #define имеют формат

#define <идентификатор> <текст>

#define <идентификатор> <список параметров> <текст>

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

Примеры:

#define H 40 #define Len(H + 40)

В данном примере идентификатор Н определяется как целая константа со значением 40, а идентификатор LEN ─ как текст (Н+40).

После вхождения в идентификатор LEN получается выражение (40+40).

#define Ner(x,y) ((x+y)-(x/y))

При вызове Ner(5,2) получается выражение ((x+y)-(x/y)).

Объявления

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

<спецификация класса памяти>

<спецификация типа>

<описатель>

Объявление переменных

Объявление простых переменных определяет имя переменной и ее тип. Формат объявления <спецификация типа> <идентификатор>. В качестве спецификации может быть базовый тип, структура или объединение. Если спецификация опущена, то предполагается тип int.

Примеры:

int x;

unsigned long x,y;

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

Формат объявления

struct [<мег>] <список элементов><описатель>

Примеры:

struct

{

float x,y;

}complex;

char name[10];

int x;

long y;

} temp;

В первом примере объявляется структура complex из двух элементов x и y, во втором примере структура имеет три элемента.

Объявление массива определяет тип элемента массива и его имя. Формат <спецификация типа><описатель>

Примеры:

int r[10];

float matrix[5][5];

char*name[20];/*массив указателей*/

Объявление указателей специфицирует имя переменной-указателя и тип объекта, на который может указывать эта переменная. Формат <спецификация типа><описатель> Указателю p присваивается адрес переменной i. Указатель на тип void может указывать на значение любого типа.

int *array1[10];/*объявлен массив указателей с именем array1*/.

Объявление функции специфицирует имя функции, тип возвращаемого значения и, возможно, типы ее аргументов. Формат <спецификация типа><описатель><список типов аргуменов>

Примеры:

int add(int,int); /*объявлена функция с именем add, которая имеет два аргемента типа int и значение функции типа int*/

double calc();/*функция без типа списка аргумента*/

Классы памяти

Переменные могут быть глобальные и локальные (по времени существования). В языке С имеется четыре класса памяти:

auto локальные

register локальные

static глобальные extern глобальные

Область действия функций со спецификацией extern распространяется на все исходные файлы, которые составляют программу. Переменные классов памяти auto, register имеют объявления внутри тел функций и имеют локальное время жизни. При объявлениях могут использоваться различные модели памяти, которые устанавливаются с помощью модификаторов near, far, huge.

  Основные операции  


+ сложение

- вычитание

* умножение

/ деление

++ увеличение на единицу

уменьшение на единицу

% деление по модулю

< меньше, чем

> больше,чем

<= меньше или равно

>= больше или равно

== равно

!= не равно

&& логическая операция И

!! логическая операция ИЛИ

! логическое отрицание

= присваивание

() вызов функции

[] выделение элемента массива

выделение элемента структуры.

О п е р а т о р ы

В настоящее время существуют две версии языка программитрования С++. Первая, традиционная, версия базируется на исходной разработке Бьярна Страуструпа. Это та версия, которая использовалась программистами последние десять лет. Вторая версия, названная Standard C++, создана Бьярном Страуструпом совместно с комитетом по стандартизации (ANSI ─ American National Standards Institute, Американский национальный институт стандартов; ISO ─ International Standards Organization, Международная организация по стандартам). Хотя по сути эти две версии очень похожи, Standard C++ содержит несколько усовершенствований, которых нет в традиционном C++. Таким образом Standard C++ по существу является надмножеством традиционного C++.

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

/*

Программа на C++ в традиционном стиле V

#include

int main () {

/* программный код */

return 0;

#include <iostreara.h> подключает к программе заголовочный файл iostream.h, который обеспечивает поддержку системы ввода/вывода C++. Ниже представлена вторая версия программы, в которой используется современный стиль:

namespace

*/

#include using namespace std;

int main()

{

/* программный код */ return 0;

В #include после слова iostream отсутствуют символы .h. Во-вторых, в следующей строке задается так называемое пространство имен (namespace).

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

Операции ввода-вывода

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

1. Консольный ввод-вывод

Консольный ввод-вывод организуется с помощью стандартных библиотек stdio.h и conio.h, что предполагает наличие директив #include и / или #include в заголовочной части программы. Функция printf используется для вывода информации на экран. Общая форма функции представляется выражением

printf («форматная_строка» [, перем1] [, перем2] [,…]).

Форматная строка в двойных кавычках является обязательным. Остальные параметры, переменные различного типа, указываются по необходимости. Форматная строка может содержать текстовые символы, которые выводятся на экран в том же виде, как они записаны в форматной строке, управляющие символы, в частности символы перевода строки «\n», табуляции «\t», символы форматного преобразования, которые используются для вывода значений переменных, которые начинаются со знака «%».

Вслед за форматной строкой, в функции printf через запятую может быть указан список всех переменных, значения которых выводятся на экран. Символы преобразования для стандартных типов данных ( целое число int − %d , вещественное число float, double − %f , текстовый символ char − %c, текстовая строка char[] − %s).

Консольный ввод реализуется с помощью функции scanf. Форма записи оператора scanf («форматная_строка», &перем1 [, &перем2] [,…]). Аргументы функции scanf аналогичны соответствующим аргументам функции printf, за исключением того, что в качестве дополнительных параметров scanf принимает не имена переменных, а их адреса. В силу этого перед именем каждой переменной в scanf должен стоять знак операции адреса «&» (амперсанд). Введенная информация приводится к соответствующему типу и записывается в переменную.

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

2. Потоковый ввод-вывод

Потоковый ввод-вывод организуется с помощью библиотеки iostream.h, что предполагает наличие директивы #include в заголовочной части программы. В библиотеке определены два потоковых объекта с именами cin и cout.

Эти объекты используются для ввода информации (поток cin) и вывода информации (поток cout).

Общая форма записи этих операций

cin >> переменная;

cout << текстовая строка_или_переменная.

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

Поток cout допускает наличие в выводимой текстовой строке управляющих символов или ESC_последовательностей (`\n`, `\t`, `\b` и др.), действие которых аналогично их действию в операторе printf. Часто используется символ endl (end line) , который приводит к завершению текущей строки и переводу курсора на новую экранную строку. Запись cout << endl, таким образом, приводит к тому же результату, что и конструкция cout << «\n».

Арифметические операции и математические функции

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


название операции

сложение +

вычитание -

умножение *

деление /

остаток от деления.





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

алгебра: запись на С/C++: .

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

Кроме арифметических операций язык C++ дает удобные возможности использования математических функций. Большая их часть содержится в библиотеке math.h, и для пользования ими требуется соответствующая директива #include . Наиболее употребительные математические функции приведены в таблице:

название функции обозначение

синус sin(x)

косинус cos(x)

тангенс tan(x)

квадратный корень sqrt(x)

возведение в степень pow (x, y)

экспонента exp(x)

натуральный логарифм log(x)

модуль fabs(x)

арксинус asin(x)

арккосинус acos(x)

арктангенс atan(x)

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

float x = 2.0; float y = sqrt(x).

В библиотеке math.h также определены некоторые часто используемые математические константы, часть из которых приведена ниже

Необходимо написать программу, запрашивающую у пользователя длины сторон треугольника a, b, c и выводящую на экран углы , , .

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

 // - Расчет углов треугольника -

#pragma hdrstop

#include  // для потокового ввода-вывода

#include  // для getch()

#include  // для acos(x) и M_PI

#pragma argsused

int main (int argc, char* argv[])

{

float a, b, c; // объявляем переменные a, b, c

cout << «input a -»; // выводим на экран приглашение

cin >> a; // вводим значение a, и т.д.

cout << «input b -»;

cin >> b;

cout << «input c -»;

cin >> c;

float alpha, betta, gamma; // объявляем переменные

alpha = acos((b*b + c*c - a*a)/(2*b*c)); // считаем alpha

betta = acos((a*a + c*c - b*b)/(2*a*c)); // считаем betta

gamma = acos((a*a + b*b - c*c)/(2*a*b)); // считаем gamma

cout << «\n alpha =» << alpha/M_PI*180; // выводим все

cout << «\n betta =» << betta/M_PI*180; // углы на экран

cout << «\n gamma =» << gamma/M_PI*180; // (в градусах)

cout << «\n» << alpha + betta + gamma; // сумма углов=pi?

getch(); // задержка

return 0; // завершение

Основные операторы языка С++

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

Ветвление – задает выполнение одного из двух операторов, в зависимости от выполнения какого − либо условия.

Цикл – задает многократное выполнение оператора.

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

Операторы управления работой программы называют управляющими конструкциями программы. К ним относят:

  • составные операторы;

  • операторы выбора;

  • операторы циклов;

  • операторы перехода.

 Оператор «выражение»

Любое выражение, заканчивающееся точкой с запятой, рассматривается как оператор, выполнение которого заключается в вычислении этого выражения. Частным случаем выражения является пустой оператор.

Примеры:

i++;

a+=2;

x=a+b;

 Составные операторы

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

{

n++;                                         это составной оператор

summa+=n;

}

{

int n=0;

n++;                                         это блок

summa+=n;

}

Операторы выбора

Операторы выбора - это условный оператор и переключатель.

1. Условный оператор имеет полную и сокращенную форму.

if (выражение-условие ) оператор;  //сокращенная форма

В качестве выражения-условия могут использоваться арифметическое выражение, отношение и логическое выражение. Если значение выражения-условия отлично от нуля (т. е. истинно), то выполняется оператор. Например:

if (x<y&&x<z)min=x;

if ( выражение-условие ) оператор1;    

//полная форма

else  оператор2;

Если значение выражения-условия отлично от нуля, то выполняется оператор1, при нулевом значении выражения-условия выполняется оператор2. Например:

if (d>=0)

 {

 x1=(-b-sqrt(d))/(2*a);

x2=(-b+sqrt(d))/(2*a);

cout<< “\nx1=”<

}

else cout<<“\nРешения нет”;

  1. Переключатель определяет множественный выбор.

switch (выражение)

 {

case константа1 : оператор1 ;

 case константа2 : оператор2 ;

. . . . . . . . . .

  [default: операторы;]

  }

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

Пример:

#include <iostream.h>

void main()

{


int i;

cout<<"\nEnter the number";

 cin>>i;

 switch(i)

 {

 case 1:cout<<"\n the number is one";

 case 2:cout<<"\n 2*2="<

 case 3: cout<<"\n 3*3="<

 case 4: cout<<"\n "<

 default:cout<<"\n The end of work";

 }

 }

Результаты работы программы:

  1. При вводе 1 будет выведено:

The number is one

2*2=1

3*3=1

  1. При вводе 2 будет выведено:

2*2=4

3*3=4

  1. При вводе 3 будет выведено:

3*3=9

  1. При вводе 4 будет выведено:

4 is very beautiful!

  1. При вводе всех остальных чисел будет выведено:

The end of work

Операторы циклов

Различают:

1)  итерационные циклы;

2)  арифметические циклы.

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

В итерационных циклах известно условие выполнения цикла.

1. Цикл с предусловием:

while (выражение-условие)

оператор;

В качестве <выражения-условия> чаще всего используется отношение или логическое выражение. Если оно истинно, т. е. не равно 0, то тело цикла выполняется до тех пор, пока выражение-условие не станет ложным.

Пример

while (a!=0)

{

cin>>a;

s+=a;

}

2. Цикл с постусловием:

do

оператор

while (выражение-условие);

Тело цикла выполняется до тех пор, пока выражение-условие истинно.

Пример:

do

 {

cin>>a;

s+=a;

 }

 while(a!=0);

3. Цикл с параметром:

for ( выражение_1; выражение-условие; выражение_3)

оператор;

выражение_1 и выражение_3 могут состоять из нескольких выражений, разделенных запятыми. Выражение_1 — задает начальные условия для цикла (инициализация). Выражение-условие>  определяет условие выполнения цикла, если оно не равно 0, цикл выполняется, а затем вычисляется значение  выражения_3. Выражение_3 - задает изменение параметра цикла или других переменных (коррекция). Цикл продолжается до тех пор, пока выражение-условие не станет равно 0. Любое выражение может отсутствовать, но разделяющие их « ; » должны быть обязательно.

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

1)  Уменьшение параметра:

for ( n=10; n>0; n--)

{ оператор};

2)  Изменение шага корректировки:

for ( n=2; n>60; n+=13)

 { оператор };

3)  Возможность проверять условие отличное от условия, которое налагается на число итераций:

for ( num=1;num*num*num<216; num++)

 { оператор };

4)  Коррекция может осуществляться не только с помощью сложения или вычитания:

for ( d=100.0; d<150.0;d*=1.1)

 { <тело цикла>};

 for (x=1;y<=75; y=5*(x++)+10)

 { оператор };

5)  Можно использовать несколько инициализирующих или корректирующих выражений:

for (x=1, y=0; x<10;x++; y+=x);

 Операторы перехода

Операторы перехода выполняют безусловную передачу управления.

    1. break − оператор прерывания цикла.

{

< операторы>

if (<выражение_условие>) break;

<операторы>

}

Т.е. есть оператор break целесообразно использовать, когда условие продолжения итераций надо проверять в середине цикла.

Пример:

// ищет сумму чисел вводимых с клавиатуры до тех пор, пока не будет введено 100 чисел или 0

 for(s=0, i=1; i<100;i++)

 {

 cin>>x;

 if( x==0) break; // если ввели 0, то суммирование заканчивается

 s+=x;

 }

2)  continue − переход к следующей итерации цикла. Он используется, когда тело цикла содержит ветвления.

Пример:

//ищет количество и сумму положительных чисел

 for( k=0,s=0,x=1;x!=0;)

 {

 cin>>x;

 if (x<=0) continue;

 k++;s+=x;

 }

3)  Оператор goto

Оператор goto имеет формат: goto метка;

В теле той же функции должна присутствовать конструкция: метка:оператор;

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

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

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

int k;

 goto m;

. .

 {

 int a=3,b=4;

 k=a+b;

 m: int c=k+1;

 . . .

 }

В этом примере при переходе на метку m не будет выполняться инициализация переменных a , b и k.

4)  Оператор return – оператор возврата из функции. Он всегда завершает выполнение функции и передает управление в точку ее вызова. Вид оператора:

return [выражение];

puts(string).

Графические функции

Turbo C++ имеет отдельную библиотеку с более чем 70 графическими функциями, начиная от функций высокого уровня (таких как setviewport, bar3d и drawpoly) и кончая бит-ориентированными функциями (типа getimage иputimage). Графическая библиотека поддерживает многочисленные стили линий и заполнителей, а также предоставляет различные текстовые шрифты, которые можно изменять по размерам, способу выравнивания, а также ориентировать их либо по горизонтали, либо по вертикали.

Данные функции находятся в библиотечном файле Graphics.lib, а их прототипы ─ в файле заголовка graphics.h. Кроме этих двух файлов в состав графического пакета входят драйверы графических устройств (файлы *.BGI) и символьные шрифты (*.CHR-файлы). Для использования графических функций необходимо выбрать в разделе интегрированной оболочки Options \! Linker \! Graphics Library. В этом случае при создании программ компоновщик автоматически выполнит компоновку графической библиотеки Turbo C++. Для запуска графической системы необходимо прежде всего вызвать функцию initgraph, которая загружает графический драйвер и переводит систему в графический режим. Можно указать в функции initgraph использование конкретного графического драйвера . Если задать в initgraph автодетектирование, то она сама вызовет detectgraph для выбора графического драйвера и режима. Если задать в initgraph использование конкретного графического драйвера и режима, то выполняется автоматический выбор соответствующего аппаратного обеспечения.После окончания работы в графике,надо установить функцию closegraph для того, чтобы закрыть графическую систему.


Стандартные библиотечные функции работы

с графикой C++

1. Анализ графического модуля “graphics.h”

Для инициализации модуля требуется подключить, так называемый, заголовочный файл (#include ). В этом файле описаны все функции, которые требуются для написания программы работающей, с “графикой”.

Анализ функции модуля

Initgraph ( &grdriver, &grmode, “path”); – функция инициализации графического режима, где &grdriver, &grmode, “path” – параметры загружаемого режима;

grdriver и grmode – переменные типа integer;

path” – путь к загружаемому драйверу графического режима.

Функция закрытия графического режима: closegraph(); – данная функция без каких − либо параметров и закрывает текущий графический режим.

Функция определения графического драйвера и видео − режима: detectgraph( &grdriver, &grmode);

getdrivername(); – функция возвращает имя текущего графического драйвера.

getgraphmode(); – функция возвращает текущий графический режим.

Графические функции для рисования фигур

  1. arc ( int x, int y, int stangle, int endangle, int radius) – функция рисует дугу, по заданным координатам x, y, начальным и конечным углом stangle, endangle и заданным радиусом radius.

  2. вar ( int left, int top, int right, int bottom) – функция рисует прямоугольник начиная от левого верхнего угла с координатами left, top до правого нижнего угла с координатами right, bottom.

  3. bar3d ( int left, int top, int right, int bottom, int depth) – функция рисует “трёхмерный прямоугольник” или, так сказать, подобие параллелепипеда, начиная от верхнего левого угла, до правого нижнего угла и с указанием глубины depth.

  4. circle (int x, int y, int radius) – функция рисует окружность с центром в точке с координатами ( x, y) и радиусом radius.

  5. cleardevice() – функция очищает экран в графическом режиме и возвращает текущую позицию указателя в точку с координатами ( 0, 0).

  6. clearviewport() – функция стирает область просмотра и перемещает текущую позицию в точку с координатами ( 0, 0), относительно области просмотра.

  7. drawpoly ( int numpoints, int *polypoints) – функция рисует полигон с количеством вершин numpoints и координатами вершин *polypoints. *polypoints является одномерным массивом.

  8. ellipse ( int x, int y, int stangle, int endangle, int xradius, int yradius) – функция рисует эллипс с координатами в точке ( x, y), начальным и конечным углами stangle, endangle, и радиусами xradius, yradius по осям x и y.

  9. fillpoly ( int numpoints, int *polypoints) – функция рисует и закрашивает заданным цветом полигон.

  10. fillelipse ( int x, int y, int xradius, int yradius) – функция рисует закрашенный эллипс.

  11. floodfill ( int x, int y, int border) – область, ограниченная цветной границей закрашивается установленным образцом и цветом.

  12. getarccoords ( &arcinfo) – функция возвращает координаты последней точки, на которую был переведён указатель, где параметр &arcinfo объявлен как struct arccoordstype arcinfo.

  13. getaspectratio ( &xasp, &yasp) – функция получает значения коэффициента сжатия в &xasp, &yasp, где xasp, yasp являются переменными типа integer.

  14. getbkcolor() – функция возвращает значение типа integer текущего цвета фона.

  15. getcolor() – функция возвращает значение типа integer установленного на данный момент цвета.


  1. getfillsetting ( &fillinfo) – функция получает информацию о текущих настройках стиля и цвета, где параметр &fillinfo объявлен как struct fillsettingstype fillinfo.

  2. getimage ( int left, int top, int right, int bottom, void far *bitmap) – функция сохраняет картинку в специально отведённой области памяти, где left, top, right, bottom координаты картинки, а *bitmap указатель на область памяти.

  3. getlinesettings( &lineinfo) – функция получает текущий тип линии, образец и толщину, где параметр &lineinfo объявлен как struct linesettingstype lineinfo.

  4. getmaxcolor() – функция возвращает значение типа integer, которое соответствует номеру цвета.

  5. getmaxmode() – функция возвращает значение типа integer, которое соответствует максимальному номеру графического режима, для текущего драйвера.

  6. getmaxx() – функция возвращает значение типа integer, которое соответствует максимальному количеству точек по оси x для текущего графического режима.

  7. getmaxy() – функция возвращает значение типа integer, которое соответствует максимальному количеству точек по оси y для текущего графического режима.

  8. getmodename ( int mode_number) – функция возвращает значение типа integer, которое соответствует указанному графическому режиму.

  9. getpixel ( int x, int y) – функция возвращает номер цвета точки, находящейся по координатам ( x, y).

  10. gettextsettings ( &textinfo – функция возвращает текущие настройки фонта для текущего графического режима, где параметр &textinfo определён как struct textsettingstype textinfo.

  11. getx() – функция типа integer возвращает текущую позицию указателя по оси x.

  12. gety() – функция типа integer возвращает текущую позицию указателя по оси y.

  13. grapherrormsg ( int errorcode) – функция возвращает код ошибки в виде переменной errorcode типа intger.

  14. magesize ( int left, int top, int right, int bottom) – функция определяет раiзмер области памяти, необходимый для сохранения двоичного образа.

  15. installuserfont ( char far *name) – функция типа intger возвращает номер идентификатора шрифта, который можно передать функции settextstyle для выбора данного шрифта. Параметр *name это путь к файлу шрифта. Одновременно данной функцией можно подключить до двадцати шрифтов.

  16. line ( int x0, int y0, int x1, int y1) – функция рисует линию от точки с координатами x0, y0 до точки с координатами x1, y1. Не обновляет текущую позицию.

  17. linerel ( int dx, int dy) – функция рисует линию от текущей позиции до точки, находящейся на относительном расстоянии от текущей позиции, затем передвигает текущую позицию.

  18. lineto( int x, int y) – функция рисует линию от те кущей позиции до точки с координатами ( x, y), затем переносит текущую позицию в ( x, y).

  19. moverel ( int dx, int dy) – функция перемещает текущую позицию на относительное растояние.

  20. moveto ( int x, int y) – функция перемещает текущую позицию в точку с координатами ( x, y).

  21. outtext ( char far *textstring) – функция в ыводит строку в графическом режиме. Строка должна заключатся в “”.

  22. outtextxy ( int x, int y, char far *textstring) – функция водит строку в графическом режиме предварительно перейдя в точку с координатами ( x, y).

  23. pieslice ( int x, int y, int stangle, int endangle, int radius) – функция рисует и закрашивает замкнутый сектор круга.

  24. putimage ( int left, int top, void far *bitmap, int op) – функция выводит битовый образ на экран.

  25. putpixel ( int x, int y, int color) –функция рисует точку с координатами ( x, y) и цветом color.

  26. rectangle ( int left, int top, int right, int bottom) – функция рисует прямоугольник от точки с координатами (left, top) до точки с координатами ( right, bottom).

  27. sector (int x, int y, int stangle, int endangle, int xradius, int yradius) – функция рисует сектор круга установленным цветом, затем заполняет его используя образец и цвет, установленные функциями setfillstyle или setfillpattern.

  28. setactivepage ( int page) – функция устанавливает активную страницу для графического вывода.

  29. setaspectratio ( int xasp, int yasp) – функция заменяет заданный по умолчанию аспект сжатия графической системы.

  30. setbkcolor ( int color) – функция устанавливает цвет фона по его номеру заданному переменной color.

  31. setcolor ( int color) – функция устанавливает цвет по его номеру заданному переменной color.

  32. setfillpattern ( char far *upattern, int color) – функция выбирает определённый пользователем образец заливки.

  33. setfillstyle ( int pattern, int color) – функция устанавливает образец и цвет заливки.

  34. setgraphmode( int mode) – функция устанавливает систему в графический режим, определённый параметром mode. Сбрасывает все настройки в положение “по умолчанию”. Очищает экран.

  35. setlinestyle ( int linestyle, unsigned upattern, int thickness) – функция устанавливает стиль рисуемых линий для функций рисования line, lineto, rectangle, drawpoly, etc.

  36. settextjustify ( int horiz, int vert) – функция устанавливает выравнивание текста для графического режима. По умолчанию стоит выравнивание по верхнему левому углу.

  37. settextstyle ( int font, int direction, int charsize) – функция устанавливает характеристики текста: стиль, положение( горизонтальное или вертикальное), размер шрифта.

  38. setusercharsize ( int multx, int divx, int multy, int divy) – функция устанавливает определённый пользователем “коэффициент сжатия” шрифта. По умолчанию ширина шрифта определена как multx:divx, высота как multy:divy.

  39. setviewport ( int left, int top, int right, int bottom, int clip) – функция устанавливает новую область просмотра для графического вывода. Параметр clip определяет отсечены или нет все рисунки текущей области просмотра.

  40. setvisualpage ( int page) – функция устанавливает страницу с номером page визуальной графической страницей.

  41. textheight ( char far *textstring) – функция возвращает высоту строки в количестве точек.

  42. textwidth ( char far *textstring) – функция возвращает ширину строки в количестве точек.

манипуляции с экраном:

cleardevice Очищает экран (активную страницу)

setactivepage Устанавливает активную страницу для

графического вывода

setvisualpage Устанавливает номер визуальной

графической cтраницы

Манипуляции с графическими окнами:

clearviewport Очищает текущее графическое окно.

getviewsettings Возвращает информацию о текущем

графическом окне

setviewport Устанавливает текущее графическое окно


Структуры



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

//фамилия

// возраст

// группа

// стипендия

// номер студента

char name;

int age;

char droup;

float scholarship;

unsigned student__number;

Для формирования структуры вся информация группируется с именем структуры:

struct Student {

char name[64];

int age;

char droup[10];

float scholarship;

unsigned student__number;

};

// фамилия

// возраст

// группа

// стипендия

// номер студента

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

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

struct Student {

char name[64];

int age;

char droup[10];

float scholarship;

unsigned student__number;

};

new_ Student = {"Sidorov", 1960, “Дикт 41-12”, 2000.0, 2642).;

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

Student s; Prepod p;

После объявления можно обращаться к полям s.name и p. name.

Пример программы

«вывод полей структуры new_employee»

#include

struct Employee {

int age;

float salary;

unsigned employee_number;

} new_employee = {"Sidorov", 32, 300.5, 1122};

void main()

cout << new__employee . name << endl <<

new__employee. age « endl «

new_employee.salary << endl <<

new_employee.employee number << endl;

/*

Результаты выполнения программы:

Sidorov

32

300.5

1122

Press any key to continue

*/

Объединение (union)

Объединение − это частный случай структуры, все поля которой располагаются по одному и тому же адресу. Формат описания такой же, как у структуры, только вместо ключевого слова struct используется слово union. Длина объединения равна наибольшей из длин его полей. В каждый момент времени в переменной типа «объединение» хранится только одно значение. Объединения применяют для экономии памяти, когда известно, что больше одного поля одновременно не требуется.

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

Результат обращения не к последнему размещенному в памяти элементу объединения не определен.

Пример.

#include

void main ()

{ /* описание нового типа pt (тип платежа) со значениями "карточка" или "чек" */

епшп pt {CARD, CHECK); pt type; union payment { char card[25];

long check; } info;

type = CARD;

cout « "Input Info.card: ";

cin.getline(info.card, 25) ;

cout « "Input info.check: "; cin » info.check;

switch (type)(

case CARD : cout « info.card « endl; break; case CHECK; cout « info.check « endl; break;

/*

Результаты выполнения программы:

Input info.card :My bank

Input info.check :12345

90

Press any key to continue

*/

Полученное значение - 90 - говорит о том, что результат обращения к элементу объединения не определен.

Код программы 11.69

#include

void main ()

(

enum pt {CARD, CHECK};

pt type;

union payment {

char card[25];

long check; ) info;

type = CARD;

info.check = 12345;

/* В данном случае происходит обращение к тому элементу объединения, который был последним размещен в памяти: */

putsf'Input info, card: "); gets(info.card);

switch (type){

case CARD : puts(info.card); break;


Примеры программ

1. Моя первая прогрмма на языке С++

//#include

#include

main(){

clrscr();

gotoxy(20,12);

//cout<< “Моя первая программ на языке С++”;

printf(“Моя первая программ на языке С++”);

getchar(); return(0);

}


  1. Ввод и вывод коэффициентов

Условие. Выполнить ввод и вывод коэффициентов а, в, с

//#include

#include

main()

{

int a,b,c;

clrscr();

cout<< “Введите коэффициенты a,b,c\n”;

printf(“Введите коэффициенты a,b,c\n”);

//cin>> a,b,c,endl;

scanf(“%d %d %d”,&a,&b,&c);

gotoxy(20,10);

//cout<

printf(“%d %d %d \n”,a,b,c);

getch();

return(0);

}

  1. Программа возведения в степень

Условие.

//программа возведения в степень 2//

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

main()

{

int i;

float m[51];

clrscr();

//cout

printf(“2^0=1\n”);

for (i=1,m[0]=1;i<=50;i++)

{

m[i]=m[i-1]*2;

//cout

printf(“2^%d=%f\n”,i,m[i]);

if ((i%10)==0) getch();

}

getch();

}

  1. Программа с одномерными массивами

Условие. Создать одномерный случайный массив и вывисти произведение четных чисел

#include

#include

#include

#include

#include

#include

int main(void)

{

int gdriver = DETECT, gmode;

int midx, midy, _in_c = 1, _out_c = 1;

float r;

char msg[1];

double x, y, c, m, s, n, sq, sr;

clrscr();

window(10, 10,40 ,40);

textcolor(BLUE);

textbackground(GREEN);

gotoxy(20, 10);

cprintf ("Лабораторная работа по программированию

"); gotoxy(35, 12);

Cprintf (" на тему ");

gotoxy(17, 14);

cprintf(" Массивы ");

gotoxy(21, 16);

cprintf(" Выполнил студент группы ДиКТ-31-12 ");

gotoxy(30, 18);

cprintf(" Васильев Юра :) ");

getch();

label:

s=1;

int a[100];

cout <

cin >> n;

for (int i=1; i

a[i]=-10 + random(20);

if( ( i%2 == 0)){s=s*a[i]; }

}

for (i=1; i

cout <<" " << a[i] ;

}

cout <<" " << endl;

cout << " Произведение четных элементов равно " << s << endl;

cout << " Повторить?(y/n): ";

cin >> msg;

if (msg[0]=='y') {

clrscr();

goto label;

} else {

clrscr();

gotoxy(10,20);

cout<< "Программа будет завершена "<< endl;

gotoxy(10,30);

getch();

closegraph(); }

return 0;}

  1. Программа суммы чисел одномерного массива

Условие. Создать одномерный массив и вычислить сумму чисел.

#include

using std::cout;

using std::endl;

using std::cin;

#include

using std::rand;

using std::srand;

#include

using std::time;

int main()

{

int mass[100]={0};

int n(0);

int sum(0);

cout <<"vvedinte chislo elementov... ";

cin >>n;

srand(time(0));

for(int i=0;i

{

mass[i]=10-rand()%20;

cout <

sum+=mass[i];

}

cout <

cout <<"sum= "<

return 0;

}


  1. Программа использования строковых функций

  2. Условие. Создать прогрмму для демонстраии действий стровых функций

#include

#include

#include

main(){

char i;

char *str1=” “,*str2=” “;

while (1)

{

clrscr();

printf(“Выберите режим\n”);

printf(“1-Длина строки\n”);

printf(“2-Копирование строки\n”);

printf(“3-Соединение строк\n”);

printf(“4-Позиция вхождения подстоки в строку\n”);

printf(“5-Сравнение строк\n”);

printf(“6-Конец работы\n”);

i=getch();

switch(i)

{

case ‘1’: printf(“Введите строку:”);

gets(str1);

printf(“Длина строки:\n%d\n”,strlen(str1));

break;

case ‘2’: printf(“Введите строку:”);

gets(str1);

printf(“Скопирована строка:\n%s\n”,strcpy(str2,str1));

break;

case ‘3’: printf(“Введите строку 1:”);

gets(str1);

printf(“Введите строку 2:”);

gets(str2);

printf(“Обьединенная строка:\n%s\n”,strcat(str1,str2));

break; case ‘4’: printf(“Введите строку:”);

gets(str1);

printf(“Введите подстроку:”);

gets(str2);

printf(“Позиция вхождения подстоки в строку:\n%d\n”,strcspn(str1, str2));

break;

case ‘5’: printf(“Введите строку 1:”);

gets(str1);

printf(“Введите строку 2:”);

gets(str2);

if (stricmp(str1,str2))

printf(“Строки не равны\n”);

else

printf(“Строки равны\n”);

break;

} if (i==’6') break;

getch();

}

}

Блок-схема алгоритма




8. Программа построения графических фигур

#include

#include

#include

main()

{

int Driver,Mode;

Driver=DETECT;

initgraph(&Driver,&Mode,”..”);

setcolor(1);

circle(getmaxx()/2,getmaxy()/2,100);

setcolor(2); line(0,0,getmaxx(),getmaxy());

setcolor(3);

line(getmaxx(),0,0,getmaxy());

setcolor(10);

setfillstyle(7,6);

sector(getmaxx()/2,getmaxy()/2,0,90,150,150);

setcolor(7);

bar3d(50,50,200,200,50,1);

setcolor(4);

arc(getmaxx()/2,getmaxy()/2,180,270,200);

setcolor(5);

setbkcolor(4);

setfillstyle(0,5);

ellipse(500,300,0,360,150,50);

floodfill(500,300,5);

while(!kbhit());

closegraph();

return 0;

}

9. Программа построения заполненного пятиугольника

красным цветом

#include <stdio.h>

#include

#include

main()

{

int Driver,Mode,i;

int poly[10];

Driver=DETECT;

initgraph(&Driver,&Mode,”..”); setcolor(4);

poly[0]=50;poly[1]=150;poly[2]=300;poly[3]=50;

poly[4]=500;poly[5]=150;poly[6]=400;poly[7]=250;

poly[8]=200;poly[9]=250;

for(i=1;i<15;i++)

{

setfillstyle(i,i);

fillpoly(5,poly);

getch();

}

while(!kbhit());

closegraph();

return 0;

}

10. Программа закрашивания фигур

Условие. Составить программу рисования куба, который закрашивается 16-ю цветами

#include

#include

#include

main()

{

int Driver,Mode,i;

Driver=DETECT;

initgraph(&Driver,&Mode,”..”);

setcolor(4);

for(i=1;i<15;i++)

{ setfillstyle(i,i);

bar3d(200,200,350,350,50,i);

getch();

} while(!kbhit());

closegraph();

return 0;

}

11. Программа ввода одномерного массива и нахождения максимального значения

Условие. Ввести одномерный массив и найти максима число массива

#include

#include

#include

#include

char taskinfo[max_lines][max_len] ={«Ввести и вывести мас

сив», «Затем переставить его элементы наоборот»,«»,

«Ввести и вывести двумерный массив,», «затем найти мак

симум», #include

int task()

{

int i, j, n; int* a;

randomize();

cprintfcc («Введие размерность массива n: «, 2, lightgreen);

cin >> n; a = new int[n]; clrscr();

cprintfcc («Массив:\n\r», 12, lightblue);

for (i=0; i

{

a[i] = random(n); cout << setw(3) << a[i];

}

cprintfcc («Массив переставленный\n\r», 15, light-green);

for (i=n-1; i>-1; i—)

{

cout << setw(3) << a[i];

}

getch(); clrscr();

int d = 10;

cprintfcc («Введие размерность массива d < 20: «, 2, light-green ;

cin >> d;

cprintfcc («Введие размерность массива n < 20: «, 4, light-green ;

cin >> n;

cprintfcc («Массив: «, 6, lightblue);

int dm[20][20]; int max = -1;

for (i=0; i

{

for (j=0; j

{

dm[i][j] = random(50);

if (max < dm[i][j]) max = dm[i][j];

gotoxy(10 + j*3, i+8); cout << dm[i][j];

} }

cout << endl << endl << «Максимум в массиве: « << max << endl;

return 0;

}

12. Программа формирования одномерных массивов

Условие. Создать одномерный массив и сформировать массивы из положительных, отрицательных, четных и нечетных чисел

#include

#include

#include

#include

int i,j,m,n;int p,k,q,r;

int a[10][10]; //исходный массив

int b[100]; //отрицат. массив

int c[100]; //положительный массив

int d[100]; //массив четных чисел

int e[100]; //массив нечетных чисел

main()

{

clrscr(); randomize();

cout << «Введите число строк «; //ввод размерности

cin >> n;

for i:=1 to n do

for j:=1 to m do

begin

if a[i,j]<0 then

begin

textcolor(4); p:=p+1;

b[p]:=a[i,j]; gotoxy(4*p,8+m);

write(a[i,j]);

end

else

begin

k:=k+1; c[k]:=a[i,j]; textcolor(1);

gotoxy(4*k,10+m); write(a[i,j]);

end; cout << «Введите число столбцов «;

cin >> m; //форм-е исходного массива

for (i=1; i<=n; i++)

for (j=1; j<=m; j++)

{ a[i][j]=-20+random(40); //генерирование элементов массива

gotoxy(2+i*5,j+5); textcolor(BROWN);

cprintf («%d», a[i][j]); //вывод элементов массива

gotoxy(7,4);

cprintf («Исходный массив»); }

p=k=q=r=0 //начальные условия

textcolor(4);

gotoxy(1,7+m); cprintf («Массив отрицательных чисел»);

textcolor(1);

gotoxy(1,9+m); cprintf («Массив положительных чисел»);

textcolor(GREEN); gotoxy(1,11+m); cprintf («Массив нечетных чисел»);

textcolor(14);

gotoxy(1,13+m); cprintf («Массив четных чисел»);

for (i = 1; i <= n; i++)

for (j=1; j<=m; j++)

{ if (a[i][j] < 0) //поиск отрицат. элементов

{

textcolor(4);

p++;

b[p]=a[i][j]; //запись в одномерный массив

gotoxy(4*p,8+m);

cprintf («%d», a[i][j]); //вывод отриц элементов

}

else

{

k++;

c[k]=a[i][j]; //запись положит. эл-ов

textcolor(1);

gotoxy(4*k,10+m);

cprintf («%d», a[i][j]); //вывод положит. элементов

}

if (a[i][j] % 2 ) //поиск четных элементов

{

q++;

d[q]=a[i][j]; //запись четных элементов в массив

textcolor(GREEN);

gotoxy(4*q,12+m);

cprintf («%d», a[i][j]); //вывод четных элементов

}

else

{

r++;

e[r]=a[i][j]; //запись нечетных элементов в массив

textcolor(14);

gotoxy(4*r,14+m);

cprintf («%d», a[i][j]); //вывод нечетных элементов

} }

getch();

return 0;

}

13. Программа определения локальных минимумов

#include //для printf

#include //для scanf

#include //для malloc

#include //для cout, cin

#include

int main()

{

int i,j,n; //переменные

char key;

int a[10][10]; //ввод массива

do

{

clrscr() ; //очистка экрана

gotoxy(21,2);

printf («Введите размерность массива(<7):»);

scanf(«%d»,&n); //ввод размерности массива

randomize(); gotoxy(8,4); printf(«Исходный массив:»);

for (i=1; i

for (j=1;j

{

textcolor(15); //закраска элементов массива

gotoxy(i*5+7,j+5);

a[i][j]=random(20)-10; //генерируем элементы массива

cout << setw(3) << a[i][j]; //вывод исходного массива

}

getch(); gotoxy(36,4);

cout << «Закрашенный массив:» ;

//======== поиск лок. минимумов и их закраска

int max;

max=-100;

for (j=1;jопределяем max

for (i=1;i

if (max

max=a[i][j]; }

for (j=1;j

for (i=1;i

{

a[i][0]=max; a[n+1][j]=max; a[0][j]=max; a[i][n+1]=max;

}

for (j=1;j

for (i=1;i

{

if ((a[i+1][j]>=a[i][j]) && (a[i+1][j+1]>=a[i][j])&&

(a[i][j+1]>=a[i][j]) && (a[i-1][j+1]>=a[i][j])&&(a[i-

1][j]>=a[i][j]) && (a[i-1][j-1]>=a[i][j]) && (a[i][j-1]>=a[i][j])

&& (a[i+1][j-1]>=a[i][j]))

{

textcolor(14); gotoxy(i*5+39,j+5);

cprintf(«%i», a[i][j]); //вывод закрашенной части массива

}

else

{

textcolor(15); gotoxy(i*5+39,j+5);

cprintf(«%i»,a[i][j]); //вывод незакрашенной части массива }}

getch(); //условие повтора

gotoxy(33,20); printf(“povtorit“(y/n)»);

key = getche();

}

//повторять пока key = “y”

while(key == “y”);

getch();return 0;

}

  1. Программа работы с символьнвми массивами

Условие. Ввести фразу и подсчитать количество слов,

начинающихся с введенной буквы.

#include <string.h>

#include

#include

#include

#include

#include

char Text[100],A[1];

int n,i,s=0,j,t=3;

int main()

{

clrscr();

cout << «‚введите фразу:» ; gets(Text);

cout << «‚введите букву:»; gets(A);

for(i=1;i<=strlen(Text);i++)

{

if ((Text[0]==A[0])&&(i==1)) {

s++;

for(j=0;j<=strlen(Text);j++)

{

if(Text[j]== “ “) {break;}

cout << Text[j];

}

}

if ((Text[i]==A[0])&&(Text[i-1]==’ “)) {s++;

t++;

for(j=i;j<=strlen(Text);j++)

{

if(Text[j]== “ “) {break;}

gotoxy(j-i+1,t);

cout << Text[j];

}

}

}

gotoxy(10,13);

cout << “количество слов с введенной буквы=“ << s;

getch();

return 0;

}

  1. Программа определения минимума чисел в

столбцах и выполение сортировки массива

Условие. Определелить минимум в каждом столбце и выполнить сортировку столбцов по возрастанию минимальных значений

Блок-схема алгоритма




Программа

#include

#include

#include

#include

int a[20][20];

int b[20];

main()

{

int i,j,n;

randomize();

clrscr();

// ввод размерности массива

printf(«Введите n:»);

scanf(«%d»,&n);

// ввод двумерного массива

for (i=0;i

{

for (j=0;j

{

a[i][j]=random(30);

gotoxy(3+j*5,i+4);

printf(«%d»,a[i][j]);

} }

int min;

for (i=0;i

{

min=100;

// определение минимума

for (j=0;j<n;j++)

{

if (a[j][i]

min=a[j][i];

}

// формирование минимума

b[i]=min;

gotoxy(3+i*5,j+5); printf(«%d»,min);

}

getch(); return(0);}



Блок-схема алгоритмаhello_html_m6fc4625b.png


  1. Программа определения максимальных

и минимальных расстояннй

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

Блок-схема алгоритма



#include

#include

#include

#include

#include

#include

#include

int main()

{

int n; // количество точек

int k; // отступ от верхней грани

int i, j; // для цикла

int rMax, rMin; // для записывания MAX и MIN расстояний

int iMax, jMax; // для записывания номеров точек с MAX расстоянием

int iMin, jMin; // для записывания номеров точек с MIN расстоянием

int x[100], y[100]; // для записывания координат точек

int z[100][100]; // для записывания расстояний между точками

int Mx, My;

float xi, xj, yi, yj;

clrscr();

cout << «Введите количество точек: «;

cin >> n;

int gd = DETECT, gm;

initgraph(&gd,&gm,»g:\\tc\\bgi»);

clearviewport(); // очистка экрана

k = 35;

Mx = getmaxx();

My = getmaxy();

// рисование прямоугольной области

setcolor(9);

moveto(0,k);

lineto(Mx,k);

lineto(Mx,My);

lineto(0,My);

lineto(0,k);

randomize();

// цикл генерирования и вывода координат точек

for( i=1; i<=n; i++)

{

x[i] = random(Mx);

y[i] = random(My-k);

putpixel(x[i], k+y[i], 2);

}

// цикл вычисления растояний между точками

for( i=1; i<=n; i++)

for( j=i+1; j<=n; j++)

{

xi = x[i]; xj = x[j];

yi = y[i]; yj = y[j];

z[i][j] = sqrt( (xi - xj)*(xi - xj) + (yi - yj)*(yi - yj) );

}

rMax = 0; // начальное значение MAX расстояния

rMin = 1000; // начальное значение MIN расстояния

setcolor(4);

// цикл нахождения MAX и MIN расстояний

for( i=1; i<=n; i++)

for( j=i+1; j<=n; j++)

{

if ( z[i][j] > rMax )

{ /* если текущее расстояние больше чем MAX,

то MAX заменяется на него

и запоминаются номера соответствующих точек */

rMax = z[i][j];

iMax = i;

jMax = j;

}

if ( z[i][j] < rMin )

{ /* если текущее расстояние меньше чем MIN,

то MIN заменяется на него и запоминаются номера соответствующих точек */

rMin = z[i][j];

iMin = i;

jMin = j;

}

line(x[i], k+y[i], x[j], k+y[j]);

}

/* MAX, MIN расстояния и соответствующие им точки

выделяются другими цветами */

setcolor(2);

line(x[iMax], k + y[iMax], x[jMax], k + y[jMax]);

circle(x[iMax], k + y[iMax],3);

circle(x[jMax], k + y[jMax],3);

setcolor(15);

line(x[iMin], k + y[iMin], x[jMin], k + y[jMin]);

circle(x[iMin], k + y[iMin], 3);

circle(x[jMin], k + y[jMin], 3);

// вывод результатов вычислени

cout << «Максимальное расстояние: « << rMax << endl <<

«Минимальное расстояние: « << rMin;

getch();

closegraph();

return 0;

}


  1. Вычислене площади фигур

методом Монте-Карло

Условие. Вычислить площади фигур ( треугольника, окружности и фигуры между окружностью и треугольником методом Монте-Карло.




(250, 50)





(50, 250) ( 450, 250)







(250, 450)


Блок – схема алгоритма





#include //для count

#include //для getch

#include

#include //для randomize

#include

int main()

{

textcolor(11);

textbackground(1);

clrscr();

randomize();

int Driver,Mode;

int x,y,i;

float trs = 0,okrs = 0;

Driver=DETECT;

initgraph(&Driver,&Mode,"i:\\TC\\BGI\\");

setcolor(4); // прямоугольник

setfillstyle(1,4);

rectangle(100,100,400,400);

setcolor(3); // система координат

line(50,250,450,250);

line(250,50,250,450);

setcolor(5); //треугольник

line(150,320,330,150);

line(330,150,360,305);

line(360,305,150,320);

setcolor(1); //окружность

circle(250,250,140);

int n, trcount = 0;

int okrcount = 0;

cout<<"\n Введите количество точек n: ";

cin >> n;

for (i=1; i<=n; i++)

{

setcolor(2);

x=100+random(300); //точки

y=100+random(300);

putpixel(x,y,2);

//область треугольника

//if ( (18*y+17*x-8310 > 0) && (31*x-6*y-9330 < 0) && (x+14*y-4630 < 0) )

// {

// trcount++;

// putpixel(x,y,5);

// }

// else

// область окружности без треугольника

if ( ( (x-250)*(x-250)+(y-250)*(y-250) ) < 140*140 )

{

okrcount++;

putpixel(x,y,12); //14

}

}

//вывод количества попавших в области точек

//cout << "количество точек в треугольнке - " <

cout <<"количество точек в окружности - "<< okrcount << endl;

float nn;

nn = n;

//вычисление площадей фигур(областей)

trs = (trcount/nn)*300*300;

okrs = (okrcount/nn)*300*300;

//вывод значения площадей

// cout << "площадь треугольника - "<< trs << endl;

cout <<"площадь окружности - "<< okrs << endl;

getch();

closegraph();

return 0;

}

  1. Программа вычисления суммы чисел

в отдельных частей двумерного массива

Условие. Вычислить сумму чисел выше главной диагонали

матрицы двумерного массива

#include <stdlib.h>

#include

#include

#include

int main()

{ {

clrscr(); //system ("cls");

cout<<"Laboratornaya rabota №4"<титульный лист

cout<<"po programmirovaniyu"<

cout<<"na temu:<>"<

cout<<"vipolnil student gruppi DiKT-31-13"<

cout<<"Nikitin Sergey"<

getch(); //system ("pause");

clrscr(); //system ("cls");

}

clrscr(); //system("cls");

int sum=0;

int n;

int k=0;

int t=0;

int a[100][100]={0};

srand(time(0));

cout<<"Vvedite razmernost' matrici=";

cin>>n ;

cout<

for (int i=1; i<=n; i++)

{

for (int j=1; j<=n; j++)

{

a[i][j]=-20+rand()%41;

if ((a[i][j]<0)&&(a[i][j]>-10)) cout<<" "<упорядочить по столбцу

if (a[i][j]<=-10) cout<упорядочить по столбцу

if ((a[i][j]>0)&&(a[i][j]<10)) cout<<" "<упорядочить по столбцу

if (a[i][j]>=10) cout<<" "<упорядочить по столбцу

if (a[i][j]>k) k=a[i][j]; //счетчик наибольшего

if (a[i][j]счетчик наименьшего

if (iсчетчик суммы

}

cout<

}

cout<

cout<<"Naibol'shee znachenie ravno "<

cout<<"Naimen'shee znachenie ravno "<

cout<<"Summa elementov vishe glavnoy diagonali = "<

getch(); //system("pause");

return 0;

}













Блок-схема алгоритма












#include //#include

#include //#include

#include //#include

#include //using namespace std;

int main()

{

{

clrscr(); //system ("cls");

cout<<"Laboratornaya rabota №4"<титульный лист

cout<<"po programmirovaniyu"<

cout<<"na temu:<>"<

cout<<"vipolnil student gruppi DiKT-31-13"<

cout<<"Nikitin Sergey"<

getch(); //system ("pause");

clrscr(); //system ("cls");

}

clrscr(); //system("cls");

int sum=0;

int n;

int k=0;

int t=0;

int a[100][100]={0};

srand(time(0));

cout<<"Vvedite razmernost' matrici=";

cin>>n ;

cout<

for (int i=1; i<=n; i++)

{

for (int j=1; j<=n; j++)

{

a[i][j]=-20+rand()%41;

if ((a[i][j]<0)&&(a[i][j]>-10)) cout<<" "<упорядочить по столбцу

if (a[i][j]<=-10) cout<упорядочить по столбцу

if ((a[i][j]>0)&&(a[i][j]<10)) cout<<" "<упорядочить по столбцу

if (a[i][j]>=10) cout<<" "<упорядочить по столбцу

if (a[i][j]>k) k=a[i][j]; //счетчик наибольшего

if (a[i][j]счетчик наименьшего

if (iсчетчик суммы

}

cout<

}

cout<

cout<<"Naibol'shee znachenie ravno "<

cout<<"Naimen'shee znachenie ravno "<

cout<<"Summa elementov vishe glavnoy diagonali = "<

getch(); //system("pause");

return 0;

}


  1. Программ преобразовния матриц

Условие. Преобразовать прямоугольную матицу в спиральную

#include

#include

#include

#include

#include

int main()

{

setlocale(LC_ALL,"Russian");

//титульный лист

clrscr();

cout<<"Лабораторная работа"<

cout<<"по программированию"<

cout<<"на тему:<<Преобразование матрицы в спиралевидную матрицу>>"<

cout<<"Выполнил студент группы ДиКТ-31-13"<

cout<<"Никитин Сергей"<

getch();

clrscr();

//начало исходной матрицы

cout<<"Исходная матрица"<

int a[100][100];

int b[100][100];

int k=0;

for (int i=1; i<=4; i++)

{

for (int j=1; j<=4; j++)

{

k=k+1;

a[i][j]=k;

//упорядочить матрицу по столбцу по правому краю

if ((a[i][j]>=0)&&(a[i][j]<10)) cout<<" "<

if (a[i][j]>=10) cout<

//новая матрица

if (i%2!=0) // Если i нечетная, то в нечетный столбец запиывается элемент нечетной строки в обратном порядке.

{

int m;

m=m-j;

b[m][i]=a[i][j];

}

else b[j][i]=a[i][j]; //Если i четная, то в четный столбец запиывается элемент четной строки.

}

cout<

}

cout<

cout<<"Спиралевидная матрица"<

for (int t=1; t<=4; t++)

{

for(int l=1; l<=4; l++)

{

//упорядочить матрицу по столбцу по правому краю

if ((b[t][l]>=0)&&(b[