Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DOROGOVA.pdf
Скачиваний:
245
Добавлен:
05.06.2015
Размер:
853.4 Кб
Скачать

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

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

Осваивая программирование, мы приобретаем два важных навыка.

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

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

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

Рассмотрим этапы создания программных систем.

Как правило, процесс создания программ состоит из 3-х этапов:

формализация задачи это создание технического задания;

разработка алгоритма решения;

программирование: создание текста, отладка, тестирование.

Техническое задание (ТЗ) – это исходный документ для проектирования разработки программы. ТЗ содержит основные технические требования, предъявляемые к программе и исходные данные для разработки; в ТЗ указываются назначение, область применения, сроки исполнения и многое другое. Как правило, ТЗ составляют на основе анализа результатов предварительных исследований, расчётов и моделирования. Этот этап работы над программой относятся к дисциплине "проектирование" и мы не будем его подробно рассматривать.

1.1. Алгоритмизация задачи

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

Мы думаем только то, что можно воплотить в слове!

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

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

иопирается алгоритм.

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

Что же такое алгоритм? Приведем самое общее его определение.

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

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

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

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

К основным способам описания алгоритмов можно отнести следующие:

словесно-формульный (на естественном языке);

в виде схемы (схема алгоритма);

с использованием специальных алгоритмических языков (например язык UML).

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

1.2. Схема алгоритма программы

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

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

Рис. 1.1. Основные элементы схемы алгоритма

1.3. Пример алгоритмизации

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

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

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

Во-первых, указать пользователю, что он должен ввести сумму продаж (sum), показатель вводится с клавиатуры.

Во-вторых, указать компьютеру величину налога на продажи (rate), задать в виде константы в тексте программы.

Обработка: чтобы рассчитать сумму налога (tax), необходимо умножить сумму продаж на ставку

налога.

Вывод данных: результат вычислений (tax) должен быть выведен на экран дисплея.

На втором этапе рисуем схему алгоритма, используя принятые обозначения (рис. 1.2).

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

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

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

1.4. Этапы трансляции программы

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

Рис. 1.2. Схема алгоритма решения

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

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

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

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

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

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

Существуют две разновидности трансляторов:

Компиляторы выдают результат в виде исполняемого файла. Этот файл может быть запущен самостоятельно без создавшего его транслятора.

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

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

Компиляция (обработка исходного текста компилятором).

Компоновка (последующая обработка редактором связей).

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

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

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

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

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

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

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

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

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Рис. 1.4. Этапы трансляции программы, состоящей из нескольких модулей

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]