- •1 Алгоpитм — заранее заданное понятное и точное пpедписание возможному исполнителю совеpшить определенную последовательность действий для получения решения задачи за конечное число шагов.
- •2 Методика разработки алгоритмов
- •3 Предпосылки и назначение структурного программирования.
- •6 Оператор - это составная часть программы, фраза алгоритмического языка, предписывающая определённый порядок преобразования информации.
- •11. Основные идеи объектно-ориентированного подхода опираются на следующие положения:
- •14. Основные понятия и определения
3 Предпосылки и назначение структурного программирования.
Традиционная технология программирования формировалась на заре
вычислительной техники, когда в распоряжении пользователей были
ограниченные ресурсы ЭВМ, а разработчик программ был в то же время и
главным ее пользователем. В этих условиях главное внимание обращалось на
получение эффективных программ в смысле оптимального использования ресурсов
ЭВМ.
В настоящее время, когда сфера применения ЭВМ чрезвычайно расширилась,
разработка и эксплуатация программ осуществляется, как правило, разными
людьми. Поэтому наряду с эффективностью на первый план выдвигаются и другие
важные характеристики программ такие, как понятность, хорошая
документированность, надежность, гибкость, удобство сопровождения и т.п.
Проблема разработки программ, обладающих такими качествами, объясняется
трудоемкостью процесса программирования и связанным с этим быстрым ростом
стоимости программного обеспечения.
Для создания "хорошей" программы появляется необходимость
придерживаться определенных принципов или определенной дисциплины
программирования. Значительный прогресс в области программирования
достигается с использованием так называемого структурного программирования.
Появление новой технологии, или, как еще говорят, дисциплины
программирования, основанной на структурном подходе, связано с именем
известного голландского ученого Э.Дейкстры (1965 г.). В своих работах он
высказал предположение, что оператор GOTO может быть исключен из языков
программирования и что квалификация программиста обратно пропорциональна
числу операторов GOTO в его программах. Такая дисциплина программирования
упрощает и структуризирует пограмму.
Однако представление о структурном программировании, как о
программировании без использования оператора GOTO, является ошибочным.
Например, Хоор определяет структурное программирование как "систематическое
использование абстракции для управления массой деталей и способ
документирования, который помогает проектировать программу".
Структурное программирование можно толковать как "проектирование,
написание и тестирование программы в соответствии с заранее определенной
дисциплиной".
Структурный подход к программированию как раз и имеет целью снижение
трудоемкости всего процесса создания программного обеспечения от
технического задания на разработку до завершения эксплуатации. Он означает
необходимость единой дисциплины на всех стадиях разработки программы. В
понятие структурного подхода к программированию обычно включают нисходящие
методы разработки программ (принцип «сверху вниз»), собственно структурное
программирование и так называемый сквозной структурный контроль.
Основной целью структурного программирования является уменьшение
трудностей тестирования и доказательства правильности программы. Это
особенно важно при разработке больших программных систем. Опыт применения
методов структурного программирования при разработке ряда сложных
операционных систем показывает, что правильность логической структуры
системы поддается доказательству, а сама программа допускает достаточно
полное тестирование. В результате в готовой программе встречаются только
тривиальные ошибки кодирования, которые легко исправляются.
Структурное программирование улучшает ясность и читабельность программ.
Программы, которые написаны с использованием традиционных методов, особенно
те, которые перегружены операторами GOTO, имеют хаотичную структуру.
Структурированные программы имеют последовательную организацию, поэтому
возможно читать такую программу сверху донизу без перерыва.
Наконец, структурное программирование призвано улучшить эффективность
программ. Язык программирования содержит подобные элементы, только слова называют элементарными конструкциями, словосочетания — выражениями, предложения — операторами. Символы, элементарные конструкции, выражения и операторы составляют иерархическую структуру, поскольку элементарные конструкции образуются из последовательности символов, выражения — это последовательность элементарных конструкций и символов, а оператор — последовательность выражений, элементарных конструкций и символов. Символы языка — это основные неделимые знаки, в терминах которых пишутся все тексты на языке.
Элементарные конструкции — это минимальные единицы языка, имеющие самостоятельный смысл. Они образуются из основных символов языка.
Выражение в языке программирования состоит из элементарных конструкций и символов, оно задает правило вычисления некоторого значения.
Оператор задает полное описание некоторого действия, которое необходимо выполнить. Для описания сложного действия может потребоваться группа операторов. В этом случае операторы объединяются в составной оператор, или блок.
Действия, заданные операторами, выполняются над данными. Предложения языка программирования, в которых даются сведения о типах данных, называются описаниями или неисполняемыми операторами.
Объединенная единым алгоритмом совокупность описаний и операторов образует программу на языке программирования. Алфавит – набор символов, используемых для записи конструкций языка в программе. Язык состоит из синтаксиса и семантики.
Синтаксис – это набор правил написания языковых конструкций.
Семантика – набор правил, определяющих последовательность действий компьютера при выполнении синтаксических конструкций языка. Комментарии в C++ предназначены для удобства чтения программы и содержат пояснения к тексту инструкций. Они игнорируются транслятором и обозначаются в программе следующими символами:
// в любом месте строки, действителен до конца строки
Переменные играют важнейшую роль в системах программирования. Понятие «переменная» в языках программирования отличается от общепринятого в математике. Переменная - это программный объект, способный принимать некоторое значение с помощью оператора присваивания. В ходе выполнения программы значения переменной могут неоднократно изменяться. Каждая переменная после ее описания отождествляется с некоторой ячейкой памяти, содержимое которой является ее значением.
4 Время жизни - это интервал времени выполнения программы, в течение которого программный объект (переменная или функция) существует. Время жизни переменной может быть локальным или глобальным. Переменная с глобальным временем жизни имеет распределенную для нее память и определенное значение на протяжении всего времени выполнения программы, начиная с момента выполнения объявления этой переменной. Переменная с локальным временем жизни имеет распределенную для него память и определенное значение только во время выполнения блока, в котором эта переменная определена или объявлена.
Объявление переменных
объявить можно переменную любого действительного типа. Важно подчеркнуть, что возможности переменной определяются ее типом. Например, переменную типа bool нельзя использовать для хранения числовых значений с плавающей точкой. Кроме того, тип переменной нельзя изменять в течение срока ее существования. В частности, переменную типа int нельзя преобразовать в переменную типа char.
Все переменные в С# должны быть объявлены до их применения. Это нужно для того, чтобы уведомить компилятор о типе данных, хранящихся в переменной, прежде чем он попытается правильно скомпилировать любой оператор, в котором используется переменная. Это позволяет также осуществлять строгий контроль типов в С#.
в VB6, переменные объявляются в процедурах и функциях при помощи ключевых слов Dim и As, а присваивание выполняется знаком =:
Инициализация переменной
Задать значение переменной можно, в частности, с помощью оператора присваивания. Кроме того, задать начальное значение переменной можно при ее объявлении. Для этого после имени переменной указывается знак равенства (=) и присваиваемое значение. Если две или более переменные одного и того же типа объявляются списком, разделяемым запятыми, то этим переменным можно задать, например, начальное значение. Ниже приведена общая форма инициализации переменной: нициализация переменных демонстрирует пример обеспечения безопасности С#. Коротко говоря, компилятор С# требует, чтобы любая переменная была инициализирована некоторым начальным значением, прежде чем можно было обратиться к ней в какой-то операции. В большинстве современных компиляторов нарушение этого правила определяется и выдается соответствующее предупреждение, но "всевидящий" компилятор С# трактует такие нарушения как ошибки. Это предохраняет от нечаянного получения значений "мусора" из памяти, оставшегося там от других программ.
В С# используются два метода для обеспечения инициализации переменных перед пользованием:
Переменные, являющиеся полями класса или структуры, если не инициализированы явно, по умолчанию обнуляются в момент создания.
Переменные, локальные по отношению к методу, должны быть явно инициализированы в коде до появления любого оператора, в котором используются их значения. В данном случае при объявлении переменной ее инициализация не происходит автоматически, но компилятор проверит все возможные пути потока управления в методе и сообщит об ошибке, если обнаружит любую возможность использования значения этой локальной переменной до ее инициализации.
область видимости, или контекст переменной — это часть кода, в пределах которого доступна данная переменная. В общем случае такая область определяется описанными ниже правилами:
Поле, также известное как переменная-член класса, находится в области видимости до тех пор, пока в этой области находится содержащий поле класс.
Локальная переменная находится в области видимости до тех пор, пока закрывающая фигурная скобка не укажет конец блока операторов или метода, в котором она объявлена.
Локальная переменная, объявленная в операторах цикла for, while или подобных им, видима в пределах тела цикла.
оператор присваивания обозначается одиночным знаком равенства (=). В С# оператор присваивания действует таким же образом, как и в других языках программирования. Ниже приведена его общая форма:
имя _переменной = выражение
5 Тип переменной задает вид того значения, которое ей присваивается и правила, по которым операторы языка действуют с переменной.
BYTE целое число от 0 до 255, занимает одну ячейку памяти (байт).
BOOLEAN логическое значение (байт, заполненный единицами, или нулями), true, или false.
WORD целое число от 0 до 65535, занимает два байта.
INTEGER целое число от –32768 до 32767, занимает два байта.
LONGINT целое число от –2147483648 до 2147483647, занимает четыре байта.
REAL
число с дробной частью от 2.9*10-39.до 1.7*1038, может принимать и отрицательные значения, на экран выводится с точностью до 12-го знака после запятой, если результат какой либо операции с REAL меньше, чем 2.9*10-39, он трактуется как ноль. Переменная типа REAL занимает шесть байт.
DOUBLE
число с дробной частью от 5.0*10-324.до.1.7*10308, может принимать и отрицательные значения, на экран выводится с точностью до 16-го знака после запятой ,если результат какой либо операции с DOUBLE меньше, чем 5.0*10-324, он трактуется как ноль. Переменная типа DOUBLE занимает восемь байт.
CHAR символ, буква, при отображении на экран выводится тот символ, код которого хранится в выводимой переменной типа CHAR, переменная занимает один байт.
STRING строка символов, на экран выводится как строка символов, коды которых хранятся в последовательности байт, занимаемой выводимой переменной типа STRING; в памяти занимает от 1 до 256 байт – по количеству символов в строке, плюс один байт, в котором хранится длина самой строки.
Константы, так же как и переменные, представляют собой область памяти для хранения данных, с тем лишь отличием, что значение, присвоенное константе первоначально, не может быть изменено на протяжении выполнения всей программы. Константы бывают литеральными и типизованными, причем литеральные константы делятся на символьные, строковые, целые и вещественные.
Символьные константы представляются отдельным символом, заключенным в одинарные кавычки (апострофы): 'е', '@', '<'.
Строковые константы - это последовательность символов, заключенная в двойные кавычки: "Это пример не самой длинной строковой константы!".
Целые константы бывают следующих форматов:
¦ десятичные;
¦ восьмеричные;
¦ шестнадцатеричные.
Десятичные могут быть представлены как последовательность цифр, начинающаяся не с нуля, например: 123; 2384.
Восьмеричные константы - последовательность восьмеричных цифр (от 0 до 7), начинающаяся с нуля, например: 034; 047.
Шестнадцатеричный формат констант начинается с символов Ох или ОХ с последующими шестнадцатеричными цифрами (0...9, A...F), например: 0xF4; 0X5D. Буквенные символы при этом могут быть представлены в как в нижнем, так и в верхнем регистре.
Длинные целые константы, используемые в переменных типа long, определяются латинской буквой I или L сразу после константы без пробела: 36L, 012L, 0x52L.
Вещественные константы - числа с плавающей запятой могут быть записаны в десятичном формате (24.58; 13.0;.71) или в экспоненциальной форме (1е4; 5е+2; 2.2е-5, при этом в мантиссе может пропускаться целая или дробная часть:.2е4).
Типизованные константы используются как неременные, значение которых не может быть изменено после инициализации.
Типизованная константа объявляется с помощью ключевого слова const, за которым следует указание типа константы, но, в отличие от переменных, константы всегда должны быть инициализированы.
