Главная страница
Навигация по странице:

  • 1.1 Понятие языка программирования 6 1.2Современные языки программирования 10

  • Понятие языка программирования

  • Современные языки программирования

  • Тестирование

  • Технология составления алгоритмов реализации подпрограмм (процедуры) на языке программирования высокого уровня для решения задач. Курсовая. Курсовая работа на тему Технология составления алгоритмов реализации подпрограмм (процедуры) на языке программирования высокого уровня для решения задач


    Скачать 179.17 Kb.
    НазваниеКурсовая работа на тему Технология составления алгоритмов реализации подпрограмм (процедуры) на языке программирования высокого уровня для решения задач
    АнкорТехнология составления алгоритмов реализации подпрограмм (процедуры) на языке программирования высокого уровня для решения задач
    Дата03.11.2021
    Размер179.17 Kb.
    Формат файлаdocx
    Имя файлаКурсовая.docx
    ТипКурсовая
    #262493



    КУРСОВАЯ РАБОТА

    на тему

    Технология составления алгоритмов реализации подпрограмм (процедуры) на языке программирования высокого уровня для решения задач

    СОДЕРЖАНИЕ


    1.1 Понятие языка программирования 6

    1.2Современные языки программирования 10



    1

    Введение


    В настоящее время, во всем мире, наряду с языками высокого программирования, такими как: Фортран, Алгол, Си, С++, Java и др. особое место занимает Паскаль. Популярности среди программистов он обязан, прежде всего, своей простоте, универсальности и удобству работы в нем. Язык программирования Паскаль используется уже более тридцати лет. На сегодняшний день создано семь версий.

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

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

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

    Именно поэтому изучение этого аспекта программирования является особенно актуальным при написании современных программ на языках высокого уровня.

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

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

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

    Структурное программирование основывается на 3-х основных составляющих:

    1) Использование трех базовых структур – следования, ветвления и циклов

    2) Модульное программирование (использования большого количества подпрограмм и модулей для разбития более сложной задачи на ряд простейших)

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

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

    Постановка задачи

    Найти значение интеграла , пользуясь методом трапеций, методом Симпсона и методом Ньютона для различных n (n=6, 12, 30). Сравнить с точным значением интеграла и оценить погрешности методов при указанных n. Изобразить график подынтегральной функции и заштриховать область, площадь которой равна значению интеграла.

    Описание курсовой работы

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

    1. Теоретическая часть


      1. Понятие языка программирования

    Язык программирования - это формальная знаковая система, предназначенная для написания программ для компьютера [10].

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

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

    Любой язык программирования состоит из набора правил - синтаксических, лексических и семантических:

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

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

    • Семантика - система правил толкования конструкций языка. Любая программа для компьютера составляется с помощью

    символов алфавита с помощью синтаксических и семантических правил.

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

    Первый язык программирования высокого уровня - Fortran (Formula Translation) был создан в середине 50-х годов. Благодаря своей простоте и тому, что на этом языке накоплены большие библиотеки программ, Fortran используется для инженерных и научных расчетов, для решения задач физики и других наук с развитым математическим аппаратом.

    Для решения экономических задач был создан язык программирования - Cobol.

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

    В 1968 г. объявили конкурс на лучший язык программирования для обучения студентов. Победителем стал язык Algol-68, но он не получил широкого распространения. Также для этого конкурса Никлаус Вирт создал достаточно удобный и простой, с наличием мощных средств структурирования данных язык Pascal.

    Язык Basic получил широкое распространение. Спустя много лет после изобретения, Basic и сегодня самый простой для освоения из десятков языков программирования.

    В начале 70-х годов необходимость разработки больших, сложных и системных программ, потребовала создания специального языка программирования. Был разработан язык C. Он является одним из универсальных языков программирования. В отличие от Pascal, он давал больше контроля при работе с памятью и машинных команд. На C разрабатывались целые операционные системы, трансляторы, базы данных, системные и прикладные программы. Программы, написанные на С, сравнимы по скорости с программами, написанными на языке Assembler, а код программ легче понимается.

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

    В 80-х годах был создан язык Ada. В дополнение к классическим свойствам языков тех времён, Ada решал задачи реального времени и имел инструменты для реализации параллелизма.

    Деление языков программирования на низкого, высокого и сверхвысокого уровня является наиболее распространенной классификацией.

    • Низкий уровень - языки Автокод и Assembler. Они являются машинно-ориентированными языками, т. к. команды соответствуют кодам исполняемым непосредственно на процессоре.

    • Высокий уровень - Fortran, Algol, Cnobol, Pascal, Basic, С, Prolog и т.д. Эти языки машинно-независимы, т. к. переводом кода в машинные команды занимается компилятор и транслятор. Это вносит небольшое замедление в скорости по сравнению с языками низкого уровня.

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

    Языки программирования также делятся на вычислительные (Fortran, Pascal, Algol, Basic, С) и языки символьной обработки(Лисп, Prolog, Cnobol)

    Существует два основных направления развития языков программирования: процедурное и непроцедурное (декларативное).

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

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

    Широко распространены следующие структурные языки: Pascal, С, Ada, Pl/1. Среди операционных известны Fortran, Basic, Focal.

    Непроцедурное программирование появилось в начале 70-х годов 20­го века, но стремительное его развитие началось в 80-е годы, когда был разработан японский проект создания ЭВМ пятого поколения, целью которого явилась подготовка почвы для создания интеллектуальных машин. К непроцедурному программированию относятся функциональные и логические языки.

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

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

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

    Языки описания сценариев, такие как Perl, Python, Rexx, Tcl и языки оболочек UNIX, предполагают стиль программирования, весьма отличный от характерного для языков системного уровня. Они предназначаются не для написания приложения с нуля, а для комбинирования компонентов, набор которых создается заранее при помощи других языков. Развитие и рост популярности Internet также способствовали распространению языков описания сценариев. Так, для написания сценариев широко употребляется язык Perl, а среди разработчиков Web-страниц популярен JavaScript.

      1. Современные языки программирования

    Рассмотрим и сравним пять самых распространенных и востребованных языков программирования.

    • Python

    За данным языком будущее. Он простой для понимания и применения: Python постепенно входит в учебную программу, можно сказать, вытесняя Pascal и прочие «деревянные» языки. Потом, это нейронные сети: в случае, если разработчик ударяется в машинное обучение, то тут же обращает свое внимание на Python. Потому, что, данный язык программирования оброс необходимым числом библиотек, ориентированных на нейронные сети (Ruby в этом плане очень проигрывает).

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

    • Java

    Java - является одним из практичных языком программирования для изучения. Его популярность невозможно переоценить, так как основная масса (90%) компаний из списка Fortune используют Java для разработки бэкэнд-систем и десктопных приложений. Кроссплатформенность достигнута с помощью JVM.

    В Java, как и во множестве передовых языков, включая C++, Python, применяется принцип объектно-ориентированного программирования (ООП). Java в основном применяется для создания серверных приложений и мобильных ПО. Также это база нативных приложений под Android. Этот язык очень востребован у разработчиков.

    • C++

    С++ был разработан в 1983, как альтернатива С, и тут же обрел заслуженную популярность. Его ключевая особенность - предопределенные классы. Microsoft Windows и Google Chrome - самые известные примеры проектов, созданных на С++. Данный список могут пополнить проекты Adobe и Amazon'a. Этот язык программирования остаётся востребованным и на сегодняшний день, так как у него очень мощный набор инструментов, который может быть адаптирован в самых различных сферах, например, финансы, банки, игры, связь, электронные платежные системы, розничная торговля и т.д.

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

    • R - язык, который используется для статистической обработки данных и работы с графикой, также это свободная программная среда вычислений с открытым исходным кодом в рамках проекта GNU. R - проект схожий с языком «S» (Bell Labs), альтернативная реализация языка S.

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

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

    • C#

    Созданный компанией Microsoft, мультипарадигмальный язык программирования общего назначения, применялся для разработки приложений на платформе Microsoft. C# - это объектно-ориентированный язык, который применяется в разработке приложений, основанных на .NET frameworks. C# - лучший язык для создания нативных приложений для платформы Microsoft. Кроме того, он является рекомендуемым языком для разработки игр с использованием движка Unity Game.

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

    На C# возможно написать что угодно: веб-сервисы, мобильные ПО, серверные приложения и т.д. Также считается что эта платформа упрощает разработку приложений под Android и iOS.


    Сравнение языков программирования
    Сравнение языков программирования представлено в таблице 1.

    Название

    Разработчик

    Система

    программирования

    Образовательные возможности

    Java

    Разработан компанией Sun Microsystems (в последующем приобретённой компанией Oracle)

    Инженеры компании Sun Microsystems:

    Патрик Ноутон (Patrick

    Naughton) - руководитель группы инженеров Джеймс Гослинг (James

    Gosling) - член Совета директоров.

    Разработка Java началась в 1990 году, первая официальная версия - Java 1.0, - была выпущена только 21 января 1996 года

    Idea, Eclipce,

    NetBeans, JDeveloper,

    Android Studio,

    Создание приложений, игр и веб-сайтов, системные приложения, приложения для мобильных телефонов

    Python

    Гвидо ван Россум и Python Software Foundation . Первая стабильная версия появилась в январе 1994 года

    Python ide, PyCharm,

    Visual Studio, Spyder,

    Thonny

    Создание приложений, игр и веб-сайтов, математические расчеты, нейросети, системные приложения,


    Таблица 1













    операционные

    системы

    C++

    Появился в 1983 г.

    Автор Страуструп, Бьёрн

    Visualstudio, Eclipse

    CDT, NetBeans, CodeLite, Code::Blocks

    Создание приложений, игр, математические расчеты, нейросети

    C#

    Microsoft, Хейлсберг,

    Андерс, Появился в 2000

    Visualstudio, Project Rider, Eclipse, MonoDevelop, Code::Blocks,

    Создание приложений, игр и веб-сайтов

    R

    Росс Айхэка

    Роберт Джентлмен

    Появился в 1993

    RStudio, Revolution Open, CRAN Repository, Visual Studio 2015

    Математические расчёты, создание графики, документирование статистических обсчетов,

    создание интерактивных веб­приложений

    В ходе сравнения языков программирования, выявили самый подходящий для глубокого изучения - Python. На нём можно разработать что угодно, огромное количество библиотек и возможность писать простой и понятный код.

    1.3 Методы численного интегрирования, использующиеся в этой курсовой работе



    Эти методы применяются для приближенного вычисления определенного интеграла вида: . Функция f(x) задана на отрезке [a, b]. Этот отрезок разбивается на n равных частей длины h=(b-a)/n.

    Определенный интеграл представляет собой площадь, ограниченную кривой f(x), осью x и прямыми x=a и x=b. Приблизительно эта площадь представляется суммой площадей полос, основания которых одинаковы и равны h, а высоты равны значениям функции в точках разбиения. Обозначим точки разбиения x0=a, x1=a+h, x2= a+2h,…xn=b, а значения функции в этих точках соответственно yo=f(x0); y1=f(x1), y2=f(x2), … yn=f(xn).

    Метод трапеций:


    Метод Симпсона:


    гдеn=2*m число разбиений отрезка [a, b], кратное двум.

    Метод Ньютона:



    гдеn=m*3– число разбиений отрезка [a, b], кратное трем.

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

    Рассмотренные нами теоретические сведения будут применены для реализации практической части курсовой работы.

    2. Практическая часть

    2.1 Решение задания на языке высокого уровня С



    Листинг программы

    #include

    #include

    #include

    #define a -1

    #define b 1

    #define I 2.350402

    int N;

    void menu();

    float y(float x);

    intget_n();

    float Simpson();

    float Trap();

    floatNewton();

    intconsole_n();

    intfile_n();

    void output(float f, inti);

    void console_I(float f, inti);

    void file_i(float f, inti);

    int main()

    {

    menu();

    return 0;

    }

    void menu()

    {

    printf("\n %3.d\n", b);

    printf(" I = S(e^x)dx\n");

    printf(" %1.d\n\n", a);

    printf("1. Solve by Simpson\n2. Solve by trapeze\n3. Solve by Newton\n4. Exit\n>> ");

    int c;

    float f;

    scanf("%d", &c);

    switch (c)

    {

    case 1 :

    {

    system("cls");

    f = Simpson();

    break;

    }

    case 2 :

    {

    system("cls");

    f = Trap();

    break;

    }

    case 3 :

    {

    system("cls");

    f = Newton();

    break;

    }

    case 4 :

    {

    system("cls");

    exit(1);

    break;

    }

    default :

    {

    system("cls");

    menu();

    }

    }

    output(f, c);

    printf("Push any button to return to menu...");

    getch();

    system("cls");

    menu();

    }

    void console_I(float f, inti)

    {

    system("cls");

    if (i == 1)

    printf("Solved by Simpson method: n = %d\n", N);

    else if (i == 2)

    printf("Solved by trapeze method: n = %d\n", N);

    else

    printf("Solved by Newton method: n = %d\n", N);

    printf("\n %3.d\n", b);

    printf(" I = S(e^x)dx = %f\n", f);

    printf(" %1.d\n\n", a);

    printf("Exact value: %f\n", I);

    printf("Difference: %f\n", I - f);

    }

    void file_I(float f, inti)

    {

    FILE *t;

    t = fopen("C:/Documents and Settings/User/Рабочийстол/Прога/Курсач/output_f.txt", "w");

    if (i == 1)

    fprintf(t, "Solved by Simpson method: n = %d\n", N);

    else if (i == 2)

    fprintf(t, "Solved by trapeze method: n = %d\n", N);

    else

    fprintf(t, "Solved by Newton method: n = %d\n", N);

    fprintf(t, "\n %3.d\n", b);

    fprintf(t, " I = S(e^x)dx = %f\n", f);

    fprintf(t, " %1.d\n\n", a);

    fprintf(t, "Exact value: %f\n", I);

    fprintf(t, "Difference: %f\n", I - f);

    fclose(t);

    }

    void output(float f, inti)

    {

    int c;

    printf("Output I:\n1. File\n2. Console\n3. File&Console\n>> ");

    scanf("%d", &c);

    if (c == 1)

    file_I(f, i);

    else if (c == 2)

    console_I(f, i);

    else

    {

    console_I(f, i);

    file_I(f, i);

    }

    }

    float y(float x)

    {

    return expf(x);

    }

    intget_n()

    {

    int n, c;

    printf("Input n:\n1. From file\n2. From console\n>> ");

    scanf("%d", &c);

    if (c == 1)

    n = file_n();

    else

    n = console_n();

    N = n;

    return n;

    }

    intconsole_n()

    {

    system("cls");

    int n;

    printf("Enter n: ");

    scanf("%d", &n);

    return n;

    }

    intfile_n()

    {

    FILE *f;

    int n;

    f = fopen("C:/Documents and Settings/User/Рабочийстол/Прога/Курсач/input_n.txt", "r");

    fscanf(f, "%d", &n);

    fclose(f);

    return n;

    }

    float Simpson()

    {

    float n;

    n = get_n();

    float h = (b - a) / n, sum = 0;

    inti, p;

    for (i = 1; i< n; i++)

    {

    if ((int)i % 2 == 0)

    p = 2;

    else

    p = 4;

    sum += p*y(a + h * i);

    }

    sum += y(a) + y(b);

    sum *= (h/3);

    return sum;

    }

    float Trap()

    {

    float n;

    n = get_n();

    float h = (b - a) / n, sum = 0;

    inti;

    for (i = 0; i< n; i++)

    sum += y(a + i * h) + y(a + (i + 1) * h);

    sum *= h / 2;

    return sum;

    }

    float Newton()

    {

    float n;

    n = get_n();

    float h = (b - a) / n, sum1 = 0, sum2 = 0, sum;

    inti;

    for (i = 1; i< n; i++)

    if ((int)i % 3 == 0)

    sum1 += y(a + i * h);

    else

    sum2 += y(a + i * h);

    sum = 3.0 / 8 * h * (y(a) + y(b) + 2 * sum1 + 3 * sum2);

    returnsum;

    }

    Тестирование

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

    Решим интеграл тремя разными способами, но при одном n, допустим n = 12.

    Точное значение = 2.350402.

    Решим методом Симпсона:


    программирование matlab паскаль язык

    Решим методом трапеций:

    Решим методом Ньютона:



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

    2.2 Решение задания на языке высокого уровня Паскаль



    Листинг программы

    Модульmain:

    programKursVar4;

    uses menu;

    begin

    menu_1;

    end.

    Модульmenu:

    unit menu;

    Interface

    procedure menu_1;

    Implementation

    uses crt, math, output;

    procedure menu_1;

    var c, n : integer;

    f : real;

    begin

    clrscr;

    writeln(' 1');

    writeln(' I = S(e^x)dx');

    writeln(' -1');

    writeln('1. Solve by Simpson');

    writeln('2. Solve by trapeze');

    writeln('3. Solve by Newton');

    write('>> ');

    read(c);

    case c of

    1: begin

    clrscr;

    f := Simpson(n);

    end;

    2: begin

    clrscr;

    f := Trap(n);

    end;

    3: begin

    clrscr;

    f := Newton(n);

    end;

    4: begin

    clrscr;

    halt;

    end;

    else

    begin

    menu_1;

    end;

    end;

    output_I(f, c, n);

    writeln('Push any button to proceede to main menu...');

    readln;

    menu_1;

    end;

    end.

    Модульmath:

    unit math;

    Interface

    function Simpson(var n: integer): real;

    function Trap(var n: integer): real;

    function Newton(var n: integer): real;

    function y(x: real): real;

    Implementation

    uses crt, input;

    var a, b : integer;

    function Simpson(var n: integer): real;

    var h, sum : real;

    i, p: integer;

    begin

    n := get_n;

    a := -1; b := 1;

    h := (b - a) / n;

    sum := 0;

    for i := 1 to n - 1 do

    begin

    if i mod 2 = 0 then

    p := 2

    else

    p := 4;

    sum := sum + p * y(a + h * i);

    end;

    sum := sum + y(a) + y(b);

    sum := sum * (h / 3);

    Simpson := sum;

    end;

    function Trap(var n: integer): real;

    var h, sum : real;

    i : integer;

    begin

    n := get_n;

    a := -1; b := 1;

    h := (b - a) / n;

    sum := 0;

    for i := 0 to n - 1 do

    sum := sum + y(a + i * h) + y(a + (i + 1) * h);

    sum := sum * (h / 2);

    Trap := sum;

    end;

    function Newton(var n: integer): real;

    var h, sum1, sum2, sum: real;

    i : integer;

    begin

    n := get_n;

    a := -1; b := 1;

    h := (a - b) / n;

    sum1 := 0; sum2 := 0;

    for i := 0 to n - 1 do

    if i mod 3 = 0 then

    sum1 := sum1 + y(a + i * h)

    else

    sum2 := sum2 + y(a + i * h);

    sum := 3 / 8 * h * (y(a) + y(b) + 2 * sum1 + 3 * sum2);

    Newton := sum;

    end;

    function y(x : real): real;

    begin

    y := exp(x);

    end;

    end.

    Модульinput:

    unit input;

    Interface

    function get_n : integer;

    function file_n : integer;

    function console_n : integer;

    Implementation

    uses crt;

    function get_n : integer;

    var c : integer;

    begin

    clrscr;

    writeln('Input N:');

    writeln('1. From file');

    writeln('2. From console');

    write('>> ');

    readln(c);

    if c = 1 then

    get_n := file_n

    else

    get_n := console_n;

    end;

    function file_n : integer;

    var t : text;

    n : integer;

    begin

    clrscr;

    assign(t, 'input_n.txt');

    reset(t);

    read(t, n);

    close(t);

    clrscr;

    file_n := n;

    end;

    function console_n : integer;

    var n : integer;

    begin

    clrscr;

    write('Input N: ');

    readln(n);

    delay(300);

    clrscr;

    console_n := n;

    end;

    end.

    Модульoutput:

    unit output;

    Interface

    procedure output_I(f : real; i, n : integer);

    procedure file_I(f : real; i, n : integer);

    procedure console_I(f : real; i, n : integer);

    Implementation

    uses crt;

    procedure output_I(f : real; i, n : integer);

    var c : integer;

    begin

    writeln('Output I:');

    writeln('1. File');

    writeln('2. Console');

    writeln('3. File&Console');

    write('>> ');

    readln(c);

    if c = 1 then

    file_I(f, i, n)

    else

    if c = 2 then

    console_I(f, i, n)

    else

    begin

    file_I(f, i, n);

    console_I(f, i, n);

    end;

    end;

    procedure file_I(f : real; i, n : integer);

    var t : text;

    r : real;

    begin

    assign(t, 'output_f.txt');

    rewrite(t);

    if i = 1 then

    writeln(t, 'Solved by Simpson method: n = ', n)

    else

    if i = 2 then

    writeln(t, 'Solved by trapeze method: n = ', n)

    else

    writeln(t, 'Solved by Newton method n = ', n);

    writeln(t, ' 1');

    writeln(t, ' I = S(e^x)dx = ', f);

    writeln(t, ' -1');

    r := exp(1) - exp(-1);

    writeln(t, 'Exact value: ', r);

    r := f - r;

    writeln(t, 'Difference: ', r);

    close(t);

    end;

    procedure console_I(f : real; i, n : integer);

    var r : real;

    begin

    clrscr;

    if i = 1 then

    writeln('Solved by Simpson method: n = ', n)

    else

    if i = 2 then

    writeln('Solved by trapeze method: n = ', n)

    else

    writeln('Solved by Newton method n = ', n);

    writeln(' 1');

    writeln(' I = S(e^x)dx = ', f);

    writeln(' -1');

    r := exp(1) - exp(-1);

    writeln('Exact value: ', r);

    writeln('Difference: ', f - r);

    end;

    end.

    Тестирование

    Решим методом трапеций:


    Решим методом Ньютона:

    Решим методом Симпсона:

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

    2.3 Построение графического решения задачи в пакете Matlab



    График MATLAB


    MATLAB:

    X= linspace(-2, 2);

    Y = exp(X);

    X1 = linspace(-1, 1);

    Y1 = exp(X1);

    %plot(X1, Y1);

    plot(X, Y);

    hold on;

    area(X1, Y1, ‘FaceColor’, ‘y’);

    grid on;

    axis on;

    title(‘ y = e^x’);

    xlabel(‘X’);

    ylabel(‘Y’);

    text(0, 0.5, ‘S’);

    Таким образом, была осуществлена задача вычислительной математики на двух языках: #Си и Pascal.

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

    использования следующих структур: следования, ветвлений и циклов; использование модульного программирования и использование нисходящего программирования.


    Заключение


    В ходе выполнения дипломной работы была изучена литература по языкам программирования, проведен анализ современных языков программирования. Было выбрано для анализа пять популярных языков - программирования R, Python, C#, C++, Pascal и Java, проведено сравнение этих языков, выявлены образовательные возможности.

    Плюсы и минусы итоговой программы:

    Плюсы:

    1). Программа включает в себя такие структуры как: условные операторы, операторы множественного выбора, функции, процедуры, модули, файлы.

    2). Занимает небольшой объем оперативной памяти.

    3). Совмещена практически с любой операционной системой.

    4). Может запускаться как с использованием среды, так и с помощью файла exe.

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

    Минусы:

    1). Данная программа не имеет проверки ввода количества разбиений отрезка, как с клавиатуры, так и из файла.

    2). Пользователь не имеет возможности выйти из программы до ее завершения.

    В дальнейшем минусы могут быть исправлены, улучшив программу и сделав ее более функциональной и адаптированной.

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

    Различия Си и Паскаля. Эти языки крайне похожи, но имеют серьезные различия в синтаксисе. Так, например, в обоих языках есть подпрограммы ввода и вывода, но в Си это printf и scanf, а в Паскале write и read. Так со многими командами, но они имеют одинаковый смысл, что делает несложным перевод кода с одного языка на другой

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

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

    Список литературы





    1. Березин, Б.И. Начальный курс С и С++ / Б.И. Березин, С.Б. Березин – М.: Диалог-МИФИ, 2005. – 248 с.

    2. Бизли Д. М. Язык программирования Python. Справочник / Бизли Д. М, Г. Ван Россум Босова Л. Л. Босова А. Ю. - М.: ДиаСофт, 2000. - 858 с.

    3. Лутц М. Программирование на Python. (пер. с англ.) / Лутц М. - СПб.: Символ-Плюс, 2002. - 1136 c.

    4. Рапаков Г., Ржеуцкая С. TurboPascal для студентов и школьников/ БХВ-Петербург, 2002. – 153 с.

    5. Саммерфилд М. Программирование на Python 3. Подробное руководство (пер. с англ.) / Саммерфилд М. - СПб: Символ-Плюс, 2009. - 608 c.

    6. Сузи Р.А. Python. Наиболее полное руководство. / Сузи Р.А. - СПб.: БХВ-Петербург, 2002. - 759 с.

    7. Сузи Р.А. Язык программирования Python. / Сузи Р.А. - М: Бином. Лаборатория знаний, 2006. - 328 с.

    8. Фридланд А. Я. Информатика и компьютерные технологии. Основные термины. Толковый словарь. / Фридланд А. Я. Ханамирова Л. С. Фридланд И. А. - СПб.: Астрель, 2003. - 272 с.

    9. Хахаев И.А. Практикум по алгоритмизации и программированию на Python. / Хахаев И.А. - М.:Альт Линукс, 2010. - 126 с.

    10. Единая коллекция цифровых образовательных ресурсов. [Электронный ресурс]. — URL: http://school-collection.edu.ru (дата обращения: 25.10.2020).

    11. Методические материалы и программное обеспечение. [Электронный ресурс].— URL: http://kpolyakov.spb.ru.https://e.lanbook.com/book/119661 (дата обращения: 25.10.2020).


    написать администратору сайта