Мегаобучалка Главная | О нас | Обратная связь


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



2019-12-29 213 Обсуждений (0)
Тульский государственный университет 0.00 из 5.00 0 оценок




Федеральное агентство по образованию

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

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

 

Кафедра прикладной математики и информатики

 

ИНФОРМАТИКА

 

Конспект лекций для студентов

 

Направления: 010500 - Прикладная математика и информатика

специальности: 010501 - Прикладная математика

 

 

очной формы обучения

 

 

Тула 2005


Разработал М.Б.Кривоногов, канд. техн. наук, доцент.

            


 

Лекция 1

Введение

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

Понятие информации определяется как “знания получаемые в процессе чтения, наблюдения, изучения…”. В кибернетике понятие информация определяется как “новые знания об объекте управления, позволяющие вырабатывать управленческие решения, как мера устранения неопределенности в управленческой системе, как упорядоченное отражение действительности”. Применительно к вычислительным наукам понятие информация определяется как “сведения, представленные в символьной форме”.

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

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

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

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

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

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

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

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

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

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

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


Лекция 2

 Понятие алгоритма

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

Примером алгоритма может служить правило нахождения наибольшего общего делителя двух чисел (алгоритм Евклида). Даны два целых положительных числа m и n. Требуется найти их наибольший общий делитель, то есть наибольшее положительное целое число, которое нацело делит как m, так и n.

1 шаг (нахождение остатка). Разделим m на n. Пусть остаток равен r. Имеем 0 £ r < n.

2 шаг (это нуль?). Если r = 0, то алгоритм заканчивается; n – искомое число.

3 шаг (замена). Положите m n, n r и возвращайтесь к шагу 1.

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

 Теория алгоритмов

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

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

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

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

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

 Алгоритмический процесс

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

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

 Алгоритмический язык

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

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

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

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

Лекция 3

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

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

Каждый язык программирования посредством своего синтаксиса и семантики определяет некоторый присущий ему процессор (преобразователь), реальный или мыслимый, которым этот язык, в свою очередь, определяется однозначно. Таким образом, программа на данном языке программирования определяет порядок и вид действий, которые должен выполнить соответствующий данному языку процессор при ее реализации. На практике такой процессор состоит из “языкового процессора” и ЭВМ.

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

Интерпретатор - это программа, которая допускает в качестве входа исходную программу, записанную на языке программирования называемом исходным языком, и производит пооператорное (покомандное) ее выполнение и соответствующие вычисления, пред­писываемые этой программой.

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

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

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

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

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

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

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

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

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

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

КОБОЛ допускает эффективное описание алгоритмов, оперирующих с данными сложной иерархической структуры. Основным понятием в КОБОЛЕ является понятие записи как единицы информации, состоящей в общем случае из структуры данных, включающей числовые (номер, цена, количество и т.д.), нечисловые данные (фамилия, название объекта, шифр и т.п.) и массивы (файлы) записей - упорядоченного их ряда. За­писью может быть строка ведомости, наряд на отгрузку и др. Над этими данными могут выполняться сравнительно про­стые операции, такие как поиск (адресный и ассоциативный по совокупности определенных признаков), пересылка, сорти­ровка, редактирование и др.

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

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

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

В связи с этим перед языками программирования, вы­двигается новая цель - упростить программирование, быть может, даже за счет известной потери эффективности исполь­зования ЭВМ. Задача оптимизации тем самым отделяется от задачи составления работающей программы. Для реализации обширных средств, представляемых новыми объектно-ориентированными языками, первостепенное значение приобретает задача автоматизации процесса проектирова­ния программ и создания соответствующих систем автоматического программирования, а также проблема построения автомати­зированных систем обучения языкам пользователей ЭВМ. Такие системы получили название интегрированной среды разработчика приложений. Наиболее известны такие из них как BORLAND C++, BORLAND DELFI, BORLAND C++ BUILDER, MICROSOFT VISUAL C++, MICROSOFT VISUAL BASIC и другие. Каждая из этих систем включает в себя редактор исходных текстов программ, компилятор, компоновщик, отладчик, библиотеки классов и функций, справочную систему помощи и другие элементы.

Лекция 4

Понятие программы и процедуры

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

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

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

Рекурсивная процедура - процедура в программировании, в описании которой содержится явное обращение к ней самой непосредственно или с помощью другой процеду­ры. Использование рекурсивной процедуры во многих случа­ях позволяет придавать алгоритмам компактную и наглядную форму. Рекурсивные процедуры, в частности, используются для описания алгоритмов вычисления значений функций, за­даваемых рекуррентными соотношениями, например, вычисление факториала n!=F(n); F(n)=n×F(n-1); F(0)=1.

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

 Основные типы алгоритмов

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

Рассмотрим пять типовых алгоритмов:

1) СЛЕДОВАНИЕ – это алгоритм, в котором действия (операторы) следуют (выполняются) одно за другим: P1, P2 и т.д.

2) ЕСЛИ-ТО-ИНАЧЕ – это алгоритм, в котором задано некоторое условие. Если это условие выполняется (то есть оно истинно), то выполняется оператор P1. Если это условие не выполняется (то есть оно ложно), то выполняется оператор P2. Допускается укороченный вариант этого типового алгоритма. ЕСЛИ-ТО – это алгоритм, в котором при выполнении условия выполняется оператор P1, а при невыполнении условия управление просто передается на следующий за данным блок (в данном случае типовой алгоритм ЕСЛИ-ТО не производит никаких действий).

 

3) ДЕЛАТЬ-ПОКА – это алгоритм, в котором оператор P (или группа операторов) выполняется многократно, пока выполняется условие и управление передается на следующий за данным блок, в случае если условие не выполняется. В данном алгоритме возможен случай, когда оператор P не выполняется ни одного раза. В этом случае условие сразу ложно.

 

4) ДЕЛАТЬ-ПОКА-НЕ – это алгоритм, в котором оператор P выполняется всегда хотя бы один раз, а затем, пока выполняется условие, выполнение оператора P повторяется. Как только условие станет ложным, повтор выполнения оператора P прекращается и управление передается на следующий блок.

5) ВЫБОР – это алгоритм, в котором в зависимости от значения некоторой наперед определенной переменной (величины) M выбирается один из операторов P1,P2,…,PN и после его выполнения управление передается на следующий по порядку блок.

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

 Способы описания алгоритмов

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

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

Лекция 5

Этапы решения задач на ЭВМ

Решение задач на ЭВМ представляет сложный процесс, кото­рый состоит из ряда этапов:

1. Математическая формулировка задачи;

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

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

4. Описание алгоритма решения задачи на языке конкретной машины или на языке программирования в виде программы,

5. Отладка программы;

6. Решение задачи на ЭВМ.

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

ПРИМЕР. Определить высоту треугольника X по заданной площади C, если известно, что основание больше высоты на ве­личину B.

Известно, что площадь треугольника равна половине про­изведения основания на высоту, то есть:

C= X×(X+B)/2.

Отсюда X определяется как корень уравнения:

X2 + B×X- 2×C = 0.

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

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

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

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

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

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

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

 

 

Далее логическая схема описывается в виде программы на языке, который понимает машина (язык машинных команд), или на языке программирования, который машина понимает после того, как с помощью специальной программы - транслятора, исходная программа будет переведена на язык машины. Такими языками програм­мирования являются АЛГОЛ, КОБОЛ, ФОРТРАН, ПЛ/1, Си, Паскаль и другие.

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

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


Лекция 6

 Принцип действия ЭВМ

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

 

Наименование

Участвующие числа (операнды)

результат
Действия 1 2  
Умножение A X P1=AX
Умножение P1 X P2=AX2
Сложение P2 B Y=AX2+B

 

В таблице через P1 и P2 обозначены числа, равные результа­ту соответствующих действий, а через Y - число, равное зна­чению искомой функции.

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

 



Формат КОП Адрес1 Адрес2 Адрес3
Двоичный код
2019-12-29 213 Обсуждений (0)
Тульский государственный университет 0.00 из 5.00 0 оценок









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

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (213)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.017 сек.)