Скачать презентацию Этапы решения задачи на ЭВМ Этапы решения Скачать презентацию Этапы решения задачи на ЭВМ Этапы решения

Алгоритмизация (информатика).ppt

  • Количество слайдов: 28

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

Этапы решения задачи на ЭВМ 1. Постановка задачи: • сбор информации о задаче; • Этапы решения задачи на ЭВМ 1. Постановка задачи: • сбор информации о задаче; • формулировка условия задачи; • определение конечных целей решения задачи; • определение формы выдачи результатов; • описание данных (их типов, диапазонов величин, структуры и т. п. ). 2. Анализ и исследование задачи, модели: • анализ существующих аналогов; • анализ технических и программных средств; • разработка математической модели; • разработка структур данных. 3. Разработка алгоритма: • выбор метода проектирования алгоритма; • выбор формы записи алгоритма (блок-схемы, псевдокод и др. ); • выбор тестов и метода тестирования; • проектирование алгоритма. 4. Программирование: • выбор языка программирования; • уточнение способов организации данных; • запись алгоритма на выбранном языке программирования. 5. Тестирование и отладка: • синтаксическая отладка; • отладка семантики и логической структуры; • тестовые расчеты и анализ результатов тестирования; • совершенствование программы. 6. Анализ результатов решения задачи и уточнение в случае необходимости математической модели с повторным выполнением этапов 2 -5. 7. Сопровождение программы

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

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

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

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

Способы записи алгоритмов 1. Словесный Например, приготовление любого блюда в кулинарной книге записано именно Способы записи алгоритмов 1. Словесный Например, приготовление любого блюда в кулинарной книге записано именно этим способом. 2. Блок-схема Это способ записи алгоритмов при помощи специальных символов. Обозначения блок-схемы – действия (команды); – условие; – начало/конец; – ввод/вывод данных; Предопределённый процесс- выполнение процесса, состоящего из одной или нескольких операций, который определен в другом месте программы (в подпрограмме, модуле). Внутри символа записывается название процесса и передаваемые в него данные. Например, в программировании − вызов процедуры или функции

Способы записи алгоритмов Обозначения блок-схемы Граница цикла - начало и конец цикла − операции, Способы записи алгоритмов Обозначения блок-схемы Граница цикла - начало и конец цикла − операции, выполняемые внутри цикла, размещаются между ними. Условия цикла и приращения записываются внутри символа начала или конца цикла − в зависимости от типа организации цикла Соединитель отображает вход в часть схемы и выход из другой части этой схемы. Используется для обрыва линии и продолжения её в другом месте (для избежания излишних пересечений или слишком длинных линий, а также, если схема состоит из нескольких страниц) Комментарий Используется для более подробного описания шага, процесса или группы процессов. Описание помещается со стороны квадратной скобки и охватывается ей по всей высоте. Пунктирная линия идет к описываемому элементу, либо группе элементов (при этом группа выделяется замкнутой пунктирной линией) 3. Программа, написанная на языке программирования Языков программирования существует очень много. Однако все их объединяют общие принципы. Отличаются они только синтаксисом, то есть названием тех или иных команд и способом их записи.

Виды алгоритмов: 1. Линейный В линейном алгоритме действия (команды) следуют подряд друг за другом. Виды алгоритмов: 1. Линейный В линейном алгоритме действия (команды) следуют подряд друг за другом. действие ……. действие 2. Разветвляющийся Это алгоритм, в котором есть условие. Выделяют два типа разветвляющихся алгоритмов. а) б) Да действия условие Нет Да действия 1 условие Нет действия 2 В качестве примера можно привести следующий. Я лежу на диване. За окном идёт дождь. а) Если дождь прекратиться, то я пойду гулять. Здесь никаких действий в случае невыполнения условия не происходит! б) Если дождь прекратиться, то я пойду гулять, иначе – буду смотреть телевизор.

3. Циклический Это алгоритм, в котором есть повторяющиеся действия. Во многих языках программирования есть 3. Циклический Это алгоритм, в котором есть повторяющиеся действия. Во многих языках программирования есть три циклические конструкции (оператора): а) цикл с предусловием условие б) цикл с постусловием Нет в) цикл с параметром параметр действия (тело цикла) Нет Да Да действия (тело цикла) условие Нет Да действия (тело цикла) Отметим различия между первыми двумя типами циклических алгоритмов: 1) У цикла а) условие находится в начале, у б) – в конце; 2) У цикла а) условие продолжения выполнения цикла должно быть истинно, у цикла б) – ложно; 3) Тело цикла а) может ни разу не выполниться (если условие сразу окажется ложным), тело цикла б) выполнится обязательно по крайней мере один раз;

Пример 1. Постановка задачи Решите уравнение: ax = b, где a и b – Пример 1. Постановка задачи Решите уравнение: ax = b, где a и b – любые числа. 2. Анализ и исследование задачи 1) Если a = 0, b ≠ 0, то решений нет. 2) Если a = 0, b = 0, то x – любое число. 3) Если a ≠ 0, b ≠ 0, то .

3. Разработка алгоритма. Составим алгоритм в виде блок-схемы. Начало ввод a и b нет 3. Разработка алгоритма. Составим алгоритм в виде блок-схемы. Начало ввод a и b нет a=0 нет вывод x решений нет Конец да b=0 да x – любое число

4. Программирование Программа на языке Pascal Var a, b, x: Real; BEGIN Writeln('Vvedite a'); 4. Программирование Программа на языке Pascal Var a, b, x: Real; BEGIN Writeln('Vvedite a'); Readln(a); Writeln('Vvedite b'); Readln(b); If a=0 then If b=0 then Writeln('x - luboe chislo') else Writeln('Uravnenie resheniy ne imeet'); else Begin x: =b/a; Writeln('Koren uravneniya: ', x: 8: 3); End; END. 5. Тестирование и отладка программы 6. Анализ результатов

Задачи для самостоятельного решения. Задача 1 Даны два числа a и b, которые являются Задачи для самостоятельного решения. Задача 1 Даны два числа a и b, которые являются сторонами прямоугольника. Напишите алгоритм (в виде блоксхемы), с помощью которого находятся площадь и периметр такого прямоугольника. Задача 2 Даны три числа a, b и c, которые являются сторонами треугольника. Напишите алгоритм (в виде блок-схемы), с помощью которого находится периметр такого треугольника (площадь).

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

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

2. Машино–независимые языки – это средство описания алгоритмов решения задач и данных, подлежащих обработке. 2. Машино–независимые языки – это средство описания алгоритмов решения задач и данных, подлежащих обработке. Они удобны в использовании для широкого круга пользователей и не требуют от них знания особенностей организации функционирования ЭВМ. Подобные языки получили название высокоуровневых языков программирования. Машино – независимые языки классифицируются по степени ориентации на решение определенного класса задач следующим образом: 1. Проблемно-ориентированные языки - это языки программирования, ориентированные на решение задач в конкретной области применения ЭВМ. (Фортран, Алгол; Симула, Модула-2; Лисп, Снобол)

2. Процедурно-ориентированные или алгоритмические языки предназначены для решения научно-технических задач пользователями, которые в состоянии 2. Процедурно-ориентированные или алгоритмические языки предназначены для решения научно-технических задач пользователями, которые в состоянии самостоятельно разработать алгоритм решения конкретной задачи или разобраться в известном алгоритме. (PL/1 - Programming Language; Алгол-68 (ALGOL - ALGOrihtmic Language)) 3. Диалоговые языки - обеспечивают оперативное взаимодействие человека с ЭВМ. (Бэйсик)

По степени детализации алгоритма получения результата: ● языки низкого уровня; ● языки высокого уровня; По степени детализации алгоритма получения результата: ● языки низкого уровня; ● языки высокого уровня; ● языки сверхвысокого уровня.

Низкоуровневый язык программирования, близкий к программированию непосредственно в машинных кодах используемого реального или виртуального Низкоуровневый язык программирования, близкий к программированию непосредственно в машинных кодах используемого реального или виртуального процессора (пример использования виртуального процессора - язык программирования Java). Как правило, низкоуровневый язык программирования использует особенности конкретного семейства процессоров. Общеизвестный пример низкоуровнего языка — язык ассемблера.

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

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

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

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

Структурное программирование Является дальнейшим развитием модульного программирования. n Основой технологии метода структурного программирования являются: Структурное программирование Является дальнейшим развитием модульного программирования. n Основой технологии метода структурного программирования являются: 1) Принцип модульной разработки программ 2) Использование при разработке модуля композиции трех базовых структур (элементов): А) линейной (структуры следования), Б) ветвления (структуры «если-то-иначе» ) В)циклической (структуры «цикл пока» ) n

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

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