Тульский государственный университет
12 Федеральное агентство по образованию Государственное образовательное учреждение Тульский государственный университет
Кафедра прикладной математики и информатики
ИНФОРМАТИКА
Конспект лекций для студентов
Направления: 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 сводится к выполнению действий умножения и сложения в следующем порядке:
В таблице через P1 и P2 обозначены числа, равные результату соответствующих действий, а через Y - число, равное значению искомой функции. Информация о том, какие именно действия должна выполнять ЭВМ в настоящий момент, над какими операндами и куда следует поместить результат, задается с помощью команд. Команду для ЭВМ можно представить в общем виде следующим образом:
12
Популярное: Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (213)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы (0.017 сек.) |