Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика - Борисов

.pdf
Скачиваний:
250
Добавлен:
02.03.2016
Размер:
19.63 Mб
Скачать

2. Информация, еевидыисвойства, кодирование информации

Задание 2.2. Кодирование информации

Выполните следующие пункты задания.

1.Зашифруйте текст десятичными числами, используя таблицу ASCII-кодов (см. Табл. 2.2): а. Математика; б. Информатика; в. Университет; г. Программа.

2.Зашифруйте данный текст шестнадцатеричными числами, используя таблицу ASCII-кодов: а. Математика; б. Информатика; в. Университет; г. Программа.

3.Дешифруйте текст, используя таблицу ASCII-кодов: а. 4D 4F 44 45 4D; б. 42 69 6E 61 72 79; в. 50 72 6F 67 72 61 6D; г. 8A AE AC AF EC EE E2 A5 E0.

4.Дешифруйте текст, используя таблицу ASCII-кодов: а. 162 165 170 128 175 165 164 168 239; б. 225 226 227 164 165 226; в. 148 136 139 142 145 142 148 136 159; г. 174 161 233 165 166 168 266 168 165.

5.Зашифруйте слово «байт» двоичными числами, используя таблицуASCII-кодов.

6.Зашифруйте слово «хакер» двоичными числами, используя таблицуASCII-кодов.

21

Раздел II. Алгоритмизацияимоделирование

РАЗДЕЛ II. АЛГОРИТМИЗАЦИЯ И МОДЕЛИРОВАНИЕ

3. ИНФОРМАЦИОННОЕ МОДЕЛИРОВАНИЕ, ПОНЯТИЕ «АЛГОРИТМ»

Вопросы:

3.1.Моделирование, понятие модели.

3.2.Понятие «алгоритм».

3.3.Требования к алгоритму.

3.1.Моделирование, понятие модели

В1870 г. английское Адмиралтейство спустило на воду новый броненосец «Кэптен». Корабль вышел в море и перевернулся. Погиб корабль. Погибли 523 человека. Это было совершенно неожиданно для всех. Для всех, кроме одного человека. Им был английский уче- ный-кораблестроитель В. Рид, который предварительно провел ис- следования на модели броненосца и установил, что корабль опроки- нется даже при небольшом волнении. Но ученому, проделывающему какие-то несерьезные опыты с «игрушкой», не поверили лорды из Адмиралтейства. И случилось непоправимое...

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

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

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

22

3. Информационное моделирование, понятие «алгоритм»

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

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

Человек применяет модели с незапамятных времен при изучении сложных явлений, процессов, конструировании новых сооружений. Хорошо построенная модель, как правило, доступнее для исследова- ния, нежели реальный объект. Более того, некоторые объекты вооб- ще не могут быть изучены непосредственным образом: недопусти- мы, например, эксперименты с экономикой страны в познаватель- ных целях; принципиально неосуществимы эксперименты с про- шлым или, скажем, с планетами Солнечной системы и т.п.

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

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

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

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

3.2.Понятие «алгоритм»

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

23

Раздел II. Алгоритмизацияимоделирование

ной между математикой и информатикой и примыкает к математи- ческой логике.

Само слово «алгоритм» происходит от algorithmi латинской формы написания имени великого математика IX в. аль-Хорезми, который сформулировал правила выполнения арифметических дей- ствий. Первоначально под алгоритмами понимали только правила выполнения четырех арифметических действий над многозначными числами.

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

вается системой команд исполнителя.

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

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

Алгоритм, составленный для некоторого исполнителя, можно представить различными способами (с помощью графического или словесного описания, в виде таблицы, последовательностью фор- мул), записанными на алгоритмическом языке (языке программиро- вания). Графическое описание алгоритма называется блок-схемой. Этот способ характеризуется наглядностью, обеспечивающей высо- кую «читаемость» алгоритма и явное отображение переходов в нем.

24

3. Информационное моделирование, понятие «алгоритм»

Блок-схемой называется ориентированный «граф», указывающий порядок исполнения компонентов алгоритма. В соответствии с кон- цепцией структурного программирования (объектно-ориентиро- ванного программирования) компонентами алгоритма могут быть:

операторввода-вывода:

;

операторы-функции:

;

операторветвленияif – else:

;

операторцикла for:

;

25

Раздел II. Алгоритмизацияимоделирование

операторцикла while:

;

операторцикла do – while:

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

3.3. Требования к алгоритму

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

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

26

3. Информационное моделирование, понятие «алгоритм»

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

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

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

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

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

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

27

Раздел II. Алгоритмизацияимоделирование

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

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

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

мов, называют вспомогательными.

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

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

Задание 3.1. Функционально-логическая схема алгоритма решения квадратного уравнения

Решение квадратного уравнения ax2 +bx +c = 0 в общем виде получается по формулам:

если дискриминант D = b2 4ac меньше 0, решений нет;

если D = 0

, корни равны x

= x

 

= b ;

 

 

 

 

1

 

2

2a

 

 

 

 

 

 

 

 

 

 

 

если D > 0

, корни различны, x

= b +

D и x

2

= b D .

 

 

1

2a

 

2a

 

 

 

 

 

 

 

Алгоритм решения должен включать операции:

ввод исходных значений коэффициентов a, b и c;

определение дискриминанта D;

28

3.Информационное моделирование, понятие «алгоритм»

проверка условия D < 0 , если ИСТИНА, то вывод сообщения об отсутствии решения в действительных числах и выход из алгорит- ма, ИНАЧЕ переход к следующему шагу;

проверка условия D = 0 , если ИСТИНА, то вычисление кор-

ней

x = x

2

= b

, ИНАЧЕ вычисление корней

x = b + D

и

 

1

 

2a

 

1

2a

 

 

 

 

 

 

 

 

x2 =

b

D ;

 

 

 

 

 

2a

 

 

 

 

 

 

 

вывод значений пользователю и выход из алгоритма.

Для построения блок-схемы выполните следующие действия.

1. Запустите на выполнение программу графического построения блок-схем алгоритмов (из папки …/Algorithm/algorithm.exe). Появится окно

2.Выберите в выпадающем списке язык программирования С/С++.

3.Первый шаг алгоритма связан с вводом коэффициентов a, b

иc. Поэтому следует выделить с помощью мышки в левой части про- граммы в поле Tools элемент Input/output и затем «разместить» его по месту возникшей точки между элементами, обозначающими начало и конецалгоритмаBEGIN-END.

29

Раздел II. Алгоритмизацияимоделирование

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

30