16841

Подготовка и решение задач на компьютере Этапы полготовки и решения задач на компьютере

Лекция

Информатика, кибернетика и программирование

Лекция 1. Подготовка и решение задач на компьютере Этапы полготовки и решения задач на компьютере Подготовка и решение задач на компьютере имеет следующие этапы: постановка задачи и разработка технического задания; разработка: а информационной мо

Русский

2013-06-26

428.5 KB

21 чел.

Лекция 1.

Подготовка и решение задач на компьютере

Этапы полготовки и решения задач на компьютере

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

  1.  постановка задачи и разработка технического задания;
  2.  разработка:

а) информационной модели решения задачи;

б) математической модели решения задачи;

в) алгоритма для решения задачи;

г) программы для решения задачи на компьютере;

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

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

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

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

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

Для решения задачи на компьютере надо разработать программу.

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

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

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

Разработка программы включает:

  1.  подготовку тестовых исходных данных;
  2.  написание текста программы на алгоритмическом языке;
  3.  перенос программ и данных на машинные носители компьютера;
  4.  отладку и тестирование программы.

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

Из опыта разработки программных систем определено, что число ошибок программирования (в тексте программы) составляет около 7% от всего числа ошибок во время разработки. "Тяжесть" их исправления оценивается в 1%. Относительное число ошибок, внесенных за счет неточностей постановки задачи и неправильного построения алгоритма, составляет около 83%, а "тяжесть" их устранения - 95%.

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

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

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

Алгоритм. Основные свойства. Способы представления алгоритмов

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

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

Слово "алгоритм" произошло от имени средневекового узбекского математика IX в. Абу Джафара Мохамеда ибн Мусы аль-Хорезми. Он разработал правила выполнения четырех арифметических действий в десятичной системе счисления.

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

Пример алгоритма числовой обработки данных: вычислить значение Y = X2 + 1. Последовательность действий для выполнения алгоритма:

  1.  ввести в компьютер значение X;
  2.  возвести его в квадрат и получить значение X2;
  3.  вычислить значение X2 +  1 и присвоить его переменной Y;
  4.  вывести, например на экран, полученное значение Y.

Алгоритм обладает тремя основными свойствами: детерминированности, массовости и результативности.

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

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

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

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

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

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

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

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

Конфигурация элементов схем определена ГОСТом 19.701-90 "Схемы алгоритмов, программ, данных и систем". Основные элементы схем даны на рис. 1.

Программное обеспечение компьютера

Основные понятия. Развитие программного обеспечения

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

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

Так как программирование в кодах было сложно и занимало много времени, разработали языки высокого уровня и программы-трансляторы для перевода текстов с алгоритмического языка на машинный. Вначале появились машинноориентированные языки: ассемблер, автокоды. Затем процедурно-ориентированные (Фортран, Алгол, ПЛ-1, Паскаль и др.).

Усложнился процесс выполнения программ и работа оператора компьютера. Для ее упрощения были разработаны программы, частично заменяющие труд оператора компьютера. Их назвали мониторами (диспетчерами, супервизорами). Постепенно эти программы развились в современные операционные системы (ОС). Бурное развитие ОС началось с появлением компьютеров третьего поколения и ПК.

Рис.1

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

Типы программного обеспечения

Программы можно разделить на 3 типа: прикладные программы, системные программы, инструментальные системы.

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

Количество разновидностей системных программ велико. Например: ОС, Norton Commander, PCTools. Основная системная программа - это ОС.

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

Основные функции ОС:

  1.  управление всеми ресурсами ВС, в том числе устройствами компьютера;
  2.  обеспечение взаимодействия программ со всеми устройствами;
  3.  управление работой компьютера на основе командного языка ОС.

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

Системы программирования. Качество программ

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

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

Средства системы программирования определяют технологию программирования (programming technology, software engineering) - этапы, методы, способы и приемы разработки программы. Показателем эффективности технологии программирования является уровень повышения производительности труда программиста. Основные этапы разработки программы в интегрированной среде: написание текста исходных данных и программы с помощью встроенного текстового редактора, трансляция программы, редактирование связей программы с подпрограммами, выполнение программы, анализ полученных результатов. Схематично процесс обработки программы в компьютере представлен на рис.2.

Рис. 2

Схема процесса обработки программ в компьютере

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

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

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

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

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

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

Эффективным средством уменьшения затрат на разработку ПО является использование современных языков программирования.

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

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

Рис. 3

Схема классификации языков программирования

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

Машинный язык - это система команд компьютера. Программы, написанные на машинном языке, не требуют компиляции. Пример фрагмента программы на машинном языке:

012700 000003 012701 и т. д.

Машинно-ориентированные языки - это мнемокоды, автокоды, языки ассемблера. В них коды операции и адреса операндов представляются идентификаторами и числами. Например:

СТАРТ

ЗАГР 1, А

СЛОЖ 1, В

УМН 1, Сит. д.

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

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

Процедурно-ориентированные языки - это машинно-независимые языки для описания алгоритмов решения задачи. С их помощью описывается процесс обработки данных в терминах языка. Тексты на этих языках определяют как реализуется алгоритм обработки данных в виде процедур обработки данных. Примеры процедурно-ориентированных языков: Фортран, Алгол-60, ПЛ-1, Кобол, Паскаль, Си. Их достоинства: высокая производительность труда программистов и возможность переноса программы с одного компьютера на другой (в случае наличия транслятора с этого языка). Недостаток - сложность языков.

Фортран (FORmula TRANslation language) - это первый язык программирования высокого уровня с элементами машинно-ориентированного языка. Разработан сотрудниками фирмы IBM в 1954 г. В 1957 г. разработан первый транслятор с Фортрана. Фортран имеет обширную библиотеку научных подпрограмм. Язык предназначен для решения численных задач.

Алгол-60 создан в 1960 г. Он также предназначен для решения численных задач. В середине 60-х гг. фирмой IBM разработан универсальный язык ПЛ-1. В 1971 г. Н. Виртом разработан и опубликован язык Паскаль, широко используемый в настоящее время.

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

Контрольные вопросы

  1.  Назовите основные этапы подготовки и решения задач на ПК.
  2.  Что такое алгоритм? Назовите и поясните его основные свойства.
  3.  Назовите способы представления алгоритмов.
  4.  Назовите типы программного обеспечения и их назначение.
  5.  Что такое система программирования?
  6.  Что такое транслятор? Назовите типы трансляторов. Чем они отличаются?
  7.  Назовите основные характеристики качества программ.
  8.  Назовите типы языков программирования.


 

А также другие работы, которые могут Вас заинтересовать

45043. Цивільна оборона. Методичні вказівки 331.5 KB
  Прогнозування і оцінка обстановки у разі вибуху газоповітряної суміші Варіант №0. Прогнозування обстановки під час вибуху газоповітряної суміші. Література16 Мета контрольної роботи – поглибити і закріпити теоретичні знання з оцінки і захисту робітників і службовців у разі вибуху газоповітряної суміші на підприємстві набути навичок практичного використання знань. Завдання контрольної роботи – виконання рохрахунковопояснювальної записки з оцінки обстановки на підприємстві у разі вибуху...
45044. Решение задачи линейного программирования графическим методом 451 KB
  Порядок выполнения: Составить математическую модель задачи. Проверить ограничение задачи. При Или Границы области допустимых решений Пересечением полуплоскостей будет являться область координаты точек которого удовлетворяют условию неравенствам системы ограничений задачи.
45045. ОТРАСЛИ ЭКОНОМИКИ 428 KB
  Таким образом экономика предприятия – это наука о правилах хозяйствования на предприятии. Изучая данную дисциплину студент должен знать основы экономики предприятия как основного объекта рыночной экономики организационные и производственные основы функционирования предприятия в условиях рынка. Уметь построить организационную и производственную структуру предприятия.
45046. MD5 (message digest algorithm) 81.5 KB
  Обробка одного 512 бітового блока Кожний раунд приймає на вхід 512 бітовий блок Yq та 128 бітове значення буферу BCD. Елементарна операція Кожний раунд в обробці одного 512 бітового блока складається із послідовності 16 кроків кожен з яких є наступною операцією над BCD буфером: = b gb c d X[k] T[i] s де s є операцією циклічного зсуву вліво на s біт X[k] = M[q 16 k] – kте 32 бітове слово в qому 512 бітовому блоці вхідного повідомлення. При надходження бітів до 2 3 та 4 раундів використовуються наступні перестановки:...
45047. Методические указания к комплексному семантическому анализу лексемы 129.5 KB
  Лексический материал для анализа по выбору студентов согласованному с преподавателем заря ночь звезда солнце танго береза дуб колокольчик роза весна февраль весна сокол демон чародей колдун плаха серебро товарищ жандарм невеста казак цыганка девушка деваха скрипка монах инок парус ветрило дама женщина француз терем дом воск кровь бабочка веретено дождь ветер лебедь сумерки рябина роза чертополох май лето лиса волк ворон черт дьявол свинец золото омут родник огонь море...
45048. ІЧ- ТА ПМР-СПЕКТРОСКОПІЯ В АНАЛІЗІ НОВОСИНТЕЗОВАНИХ L-ЦИСТЕЇНУ 160 KB
  Метою даної роботи є: ідентифікація, встановлення фізико – хімічних властивостей речовин, які були синтезовані в лабораторії біотехнології ФАР Запорізького Національного Університету, за допомогою ІЧ-, Фур’є – спектроскопії, спектроскопії ядерного магнітного резонансу, тонкошарової хроматографії, хромато – мас – спектрометрії; навчитися працювати та розшифровувати спектри даних методів
45049. Ландшафтное проектирование. История. Семантика садов 4.84 MB
  Дизайн является проектной деятельностью и связан с культурой нового типа – проектной культурой., объединившей научно-техническую и гуманитарную культуры на качественно ином уровне, когда определяющей чертой современного мышления стала проектность, связанная с творческой деятельностью человека и соответствующая новому положению человека в мире...
45050. Электрические сети 3.43 MB
  Электрические сети. Номинальное напряжение сети соответствует номинальному напряжению электроприемников подключенных к этой сети. Сети напряжением ниже 1000В называют сетями низкого напряжения НН.