Реферат: Алгоритмы и структуры данных. Программирование в Cи
2. Повторяемость алгоритма . Алгоритм можно повторять сколь угодно часто и каждое повторение должно приносить при равных входных данных равный результат.
3. Корректность алгоритма . На практике корректность нужно подтверждать. Поэтому используются тесты, при которых уже известен для заявленных входных данных результат, и сравниваются затем данные с результатами.
4. Эффективность описания и исполнения алгоритма .
После описания свойств необходимо дать достаточно краткое определение понятия алгоритм:
Обрабатываемое предписание называется алгоритмом , если оно имеет следующие свойства:
1. Предписание описывается конечными средствами.
2. Оно однозначно установленным способом для введенных данных выдает точный результат.
Далее Юрген Плате говорит о том, что программа состоит из конечного числа шагов и приводит конкретные примеры, наглядно это обосновывая. Для написания программ необходимо использовать особенные языки. Языки программирования - это нормированные языки, которые служат для описания инструкций обработки, структур данных, а также ввода и вывода данных.
Необходимо преобразовывать алгоритм всегда таким образом, чтобы выделять в нем "подалгоритмы". Теория разработки программного обеспечения основывается на этой идее. Сложные и комплексные структуры и виды деятельности реализуются известными структурами и более простыми подалгоритмами. Разработка и составление алгоритмов превратится в конструирование из готовых алгоритмов.
Простейший язык программирования состоит из системы команд . Это - встроенные команды, они сравнимы с командами микрокалькулятора, которые вы вызываете, нажимая клавиши. Этими командами можно выполнять арифметические операции и хранить результаты действий.
Если каким-то образом нумеруют команды, то получают машинный язык . Это самый простой программистский код. В этом коде номер команды может использоваться как ее имя. Программа на машинном языке является ничем иным как длинной последовательностью таких слов кода.
Программировать на языке машин достаточно трудно. Поэтому стали переводить коды компьютеров в сокращения незашифрованного текста. Соответствующие переводческие программы, которые называют ассемблерами , были разработаны для всех компьютеров.
Программа на языке ассемблера - это последовательность команд, которые состоят из 2-4 букв и к которым прибавляются адреса ячеек памяти. Например, команда ADD R2, R6 складывает содержимого ячейки памяти R2 и содержимого R6 и сохраняет сумму в R6.
Однако со временем недостатки программирования на ассемблере становились все более очевидными: зависимость от модели компьютера, изобретение различных «трюков» в связи с ограниченными возможностями языка, трудность исправления ошибок, неудобная форма работы для человека. Это вело, в том числе, к развитию так называемых "более высоких языков программирования", которые более удобны для человека.
В следующем параграфе автор рассказывает о программах перевода с машинного языка в более удобную для человека форму – интерпретаторах и компиляторах. Эти программы переводили различные последовательности букв в форму, которую может понимать компьютер. Вместе с тем программы могли писаться на языке, который состоит из слов разговорной речи. Кроме того, значительно упрощается поиск ошибок при программировании.
1.3 Алгоритмические языки
В этом разделе автор исследует, какие свойства должны иметь языки, которые используются для описания алгоритмов (алгоритмические языки ). Речь идет о нормированных языках, которые служат описанию алгоритмов. Здесь Юрген Плате отвечает на 2 основных вопроса:
· Как можно нормировать язык?
· Что требуется для описания алгоритмов?
В результате нормирования естественного языка от многих вариаций сочетания остается только лишь единственная версия и сокращения с перестановками больше не допустимы.
Однако, алгоритмический язык не обходится одними символами, также необходимо давать имена величинам и происходящим действиям.
"Более высокие" языки программирования как, например, BASIC, FORTRAN, Pascal или C разрабатывались, чтобы облегчить решение различных задач. Автор описывает разработчиков и назначение данных языков и особо останавливается на языках Pascal и C.
Прежде чем писать программу, необходимо иметь алгоритм для решения задания. Алгоритм резюмирует все шаги, которые нужно пройти на пути к решению. Он представлен таким образом, что может образовывать основу для программы, но еще не формулирует ее на языке программирования. Хороший программист может перенести алгоритм без труда из разговорной речи в любой язык программирования. Для начинающего "нечеткость" разговорной речи представляет напротив большую проблему.
1.4 От проблемы до решения
В этом параграфе автор рассказывает о самом важном этапе создания программ - целях программирования : зачем и почему программное обеспечение должно создаваться и что должно уметь делать. Имеются минимум 2 участника процесса создания ПО: клиент и разработчик.
· Первый шаг - это запись требований клиентов. Разработчик пытается уловить необходимые для создания программного обеспечения связи и отбросить несущественное.
· На следующем шаге разработчик предстает в роли дизайнера. Подобно архитектору он создает структуру программного обеспечения.
· На 3 этапе он играет роль программиста.
· На 4 этапе клиент испытывает программное обеспечение и рассчитывается.
Самая важная фаза при составлении алгоритма - это анализ постановки проблемы и размышление о решении. Эта часть требует больше времени, чем собственно работа с каким-либо языком программирования.
В программировании необходимо заменять вербально представленный алгоритм командами языка. При этом проходят такие этапы, как кодирование, ввод данных, перевод и тестирование. Компилятор помогает нам находить синтаксические ошибки, однако логические ошибки в программе можно узнавать только с помощью размышлений и письменных тестов.