Курсовая работа: Технология программирования

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

ГЛАВА 1.ТЕОРИТИЧЕСКИЕ ОСНОВЫ ПРОГРАММЫ

1.1 Понятие и сущность программы

1.2 Виды и классификаций программы

ГЛАВА 2. АНАЛИЗ ПРОГРАММЫ В КЫРГЫЗСКОЙ РЕСПУБЛИКЕ

2.1 Анализ программы и проблемы на сегодняшний день

2.2 Проблема Программ в Кыргызстане

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ЛИТЕРАТУРЫ

ВВЕДЕНИЕ

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

Изучение дисциплины «Технология программирования» является одним из первых шагов на пути освоения языков программирования и подходов к созданию программ. Знания и умения, приобретённые при этом, являются необходимой основой для дальнейшего изучения современных библиотек и технологий разработки сложных программных продуктов.

Данная работа предназначена для закрепления учебного материала, пройденного по курсу «Технологии программирования».

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

ГЛАВА 1. ТЕОРИТИЧЕСКИЕ ОСНОВЫ ПРОГРАММЫ

1.1 Понятие и сущность программы

Программа (Program) -- это набор команд, инструкций в виде кода, который запакован в исполняемый файла/ы. Создается для выполнения определенный функций и задач на определенном устройстве и операционной системе. Это может быть текстовый просмотрщик, видео-редактор, музыкальный плеер, браузер и т.д.

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

Если вы учитесь в университете на программиста, то наверняка знаете, что компьютерной программой называется даже простой код, который выводит на экран текст -- Hello World!

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

Интересно! Любое ПО создается под целевую систему: Windows, Mac OS, IOS, Android или другую, и под ее архитектуру. Поэтому для каждой ОС необходим свой софт, который будет на ней работать.

Как создаются программы

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

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

· Высокоуровневый -- C++, Ruby, Java и другие. В них написание кода уже больше похоже на человеческий язык. Действия описываются в функциях, количество кода намного меньше и скорость разработки соответственно быстрее. В данном случае программировать намного легче.

Языков программирования огромное множество, любой может подходить для определенных задач. Для каждой операционной системы, будь то Windows, Mac OS, Linux, IOS или Android существует свой язык программирования. И если софт написан под определенную систему, ее архитектуру, то на другой ОС он просто не запустится.

1.2 Виды и классификации программ

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

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

Системные программы - это комплекс программ, осуществляющих управление внутренними компонентами компьютера и обеспечивающий их взаимодействие с прикладными программами. К системным программам (см. рис. 1) относятся: операционные системы [2 -8], драйверы [4, 9], программные оболочки [2], утилиты [7].

Операционная система - это комплекс взаимосвязанных системных программ, контролирующий использование и распределение ресурсов вычислительной системы и организующий взаимодействие пользователя с компьютером. В зависимости от количества одновременно обрабатываемых задач и числа пользователей, различают четыре основных класса операционных систем: однопользовательские однозадачные - поддерживают одну клавиатуру и могут работать только с одной (в данный момент) задачей; однопользовательские однозадачные с фоновой печатью - позволяют помимо основной задачи запускать одну дополнительную задачу, ориентированную на вывод информации на печать; однопользовательские многозадачные - обеспечивают одному пользователю параллельную обработку нескольких задач; многопользовательские многозадачные - позволяющие на одном компьютере запускать несколько задач несколькими пользователями. Известны операционные системы: MS-DOS, Windows NT, Windows 95, Windows 98, Windows 2000 , Windows Me, Windows XP, Windows Vista, Windows 7, Windows 8, Linux и др.

Драйверы - программы расширяющие возможности операционной системы по управлению устройствами ввода-вывода, оперативной памятью и т.д. С помощью драйверов возможно подключение к компьютеру новых устройств или нестандартное использование имеющихся (драйверы клавиатуры, принтера, видеоконтроллера и др.). Драйверы устройств можно разделить на два основных вида: пользовательского режима и режима ядра (см. рис. 1). Драйверы пользовательского режима делятся на драйверы виртуальных устройств, использующиеся для поддержки программ (MS-DOS), и драйверы принтеров. Драйверы режима ядра подразделяются на драйверы файловой системы (реализующие ввод/вывод на локальные и сетевые диски), драйверы потоковых устройств (реализующие ввод/вывод видео и звука), драйверы видеоадаптеров (реализующие графические операции), WDM-драйверы (предназначенные в общем для расширения стандартных возможностей основного драйвера). Также, драйверы разделяют на одноуровневые и многоуровневые. Большинство драйверов, управляющих физическими устройствами, является многоуровневыми. Программы оболочки - программы, созданные для упрощения работы со сложными программными системами. Оболочки предоставляют пользователю удобный доступ к файлам и обширные сервисные услуги. Примерами программ оболочек являются: Norton Commander, Total Commander, Volkov Commander, FAR Managerи т.п. Утилиты - вспомогательные компьютерные программы, расширяющие и дополняющие соответствующие возможности операционной системы. Их подразделяют на антивирусные программы [3, 10], программы архиваторы [3, 9], программы русификаторы, программы для оптимизации дисков. Антивирусные программы предназначены для предотвращения заражения компьютерными вирусами и ликвидации последствий заражения вирусами. Различают следующие виды антивирусных программ: детекторы - сканируют файлы для поиска известных вирусов, соответствующих определению в словаре вирусов; доктора - находят и удаляют зараженные вирусом файлы; ревизоры - запоминают исходное состояние программ, каталогов и системных областей, а затем периодически сравнивают текущее состояние с исходным. Представители антивирусного семейства программ - Microsoft Security Essentials, Kaspersky Antivirus, DrWeb, Norton Antivirus. Программы-упаковщики (архиваторы), позволяют сжимать информацию на дисках, а также объединять копии нескольких файлов в один архивный файл, для удобного хранения информации. Представители данных программ - WinZip и WinRar. Программы для оптимизации дисков, создания резервных копий информации (например, APBackUp, Acronis True Image) - позволяют периодически копировать информацию, находящуюся на жёстком диске компьютера, на дополнительные носители.Инструментальные программы - программы, которые используются в ходе разработки, корректировки или развития других прикладных или системных программ. К инструментальным программам (см. рис. 2) можно отнести трансляторы, редакторы текстов программ, вспомогательные программы, библиотеки подпрограмм [3]. Трансляторы реализуются в виде компиляторов или интерпретаторов, выполняют преобразование с одного языка программирования на другой [3, 11]. Компилятор читает всю программу целиком, делает её перевод и создает законченный вариант программы на машинном языке, который затем и выполняется. Интерпретатор переводит и выполняет программу строка за строкой. Редакторы обеспечивают редактирование текстов программ и цветовое выделение на экране синтаксических конструкций языка программирования. Вспомогательные программы - это отладчики, программы для получения перекрёстных ссылок и т. п. Библиотеки подпрограмм содержат заранее подготовленные подпрограммы, которые могут использовать программисты. Большое количество программ написано с использованием языков программирования: Java, С, C++, PHP, MathLab, Visual Basic/Basic, FoxPro, Assembler, Pascal.

Прикладные программы - способствующие решению какой-либо задачи в пределах данной проблемной области и обеспечивающие выполнение необходимых пользователям работ: редактирование текстов, рисование картинок, обработка информационных массивов и т. д. [2, 3, 7, 12]. Их разделяют на программы общего назначения, методо-ориентированные, проблемно-ориентированные и профессионального уровня (см. рис. 3).

Программы общего назначения - программы, ориентированные на широкий круг пользователей в различных проблемных областях, позволяющие автоматизировать наиболее часто используемые функции и работы. Это графические (Adobe Photoshop, Corel Draw) и текстовые редакторы (Microsoft Word, Wordpad, Microsoft Publisher, Corel Ventua и Adobe ageMaker), табличные процессоры (Microsoft Excel - для работы с электронными таблицами), издательские системы (PageMaker, QuarkXPress, Scribus и др.), программы подготовки презентаций (Microsoft PowerPoint, Microsoft FrontPage, Activstudio, MimioStudio и др.), мультимедийные (Media Player Codek Pack, K-Lite Codek Pack, Quick Time Player и др.), СУБД - системы управления базами данных (Microsoft Access, Clipper, Paradox, FoxPro), компьютерные игры. Последние классифицируют по жанрам [12]: Action: 3D - шутеры, «бродилки-стрелялки», файтинги, аркада; симуляторы - технические, аркадные, спортивные, экономические; стратегии - стратегии по схеме игрового процесса, по масштабу игрового процесса; приключения, адвенчуры или квесты (текстовые, графические), головоломки, экшн-адвенчуры; ролевые игры, головоломки, логические, пазлы, традиционные и настольные, текстовые.

Методо-ориентированные программы предназначены для решения задач числового анализа, статистических задач. К ним относятся программы: математических методов (для решения дифференциальных уравнений и имитационного моделирования, к примеру, Mathematica, SMathStudio, EquPixy, Matrix и др.), статистики (например, Calc 3D Pro), экономического назначения (бухгалтерские - 1С8, Галактика, Парус и т. п., финансового анализа - Project Expert, Pick Soft, Budget Manager и др., правовые базы данных - Гарант, Консультант, Кодекс и т.п.), обучающие программы (например, RocketReader), компьютерные вирусы.

Компьютерные вирусы [3, 10, 13] можно условно классифицировать по следующим признакам: по среде обитания вируса (сетевые, файловые, загрузочные); по способу заражения среды обитания; по деструктивным возможностям; по особенностям алгоритма вируса. По способу заражения среды обитания вирусы бывают резидентные (при инфицировании компьютера находятся в оперативной памяти и являются активными вплоть до его выключения) и нерезидентные (не заражают память компьютера и являются активными ограниченное время). По деструктивным возможностям их разделяют на очень опасные (уничтожают данные на компьютере), опасные (приводят к сбою в работе компьютера), неопасные (уменьшают память и создают различные эффекты) и безвредные (уменьшают свободную память). По особенностям алгоритма вируса различают программы: троянские программы, вирусы-черви, компаньон-вирусы, паразитические, стелс-вирус, полиморфик-вирусы и макровирусы. Троянские программы имитируют другое приложение (программу инсталляции, текстовый редактор, игру и т. п.), при этом выполняют несанкционированные действия: сбор и пересылку информации третьим лицам, её модификацию или удаление, передаёт управление компьютером удаленному пользователю. Вирусы-черви проникают в память компьютера из компьютерной сети, вычисляют сетевые адреса других компьютеров и рассылают по ним свои копии. Компаньон-вирусы создают файл-двойник, который получает управление при запуске заражённого файла. Паразитические вирусы (кроме червей и компаньонов) при распространении своих копий обязательно изменяют содержимое дисковых секторов или файлов. Стелс-вирус полностью или частично скрывает своё присутствие в системе путём перехвата обращения операционной системы к поражённым файлам, «подставляя» вместо себя незаражённые участки. Полиморфик-вирусы - не имеют постоянного участка кода и являются трудно обнаружимыми. Макровирусы - пишутся на WordBasic (не в машинных кодах), живут в документах Word, записывают себя в Normal.dot.

Проблемно-ориентированные компьютерные программы - программы для решения задач планирования, оперативного управления, материально-технического снабжения и т.д. [3]. Они включают в себя программы (рис. 3): комплексные для предприятий, комплексные для не промышленной сферы и для отдельных предметных областей. Программы для промышленной сферы составляют технологическую основу для планирования производства, контроля за ходом выполнения плана работ, обеспечивают движение финансовых, материальных и трудовых ресурсов, контролируют сервисное обслуживание, распределение готовой продукции и маркетинг (ERP-системы: SAP, R/3, Axapta, MFG Pro, Scala, BAAN и др.). Программы непромышленной сферы предназначены для автоматизации деятельности фирм, не связанных с материальным производством (банки, биржа, торговля), (например IBIS AS, PROFILE, Midas ABS, FMS - Financial Management System, Диасофт-БАНК и др.). Программы отдельных предметных областей являются одним из основных направлений развития и создания программных продуктов, например для бухгалтерского учёта, финансового менеджмента, правовых систем и т.д. (Инфобухгалтер, Монолит-Инфо, и пр.).

Программы АРМ - помогают решать задачи в рамках деятельности этого специалиста (например, АРМ диспетчера, АРМ конструктора, АРМ технолога и т. п.). Программные пакеты САПР предназначены для проектирования и разработки объектов производства и строительства, и для оформления конструкторской и технологической документации. CAD-системы или компьютерная поддержка проектирования - предназначены для решения конструкторских задач и оформления конструкторской документации, моделирования трёхмерной объемной конструкции детали и оформления чертежей и текстовой конструкторской документации (P-CAD, OrCAD, AutoCAD, CADdy, CADMECH Desktop, OmniCAD, Компас-График, CAD SolidMaster и др.). CAM-системы или компьютерная поддержка изготовления - предназначены для проектирования обработки изделий на станках с числовым программным управлением и выдачи программ для этих станков. CAM-системы являются системами технологической подготовки производства (например, Mastercam, Edgecam, SolidCAM). САЕ-системы (системы инженерного анализа) или поддержка инженерных расчётов, позволяют решать задачи: расчёт на прочность, анализ и моделирование тепловых процессов, расчеты гидравлических систем и машин, расчёты процессов литья (T-Flex, Ansys, Comsol, Nastran, Salome и др.). АСНИ - программы для автоматизированных систем научных исследований на основе получения и использования моделей исследуемых объектов, явлений и процессов (программы MAPLE, EPICS, TANGO, SCILAB, MATLAB). Программы АСУ - для автоматизированных систем управления, реализующие совокупность математических методов с использованием технических средств и организационных комплексов, обеспечивающих управление сложным объектом или процессом в соответствии с заданной целью.