Войти на сайт

или
Регистрация

Навигация


1.      Предписание описывается конечными средствами.

2.         Оно однозначно установленным способом для введенных данных выдает точный результат.

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

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

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

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

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

Программа на языке ассемблера - это последовательность команд, которые состоят из 2-4 букв и к которым прибавляются адреса ячеек памяти. Например, команда ADD R2, R6 складывает содержимого ячейки памяти R2 и содержимого R6 и сохраняет сумму в R6.

Однако со временем недостатки программирования на ассемблере становились все более очевидными: зависимость от модели компьютера, изобретение различных «трюков» в связи с ограниченными возможностями языка, трудность исправления ошибок, неудобная форма работы для человека. Это вело, в том числе, к развитию так называемых "более высоких языков программирования", которые более удобны для человека.

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

1.3 Алгоритмические языки

В этом разделе автор исследует, какие свойства должны иметь языки, которые используются для описания алгоритмов (алгоритмические языки). Речь идет о нормированных языках, которые служат описанию алгоритмов. Здесь Юрген Плате отвечает на 2 основных вопроса:

·        Как можно нормировать язык?

·        Что требуется для описания алгоритмов?

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

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

"Более высокие" языки программирования как, например, BASIC, FORTRAN, Pascal или C разрабатывались, чтобы облегчить решение различных задач. Автор описывает разработчиков и назначение данных языков и особо останавливается на языках Pascal и C.

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

1.4 От проблемы до решения

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

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

·          На следующем шаге разработчик предстает в роли дизайнера. Подобно архитектору он создает структуру программного обеспечения.

·          На 3 этапе он играет роль программиста.

·          На 4 этапе клиент испытывает программное обеспечение и рассчитывается.

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

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

1.5 Развитие и изображение алгоритма

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

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

Выбор обозначается нелинейной последовательностью с ветвлением. Выбор пути решения зависит от условия.

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

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

Затем автором рассматриваются основные способы представления алгоритмов: вербальное описание, графические способы представления (логическая схема программы и структограммы).

1.6 Развитие программного обеспечения

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

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

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

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

1.7 Введение в структуры данных

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

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

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

Каждая переменная характеризуется своим именем и значением. Особое внимание Плате обращает на различие между распределением значений и уравнением в математическом смысле. Таким образом, математическое уравнение X = X + 1 не имеет решения, а в языке программирования эта запись значит, что “прибавляют 1 к значению X и сохраняют результат снова в X " или короче "Повышают X на 1".

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

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

·        Boolean – логический тип (принимает значения True или False).

·        Integer – тип целых чисел.

·        Character – символьный тип.

·        Real – тип действительных чисел.

Также он рассматривает структурные типы данных:

·        Feld (Array) - Поле (массив). Переменные величины этого типа содержат множество элементов одинакового стандартного типа.

·        Record (Structure) – Записи (связи). Содержат элементы различного типа и имеют каждый свое имя.

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

1.9 Обеспечение высокого качества разработки программ

Профессор определяет данное в заголовке понятие так:

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

Плате выделяет следующие признаки ПО, которые определяют его качество:

1.         Функциональность 2.         Надежность 3.         Пригодность к употреблению 4.         Эффективность 5.         Изменчивость 6.         Переносимость

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

1.         Тестирование ПО

    Тест «письменного стола» – в соответствии с поставленной задачей необходимо выбрать входные данные и рациональный ход решения.

    Тест «черного ящика» – функциональный тест, который рассматривает алгоритм в качестве черного ящика, в который нельзя заглянуть (проводит обычно покупатель).

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

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

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

Таким образом, разработка ПО включает в себя следующие этапы:

1.         Интуитивная разработка алгоритмов.

2.         Формализация алгоритма, математическое описание.

3.         Изображение алгоритмов структограммой. Разделение на модули и подпрограммы.

4.         Разрабатывают алгоритмов с помощью языка программирования высокого уровня.

5.         Кодирование.


2. Структура программы

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

Язык C был первоначально разработан как расширение для операционной системы UNIX, но впоследствии превратился в стандартный ЯП для разных платформ. Этому способствовало:

-    богатство операторов,

-    относительная машинная независимость,

-    возможная высокая мобильность,

-    небольшой языковой объем (только 32 ключевых слова),

-    много синтаксических возможностей в комбинации с упрощенными стилями.

2.1 Основные элементы программы на C

В этой главе автор знакомит нас с основными синтаксическими единицами языка С:

n Набор символов С-программы – это буквы, цифры, знаки, а также некоторые специфические элементы (пробел, предупреждение, возврат, табуляция)

n Разделители – пробелы, табуляторы, конец строки, перевод страницы, комментарии служат для разделения основных элементов языка

n Директива компилятора #include – подключает к компилятору файлы.

n Функции - из них состоит вся программа. Для каждой программы главной является функция Main, которая начинается с "{" и оканчивается "}".

n Стандартные библиотеки - стандартные функции предоставляются стандартными библиотеками.

n Ключевые слова имеют предопределенное значение, которое не может изменяться.

n Идентификаторы и имена – все объекты C имеют идентификаторы, которые состоят из последовательности букв, цифр или подчеркивания.

n Escape-последовательности – с помощью них записываются непечатаемые символы через "\".

2.2 Условные операторы

Автор знакомит нас с первой нелинейной структурой. Структура If…Else означает ветвление с переходом вперед. Здесь возможны два различных пути решения в зависимости от условия. Существует два вида этой структуры:

-    односторонний выбор - выполняет действие только на одном из путей разветвления и соединяет оба пути в один, т.е. if (Условное выражение) Инструкция;

-    двусторонний выбор – выполняет действия на каждом пути разветвления и также соединяет оба пути, т.е. if (Условное выражение) Инструкция1; else Инструкция2;

Далее автор рассматривает еще один вид условного оператора, выражаемого вопросительным знаком. Он имеет следующий вид:

Условное выражение ? Выражение1: Выражение2

Выражение с условием не может стоять в одиночестве, как в предыдущем ветвлении, а стоит внутри выражения.

Третья условная структура – многократный выбор switch..case. Автор показывает, что в этой структуре имеются больше чем 2 пути выбора, которые также соединяются. Для каждого условия обязательно существует своя инструкция. Для всех оставшихся случаев выполняется какое-то действие. Структура switch .. case имеет такой вид:

switch (Выражение)

{

case W1: Инструкция 1;

 ...;

 case Wn: Инструкция n;

 default: Инструкция (по умолчанию);

 }

2.3 Циклические операторы

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

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

while (Условные выражения) Инструкции;

Следующая циклическая структура – повторение for представляет самую универсальную форму повторения. Команда имеет следующий вид:

for (Выражение 1; Выражение 2; Выражение 3)Команда;

где Выражение 1 – начальное значение выражения, Выражение 2 – условное выражение, которое должно выполниться для выполнения команд, Выражение 3 – изменяет счетную величину для продолжения повторения.

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

Do

Инструкция;

while (Условное выражение);

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



Информация о работе «Алгоритмы и структуры данных. Программирование в Cи»
Раздел: Информатика, программирование
Количество знаков с пробелами: 61871
Количество таблиц: 4
Количество изображений: 0

Похожие работы

Скачать
29246
1
2

... , которая определяет последовательность действий над некоторыми объектами и после конечного числа шагов приводит к по лучению требуемого результата. ЭВМ — исполнитель алгоритмов. Обсуждение методических вопросов изучения темы «Алгоритмы работы с величинами» буде проводить в программистском аспекте. Составление любой программы для ЭВМ начинается с построения алгоритма. Как известно, всякий ...

Скачать
29193
3
0

... профессором Н. Виртом, язык назван в честь французского математика и по замыслу автора предназначался для обучения программированию. Однако язык получился на столько удачным, что стал одним из основных инструментов прикладных и системных программистов при решении задач вычислительного и информационно-логического характера. В 1979 году был подготовлен проект описания языка – Британский стандарт ...

Скачать
17900
0
0

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

Скачать
9572
0
0

... процедуры и функция (программирование) функции макросы * глобальная переменная глобальные переменные * класс программирование классы * Обобщённое программирование шаблоны Обычно стандартная библиотека содержит основные алгоритмы и структуры данных, необходимые для: * работы с динамически распределяемая память динамической памятью * файловыми операциями ввода-вывода * операциями ввода- ...

0 комментариев


Наверх