Информатика - Борисов
.pdf2. Информация, еевидыисвойства, кодирование информации
Задание 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