Реферат: Алгоритм и его свойства
Алгоритм и его свойства
Алгоритм – «точное предписание, определяющее вычислительный процесс, ведущий от варьируемых начальных данных к искомому результату» (ГОСТ 19.781-74).
Свойства алгоритма:
1. Определенность – алгоритм должен быть однозначным, исключающим произвольность толкования любого из предписаний и заданного порядка исполнения.
2. Результативность – реализация вычислительного процесса должна через определенное число шагов привести к выдаче результатов или сообщения о невозможности решения задачи.
3. массовость – решение однотипных задач с различными исходными данными можно осуществлять по одному и тому же алгоритму, что дает возможность создавать типовые программы для решения задач при различных вариантах задания значений исходных данных.
4. Дискретность – предопределенный алгоритмом вычислительный процесс можно расчленить на отдельные этапы, элементарные операции.
Алгоритмизация – техника составления алгоритмов и программ для решения задач на ЭВМ.
^ Изобразительные средства для описания алгоритмов
К изобразительным средствам описания алгоритмов относятся следующие основные способы их представления:
а) словесный (записи на естественном языке);
б) структурно-стилизованный (записи на языке псевдокода);
в) программный (тексты на языках программирования);
г) графический (схемы графических символов).
^ Словесный способ записи алгоритмов представляет собой описание последовательных этапов обработки данных и задается в произвольном изложении на естественном языке. Способ основан на использовании общепринятых средств общения между людьми и, с точки зрения написания, трудностей для авторов алгоритмов не представляет. Однако для "исполнителей" такие описания алгоритмов часто неприемлемы. Они строго не формализуемы, страдают многословностью записей, допускают неоднозначность толкования отдельных предписаний. Поэтому такой способ описания алгоритмов не имеет широкого распространения.
Пример. Записать алгоритм нахождения наибольшего общего делителя двух натуральных чисел (m и n) на естественном языке.
При таком словесном способе содержание алгоритма может быть следующим:
если числа равны, то необходимо взять любое из них в качестве ответа, в противном случае – продолжить выполнение алгоритма;
определить большее из чисел;
заменить большее число разностью большего и меньшего чисел;
повторить алгоритм с начала.
Структурно-стилизованный способ записи алгоритмов основан на формализованном представлении предписаний, задаваемых путем использования ограниченного набора типовых синтаксических конструкций. Такие средства описания алгоритмов часто называются псевдокодами. Разновидностью структурно-стилизованного способа описания алгоритмов является известный школьникам алгоритмический язык в русской нотации (АЯРН).
Пример. Приведем описанный на АЯРН алгоритм решения задачи об определении принадлежности точки D треугольнику ABC.
алг Определение принадлежности точки треугольнику (действ хA, уA, хB, уB, хC, уC, xD, yDцелое z лит а);
арг хA, yA, xB, yB, xC, yC, xD, yD;
рез z.а;
нач
действ S1, S2, S3, S4
вычислить значение S1, равное площади тр-ка ABC;
вычислить значение S2, равное площади тр-ка ABD;
вычислить значение S3, равное площади тр-ка ACD;
вычислить значение S4, равное площади тр-ка CDB;
если S1 = S2+S3+S4
то z := 1,
а := "точка внутри треугольника",
иначе z := 0,
а := "точка вне треугольника",
все
напечатать значение а:
кон
^ Программный способ записи алгоритмов – это алгоритм, записанный на языке программирования, позволяющем на основе строго определенных правил формировать последовательность предписаний, однозначно отражающих смысл и содержание частей алгоритма с целью их последующего исполнения на ЭВМ.
Пример. Программа на языке Бейсик перевода температуры из градусов Цельсия в градусы Фаренгейта.
PRINT "Перевод температуры из град. Цельсия в град. Фаренгейта" PRINT "Укажите температуру в град. Цельсия"
INPUT С
IF С = 9999 THEN 7
F = C*1.8 +32
^ PRINT С, F
GOTO 6
END
Для графического изображения алгоритмов используются графические символы. Наиболее распространенными являются блочные символы (блоки), соединяемые линиями передач управления. Существует государственный стандарт на выполнение графической записи алгоритма. Графическая запись алгоритма является наиболее наглядной. Перечень условных графических символов, их наименования, форма, размеры и отображаемые функции устанавливаются ГОСТ 19.003-80.
Схемы могут быть представлены также в виде структограмм или по имени их авторов, диаграммами Нэсси-Шнейдермана.
На рис. 1 приведена схема алгоритма перевода температуры из шкалы Цельсия в шкалу Фаренгейта. Перевод осуществляется по формуле:
Температура по Фаренгейту = (температура по Цельсию)180/100 +32.
^ Схемы алгоритмов
Использование схем позволяет представить алгоритм в наглядной форме, поэтому они наиболее часто используются.
Вычислительный блок представляет собой прямоугольник, в котором записываются расчетные формулы. Причем формула должна быть записана таким образом, что вычисляемая переменная записывается слева, далее идет знак равенства (в данном случае этот знак называется присваиванием), далее – расчетная формула.
Рис. 1. Схема и структограмма перевода температуры из шкалы Цельсия в шкалу Фаренгейта
Проверка условия изображается ромбом, внутри которого записывается это условие. Б результате проверки выбирается один из двух возможных путей вычислительного процесса.
Если условие выполняется, то есть имеет значение ДА, то следующим выполняется этап по стрелке ДА. Если условие не выполняется, то осуществляется переход по стрелке НЕТ.
Начало и конец вычислительного процесса изображаются овалом, в котором записываются слова "Начало" или "Останов".
При решении задач на ЭВМ исходные данные задаются при вводе в машину. ^ Ввод данных может осуществляться разными способами, например, с клавиатуры, с перфоленты, с диска и т. д. Задание численных значений исходных данных мы будем называть вводом, а фиксацию результатов расчета – выводом. Ввод исходных данных и вывод результатов изображаются параллелограммом. Внутри него пишется слово "Ввод" или "Вывод" и перечисляются переменные, подлежащие вводу или выводу.
Параллелограммом обозначается ввод-вывод, не привязанный к какому-либо конкретному устройству. Если ввод или вывод осуществляется с использованием конкретных устройств, то блоки ввода-вывода изображаются с помощью специальных фигур.
Комментарий используется в тех случаях, когда пояснение не помещается внутри блока.
По стандарту высота блока равна а, ширина 2а, где размер а выбирается из ряда 10, 15, 20 мм. Блоки "начало" и "конец" имеют высоту 0,5а.
Линии потока проводят параллельно внешним краям рамки листа. Направление линий потока сверху вниз и слева направо принимают за основное; если линии потока основного направления не имеют изломов, то их направление стрелками можно не обозначать. В остальных случаях направление линий потока обозначать стрелкой обязательно. Записи внутри символа или рядом с ним должны выполняться машинописью или чертежным шрифтом и должны быть краткими. В левом верхнем углу в разрыве линий ставится номер блока.
В настоящее время основная тенденция в использовании схем алгоритмов состоит не столько в указании последовательности операций, сколько в группировании блочных символов в виде базовых управляющих конструкций. К ним относятся следование, ветвление и повторение. Основные структуры алгоритмов – это ограниченный набор блоков и стандартных способов их соединения для выполнения типичных последовательностей действий, Такие структуры рекомендуются при использовании так называемого структурного подхода к разработке алгоритмов и программ. Структурный подход предполагает использование только нескольких основных структур, комбинация которых дает все многообразие алгоритмов и программ.
^ Алгоритмы линейной структуры
Алгоритм линейной структуры (следование) – алгоритм, в котором все действия выполняются последовательно друг за другом. Такой порядок выполнения действий называется естественным.
Задача 1. Определить площадь треугольника по формуле Герона
, где а, b, с – длины сторон; р = (а + b + с)/2 – полупериметр треугольника.
Для того чтобы рассчитать ^ S, необходимо иметь численные значения р, а, b, с. Мы можем рассчитать р по формуле, а вот значения а, b, с должны быть заданы заранее, иначе задачу решить невозможно.
Запишем словесный алгоритм.
Задать численные значения а, b, с.
Вычислить р по формуле:
р = (а + b + c)/2.
3. Вычислить S по формуле:
.
4. Зафиксировать результат.
Рис. 2. Схема алгоритма линейной структуры
Схема представляет собой последовательность блоков, соединенных линиями потоков. Направление потока задается стрелкой, но стрелка не ставится, если направление потока сверху вниз и слева направо. В левом верхнем углу в разрыве линий ставится номер блока.
Внутри блока ввода записывается слово "Ввод" и перечисляются исходные данные (имена переменных), которые задаются извне. Внутри блока вывода записывается слово "Вывод" и перечисляются переменные, которые являются результатом расчета.
^ Алгоритмы разветвляющейся структуры
На практике редко удается представить схему алгоритма решения задачи в виде линейной структуры. Часто в зависимости от каких-либо значений промежуточных результатов необходимо организовать вычисление либо по одним, либо по другим формулам. Ветвление – такая схема, в которой предусмотрено разветвление указанной последовательности действий на два направления в зависимости от итога проверки заданного условия. В схемах такой структуры используется логический блок (рис. 3).
Задача 2.
Рассчитать Y.
^ Разработка алгоритма. В этой задаче должно быть задано X. Далее анализируется X. Если Х<0, то вычисления производятся по первой формуле, если это условие не выполняется, то выполняется второе условие X > 0, так как условия Х<0 и X > 0 взаимоисключающие, и Y вычисляется по второй формуле.
Словесный алгоритм решения этой задачи будет выглядеть следующим образом.
Задать численное значение для X.
Проверить условие Х<0:
если условие выполняется перейти к п. 5; если условие не выполняется перейти к п. 3.
Вычислить Y по формуле Y = X2.
Перейти к пункту 6.
Вычислить Y по формуле Y = -X.
Зафиксировать вычисленное Y.
Схема данного алгоритма представлена на рис. 3.
Рекомендуется под словом "нет" записывать условие, противоположное проверяемому.
Рис. 3. Схема алгоритма разветвляющейся структуры
^ Алгоритмы циклической структуры
Алгоритмы, отдельные действия в которых многократно повторяются, называются алгоритмами циклической структуры (повторение). Совокупность действий алгоритма, связанную с повторением, называют циклом.
Приведем пример схемы алгоритма циклической структуры.
Задача 3. Вычислить множество значений функции Y = X2 + b для всех значений X от –10 до 10 с шагом 2, при b = 5.
Разработка алгоритма. Значения Y необходимо вычислить 11 раз, то есть необходимо 11 раз выполнить алгоритм линейной структуры.
Задание ^ X можно автоматизировать, организовав цикл. Для этого необходимо задать начальное значение X, т.е. X = –10. Далее рассчитать Y по формуле, вывести численное значение Y, изменить X и вернуться к расчету Y.
Тогда схема будет выглядеть следующим образом (рис. 4).
Рис. 4.
На рис. 10 представлена схема алгоритма циклической структуры. Блоки 3, 4, образующие тело цикла, повторяются многократно. Сколько раз? Бесконечное количество. При каждом расчете к предыдущему значению X прибавляется 2, далее следует возврат к расчету Y, вывод Y и опять X изменяется на 2. По условию задачи расчетом Y при X = 10 нужно ограничиться. Следовательно, необходимо включить условие окончания расчетов. До тех пор, пока X < 10, расчеты производить; как только X станет больше 10 – вычисления закончить. В схему включим логический блок.
Рис. 5. Схема алгоритма циклической структуры
Рис.6.
В блоке 2 осуществляется задание начального значения для X. В блоке 3 рассчитываются значения ^ Y. В блоке 5 фиксируется текущее значение X с заданным шагом. В блоке 6 анализируется величинах. Если X еще не превысил своего конечного значения, то необходимо вернуться к блоку 3 и повторить вычисления. Если X стал больше предельного значения, расчеты нужно закончить.
Чтобы алгоритм стал более универсальным, начальное значение Хн, конечное значение Хк и шаг изменения Х зададим в блоке ввода (рис. 6)р
Вуичина, с измененевткоторой связано многократное выполнение цикла, называется параметром цикла. В нашем примере это X. Блоки 4, 5 – тело цикла. Блок 3 представляет собой подготовку цикла. Блок 6 – изменение параметра цикла (подготовка очередного шага), а блок 7 – условие продолжения цикла.
Представим схемы циклов в общем виде.
Такая циклическая структура называется циклом "До" (рис. 7). Особенность этого цикла состоит в том, что он выполняется хотя бы один раз, так как первая проверка условия выхода из цикла происходит после того, как тело цикла выполнено.
Существует еще цикл "Пока" (рис. 8).
Цикл "Пока" отличается от цикла "До" тем, что здесь проверка условия проводится до выполнения тела цикла. Если при первой проверке условие выхода из цикла выполняется, то тело цикла не выполняется ни разу.
^ ТУРБО ПАСКАЛЬ – ЯЗЫК ВЫСОКОГО УРОВНЯ
Системы программирования
При наличии десятков тысяч прикладных программ часто приходится сталкиваться с ситуацией, когда существующие программы не удовлетворяют или делают что-то недостаточно быстро или неэффективно. В этой ситуации единственный выход – написание собственной программы.
По природе своей компьютер может выполнять только простейшие операции, которые можно вводить одну за другой в его память прямо в машинных кодах. Изнурительная монотонность такой работы привела когда-то первых программистов к единственному решению - созданию ассемблеров, т. е. средств, упрощающих подготовку машинных кодов программ пользователей за счет написания их в некоторых мнемонических обозначениях с последующим автоматическим переводом. Дальнейшее развитие этих идей привело к созданию языков программирования высокого уровня, в которых длинные и сложные последовательности машинных операций были заменены одним единственным обозначающим их словом – оператор.
Специальные программы обеспечивают опосредованное "понимание" вычислительной машиной других языков программирования путем перевода текстов, составленных на этих языках, в тексты на машинном языке.
Под системой программирования понимают совокупность языка программирования и виртуальной машины, обеспечивающей выполнение реальной машиной программ, составленных на этом языке.
^ Языком программирования называют систему обозначений для точного описания алгоритмов для ЭВМ. Эти языки являются искусственными языками со строго определенным синтаксисом (строение предложения и правила сочетания слов) и семантикой (смысловое значение слов и оборотов речи), поэтому они не допускают свободного толкования конструкций, характерного для естественного языка (языка общения между людьми).
^ Виртуальная машина – это программный комплекс, связывающий входной язык ЭВМ с другим, машинным языком. Виртуальная машина содержит транслятор и/или интерпретатор и может включать библиотеки подпрограмм, отладчик, компоновщик и другие сервисные средства.
Транслятор представляет собой программу, осуществляющую перевод текстов с одного языка на другой. В системе программирования транслятор переводит программу с входного языка этой системы на машинный язык реальной ЭВМ (на которой функционирует данная система программирования или будет функционировать разрабатываемая программа) либо на промежуточный язык программирования, уже реализованный или подлежащий реализации. Одной из разновидностей транслятора является компилятор, обеспечивающий перевод программ с языка высокого уровня (приближенного к человеку) на язык более низкого уровня (близкий к ЭВМ), или машинозависимый язык. Другая разновидность транслятора – ассемблер, осуществляющий перевод программ с языка низкого уровня (языка Ассемблера) на машинный язык, имеющий примерно тот же уровень. Некоторые трансляторы служат для переноса программ с одной машины на другую. Программа, подающаяся на вход транслятора, называется исходной, а результат трансляции – объектной программой.
Диаметрально противоположными характеристиками обладает альтернативное средство реализации языка – интерпретатор. Интерпретатор представляет собой программный продукт, выполняющий предъявленную программу путем одновременного ее анализа и реализации предписанных ею действий. При использовании интерпретатора отсутствует разделение на две стадии (перевод и выполнение) и, более того, отсутствует явный перевод программы даже по частям перед очередным этапом выполнения. В действительности же распознается очередная конструкция программы и интерпретатором выполняются определяемые ею действия. После этого процессы анализа и реализации предписанных действий циклически повторяются.
Возможны и смешанные стратегии реализации языков программирования, например, трансляция на промежуточный язык с последующей интерпретацией промежуточной программы.
Программа на языке программирования состоит из последовательности операторов (инструкций), задающих те или иные действия. Основным является оператор присваивания, служащий для изменения содержимого областей памяти.
Выполнение программы сводится к последовательному выполнению операторов с целью преобразования исходного состояния памяти (т.е. значений переменных) в заключительное. Таким образом, с точки зрения программиста имеется программа и память, причем первая последовательно обновляет содержание последней.
Одним из важнейших классификационных признаков процедурных языков является их уровень. ^ Уровень языка программирования определяется семантической (смысловой) емкостью его конструкций и его ориентацией на программиста-человека. Язык программирования (частично) ликвидирует семантический разрыв между методами решения задач машиной и человеком. Языки программирования, не зависящие от особенностей конкретной машины и ориентированные на широкий круг пользователей, считаются языками высокого уровня (по отношению к уровню машинных команд ЭВМ). Чем более язык ориентирован на программиста, тем выше его уровень.
^ Двоичный язык является не чем иным, как непосредственно машинным языком. В настоящее время такие языки программистами не применяются.
0>Шестнадцатиричный язык обеспечивает некоторое упрощение записи программы на машинном языке путем представления четырех двоичных цифр одной шестнадцатиричной. Этот язык используется в качестве дополнения к языкам высокого уровня, таким как Паскаль или СИ, для программирования критичных к времени выполнения фрагментов алгоритмов.
^ Язык Ассеблера – это язык, предназначенный для представления в удобочитаемой форме программ, записанных на машинном языке. Он позволяет программисту пользоваться мнемоническими кодами операций, по своему усмотрению присваивать символические имена регистрам ЭВМ и ячейкам памяти, а также задавать наиболее удобные в том или ином контексте схемы адресации. Кроме того, язык Ассемблера обеспечивает представление констант в различных системах счисления (например, в десятичной или шестнадцатиричной).
^ Язык Макроассемблера является расширением языка Ассемблера за счет включения макросредств и предоставляет средства определения и использования новых, более мощных команд как последовательностей базовых инструкций, что несколько повышает его уровень.
Языки Ассемблера и Макроассемблера применяются системными программистами-профессионалами с целью использования всех возможностей оборудования ЭВМ и получения эффективной, как по времени выполнения, так и по потребному объему памяти, программы.
Приведем краткий перечень наиболее распространенных языков программирования высокого уровня, которые имеют преимущественное распространение в настоящее время, причем имеют по несколько версий.
Бейсик представляет собой простой язык программирования, разработанный в 1964 году для использования новичками. Работа в среде Бейсика первоначально велась только в режиме интерактивной (диалоговой) интерпретации. В настоящее время имеются и компиляторы с этого языка. В этом языке широко используются разного рода умолчания, что считается плохим тоном в большинстве современных языков. Несмотря на это, Бейсик очень популярен, в особенности на ПЭВМ. Существует множество его диалектов. Бейсик является одним из наиболее динамичных языков. Не без оснований этот язык иногда сравнивают с питоном, заглатывающим и переваривающим все новое, что появляется в других языках программирования. Уровень Бейсика нельзя определить однозначно. Современные диалекты весьма развиты и мало чем напоминают своего предка.
Язык Фортран был разработан в 1956 году, затем появились новые его версии Фортран-II, Фортран-IV, Фортран-66, Фортран-77, Фортран-8х, Фортран-88. В свое время этот язык был поистине "рабочей лошадью" научных работников и широко используется в настоящее время, несмотря на его ограниченность и корявость. Он предоставляет пользователям большие возможности для обработки числовых данных, особенно комплексных чисел. Еще в версии Фортран-II впервые была реализована идея раздельной компиляции модулей, что дало возможность создавать библиотеки научных подпрограмм.
Язык программирования СИ первоначально разработан в 70-х годах. В настоящее время в СИ сочетаются достоинства современных высокоуровневых языков и возможность доступа к аппаратным средствам машины на уровне, который обычно ассоциируется с языком Ассемблера. СИ имеет синтаксис, обеспечивающий чрезвычайную краткость программ, а компиляторы, вследствие особенностей языка, способны генерировать быстрые и эффективные программы на машинном коде.
Язык программирования APL создан в 1969 году. К числу его основных преимуществ относятся богатый набор мощных операторов, позволяющих работать с многомерными массивами как с единым целым, а также предоставление пользователю возможности определять собственные операторы. Основное его назначение – обработка массивов.
FORTH – гибкий и достаточно простой язык, разработанный в 1971 году. Важная его особенность - открытость (расширяемость). Программист может добавлять новые операции, типы данных и операторы. Последнее достигается путем связывания любой строки программы с заданным программистом словом, которое затем может использоваться наравне со стандартными операторами. Однако расширение языка ведет к снижению эффективности.
^ Характеристика языка программирования Паскаль
Одним из наиболее популярных языков программирования является язык Паскаль. Первая версия языка программирования Паскаль была разработана на кафедре информатики Стэнфордского университета швейцарским ученым Никлаусом Виртом в 1968 году, и названа в честь французского ученого Блеза Паскаля. Прошло много времени с момента появления Паскаля на рынке программных продуктов, прежде чем он получил всеобщее признание вследствие разработки языка программирования Турбо Паскаль (ТП) – диалекта языка, созданного американской фирмой Борланд. Эта фирма объединила очень быстрый компилятор с редактором текста и добавила к стандартному Паскалю мощное расширение, что способствовало успеху первой версии этого языка. С тех пор Турбо Паскаль значительно расширился. Появились новые графические процедуры, возможность использования при написании программ языка программирования низкого уровня Ассемблер, возможность создавать объектно-ориентированные программы и многое другое. В лингвистической концепции Паскаля пропагандируется системный подход, выражающийся, в частности, в расчленении крупных проблем на меньшие по сложности и размеру задачи, легче поддающиеся решению Набор операторов стандартного Паскаля относительно мал и легко изучаем. Но это порождает проблему расширения языка в приложениях. В Турбо Паскале эта проблема решается за счет поставок большого количества библиотек разнообразных процедур, готовых к употреблению в прикладных программах.
Влияние Паскаля ощущается в настоящее время в разных языках программирования. Так, среди новых диалектов Бейсика есть Паскаль с символикой Бейсика. Даже в язык СИ встраивается все больше элементов, порожденных Паскалем.
С момента создания первой версии языка Паскаль прошло много времени и язык значительно преобразился, но тем не менее стандартный Паскаль является основой более поздних версий Турбо Паскаля. В дальнейшем в описании языка будут встречаться оба эти названия. Будем использовать название Паскаль, если утверждение верно и в стандартном Паскале и в Турбо, а Турбо Паскаль, если в последних версиях имеются отличия. При изучении сложных конструкций языка имеет смысл говорить только о Турбо Паскале.
^ Алфавит языка Паскаль
Любой естественный язык состоит из нескольких основных элементов: символов, слов, словосочетаний и предложений. В алгоритмическом языке программирования имеются аналогичные структурные элементы: символы, слова, выражения (словосочетания) и операторы (предложения). При этом слово образуется из последовательности символов, выражение представляет собой группу слов, а оператор – определенную комбинацию слов и выражений.
Язык программирования Паскаль, как и любой другой, имеет свой алфавит. ^ Алфавитом языка программирования называют набор символов (разрешенный к использованию и воспринимаемый компилятором), с помощью которого могут быть образованы величины, выражения и операторы данного языка. Алфавит языка Паскаль включает в себя все символы, представленные в кодировочной таблице, которая в настоящий момент загружена в оперативную память или хранится в ПЗУ компьютера. Каждому символу алфавита соответствует индивидуальный числовой код от 0 до 255. Символы с кодами от 0 до 127 представляют собой так называемую основную таблицу кодов ASCII. Их состав и порядок определены американским стандартом на коды обмена информацией (идентичны для всех IBM-совместимых компьютеров).
Символы, используемые для составления идентификаторов:
латинские строчные и прописные буквы,
арабские цифры от 0 до 9,
символ подчеркивания (в Турбо Паскале).
Символы разделители:
пробел, основное назначение которого разделение ключевых слов и имен,
- управляющие символы (ASCII - коды от 0 до 31). Эти символы могут применяться при описании строчных и символьных констант. Управляющие символы с ASCII – кодом 9 (табуляция), а также 10 и 13 (замыкающее строку) используются в качестве разделителей при написании программ.
^ Специальные символы, выполняющие определенные функции при построении различных конструкций языка:
+ - * / { } [ ] ( ) < > ? ' : ; ^ # @ $
Составные символы – группа символов, которые воспринимаются компилятором как единое целое:
<= => := (* *) (..) ..
"Неиспользуемые" символы, символы так называемой расширенной таблицы ASCII, то есть символы, имеющие коды от 128 до 255 ( в этой области находятся символы алфавита русского языка и символы псевдографики на IBM-совместимых компьютерах), а также некоторые символы из основной таблицы ASCII (например: &, !, %, " и другие). Их можно использовать в тексте комментариев и в виде значений констант строк или констант символов.
Зарезервированные слова (BEGIN, END, PROGRAM и другие), несущие определенную смысловую нагрузку в языке программирования. Зарезервированное слово – это слово, которое в языке Паскаль имеет определенное смысловое значение. Еще говорят служебное слово или ключевое слово – это слова синонимы. Имя служит для обозначения каких-либо объектов. В языке Паскаль различают два вида имен: стандартные и даваемые пользователем ЭВМ.
^ Структура программы на Паскале
Программы, написанные на языке программирования Турбо Паскале, строятся в соответствии с правилами, представляющими собой несколько расширенные и "ослабленные" правила синтаксиса стандартного Паскаля. Приведем пример программы на Турбо Паскале. Надо сразу подчеркнуть, что программа написана для процесса обучения, поскольку в жизненной ситуации она не пригодится.
PROGRAM Addition;
{ ADDITION.PAS - Программа суммирования двух введенных целых чисел}
VAR
Numbe r_1, Number_2, Sum: INTEGER;
BEGIN
Write (' Введите первое число: ');
ReadLn(Number_1);
Write ('Введите второе число:');
ReadLn (Number_2);
Sum := Numbe r_1 + Number_2;
WriteLn (' Сумма введенных чисел равна: '.Sum);
END.
Любую программу, написанную на Паскале можно условно разделить на две основные части:
раздел объявлений и описаний;
раздел основного блока.
В разделе объявлений и описаний программист сообщает компилятору, какими идентификаторами он обозначает данные (константы и переменные), а также определяет собственные типы данных, которые он в дальнейшем намеревается использовать в данной программе. В Турбо Паскале есть возможность подключать используемые в программе объекты, описанные в другом месте. Такие объекты называются модулями и о них мы будем говорить позже.
"Процедура" и "функция" – термины, применяемые в Паскале для обозначения специальным образом оформленной последовательности команд (подпрограммы). Доступ к такой подпрограмме может быть осуществлен из любого места основного блока программы, а также из любой процедуры или функции, описание которых следует ниже. В разделе описаний содержится описание процедур и функций в виде текста процедур и функций, который строится по правилам аналогичным правилам построения программы.
Основной блок программы состоит из последовательности операторов, причем работа программы начинается именно с первого оператора основного блока программы. Тело основного блока программы ограничено словами BEGIN и END.
Структура рассмотренной программы имеет следующий вид:
PROGRAM Addition;
{Раздел описаний}
BEGIN
{Раздел операторов}
END.
Необходимо обратить внимание на наличие точки после служебного слова END. После последнего оператора END всегда ставится точка, тем самым компилятор получает информацию об окончании текста программы.
Слово PROGRAM зарезервировано в Паскале и означает начало программы. Далее записывается имя программы (в приведенном примере – Addition). В Турбо Паскале можно опускать объявление имени оператором PROGRAM без каких-либо последствий для программы.
Строки программы обычно выделяют некоторые смысловые фрагменты текста и могут не связываться с конкретными действиями в программе. Программа записывается в свободной форме, операторы не привязаны к определенной позиции строки в отличие от других языков программирования. Расположение текста программы по строкам – дело вкуса программиста, а не требование синтаксиса языка. В то же время рекомендуется программу записывать в такой внешней форме, чтобы ее можно было легко читать и понимать. Для этого широко используются пробелы, пустые строки и комментарии. Рекомендуется смысловые части выделять одинаковыми отступами от начала строки.
Пробел в Паскале используется как разделитель отдельных конструкций языка, следовательно необходимо внимательно следить за его присутствием в качестве разделителя.
Соответствующие строчные и прописные буквы являются эквивалентными, если только это не связано с текстовыми константами.
Разделитель ; отмечает конец оператора или описания. Использование особого разделителя позволяет располагать несколько операторов на одной строке.
После заголовка программы следует текст, заключенный в фигурные скобки. Это комментарий. Комментарий – выделенная фигурными скобками информация для пояснения, которая не исполняется программой. Кроме фигурных скобок { }, могут использоваться также пары символов (* и *) слева и справа от комментария соответственно.
В нашем примере в разделе описаний объявлены три переменные Number_1, Number_2, Sum как переменные целого типа. Имена переменных записаны через запятую, а перед служебным словом INTEGER стоит двоеточие.
Зарезервированное слово BEGIN в следующей строке сигнализирует компилятору о начале другой части программы – раздела операторов. Write, WriteLn, ReadLn служат для вывода и ввода информации и являются стандартными процедурами. В Турбо Паскале есть возможность использования некоторых стандартных процедур без предваряющего описания этих процедур (общее правило гласит: все процедуры должны быть описаны). По своей сути оператор
Write('Введите первое число:');
является оператором обращения к встроенной процедуре вывода данных. Свое название она получила от write - записать, a writeln - записать строку.
Процедура write осуществляет вывод объектов перечисленных в скобках через запятую. В данном случае выводится текстовая константа 'Введите первое число:'.
ReadLn (Number_1); – стандартная процедура ввода численного значения переменной с именем Number_1. При выполнении программы машина предоставит возможность ввести с клавиатуры численное значение этой переменной. Два следующих оператора аналогичны.
Оператор
Sum := Number_1 + Number_2;
- оператор присваивания, один из основных операторов языков программирования. В его левой части указывается имя переменной, правая часть представляет собой выражение того же типа, что и переменная. Выполняется оператор так: вычисляется численное значение выражения в правой части и результат записывается в переменную слева. Другими словами, оператор присваивания - вычислитель. Переменная Sum принимает значение суммы двух переменных Numbe r_1 и Number_2.
WriteLn(' Сумма введенных чисел равна: '.Sum);
выводит два объекта – текстовую константу и переменную. Оператор write выводит строку на экран и оставляет курсор в конце только что выведенной строки. Оператор writeln после вывода устанавливает курсор в начало следующей строки.
^ Синтаксические диаграммы
Оператор
содержит некоторое синтаксическое понятие,
Рис. 8
Рис. 9
содержит символы, входящие в исходный текст.
Рис. 10
Для описания синтаксиса языка часто используются синтаксические диаграммы. Синтаксическая диаграмма является направленным графом, при прохождении которого автоматически строится синтаксически правильная программа. В диаграмме следует различать два типа символов:
Синтаксические диаграммы отражают лишь небольшую часть синтаксиса. Каждое понятие, заключенное в прямоугольник, требует, в свою очередь, некоторого определения. Структуру программы на Паскале можно представить следующей схемой (рис.8):
На диаграмме видно, что заголовок может быть, а может нет. После заголовка идет собственно программа в виде некоторого блока. Понятие блок требует расшифровки (рис. 9).
Диаграмма для описания представлена на рис. 10.
Из синтаксической диаграммы видно, что не все перечисленные разделы обязательны в каждой программе. В приведенном примере присутствует только описание переменных.
^ СТАНДАРТНЫЕ ТИПЫ ДАННЫХ
Данные
Одна из характерных особенностей современных ЭВМ состоит в возможности получать, накапливать и хранить большие объемы информации, содержащие формализованные сведения об окружающем человека мире. Поступившая в ЭВМ информация может быть обработана с целью извлечения из нее требуемых пользовате
еще рефераты
Еще работы по разное
Реферат по разное
Оглавление раздел I. Кто ты? Спаситель мира, божество, сектант, дьявол
18 Сентября 2013
Реферат по разное
Томаса Манна "Иосиф и его братья"
18 Сентября 2013
Реферат по разное
Некоторые основные алгоритмы обработки графов
18 Сентября 2013
Реферат по разное
Размышления об Эйлере, навеянные думами о прошлом, в свете проблемы устойчивости
18 Сентября 2013