КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
XIX. Основные понятия. Алфавит. Синтаксис. Семантика
Конец программы Начало программы Конец функции Конец цикла СУММА=S писать("введите значения массива А") начало цикла для j=1 до 15 читать А(j) конец цикла Р:= СУММА(G,W)*СУММА(T,L) писать ("произведение равно",Р:6) В программу введены константы: G=1; W=12;T=8;L=15. Ответ. Результатом работы программы является произведение сумм элементов массива с 1 по 12 и с 8 по 15 9. Задан фрагмент алгоритма: 1. Если А<В, то С=В-А иначе С=2*(А-В) 2. D=0 3, Пока С>А выполнять: D=D+1;C=C-1 Ответ. При А=8; В=3 на выходе из этого фрагмента переменные D и C примут значения: D=2; C=8 10. Представлен алгоритм (div(x,y) - целочисленное деление х на у, mod(х,у) - целый остаток от деления): k=50 Выбор при div(k,12)=4: D:=k при mod(k,12)<5: D:=2 при mod(k,12)>9: D:=3 иначе D:=1 Всё Ответ. Значение переменной D после выполнения алгоритма равно 2 11. Представлен алгоритм (mod(х,у) - целый остаток от деления): k=70 Выбор при mod(k,12)=7: D:=k при mod(k,12)<5: D:=2 при mod(k,12)>9: D:=3 иначе D:=1 Всё Ответ. Значение переменной D после выполнения алгоритма равно 3 12. Представлен фрагмент программы: X:=9; Y:=7; P:=X=Y; Q:=Y>X; P:=P and Q Ответ. В результате выполнения фрагмента программы переменные P и Q примут значения P=false; Q=false Раздел 7. Эволюция и классификация языков программирования. Основные понятия языков программирования. Структуры и типы данных языка программирования В истории программирования можно выделить несколько этапов по способу программирования алгоритмов задач: 1. Программирование в машинных командах. 2. Машинно-ориентированные языки низкого уровня. 3. Языки высокого уровня. 4. Языки структурного программирования. 5. Объектно-ориентированные языки.
Для того, чтобы ЭВМ могла выполнять программу, программа должна быть записана по строгим правилам в виде, доступном процессору, т. е. представлять собой последовательность двоичных чисел и кодов. Такие коды называются машинными кодами, а программа, написанная на машинном языке, – исполняемым модулем. Записывать программу на машинном языке неудобно. Это нудная и долгая работа не обходилась без ошибок, которые было очень непросто найти. Поэтому возникла идея записывать программу на так называемом алгоритмическом языке или языке программирования. Языки программирования – специально разработанные искусственные языки, предназначенные исключительно для записи алгоритмов, исполнение которых поручается ЭВМ. Обычный разговорный язык состоит из четырех основных элементов: символов, слов, словосочетаний и предложений. Алгоритмический язык содержит подобные элементы, только слова называют элементарными конструкциями, словосочетания - выражениями, предложения - операторами. Алгоритмический язык (как и любой другой язык), образуют три его составляющие: алфавит, синтаксис и семантика. Алфавит – фиксированный для данного языка набор символов (букв, цифр, специальных знаков и т.д.), которые могут быть использованы при написании программы. Синтаксис - правила построения из символов алфавита специальных конструкций, с помощью которых составляется алгоритм. Семантика - система правил толкования конструкций языка. Таким образом, программа составляется с помощью соединения символов алфавита в соответствии с синтаксическими правилами и с учетом правил семантики. XX. Краткая история и классификация Ассемблер – язык низкого уровня, в котором каждая конструкция заменяется одной или несколькими (не больше пяти) машинными командами, но они записываются не в двоичном коде, а с помощью удобных для человека символов. Язык высокого уровня – каждая конструкция реализуется через много (более пяти) машинных команд. Первые языки программирования были очень примитивными и мало чем отличались от формализованных упорядоченных последовательностей единиц и нулей, понятных компьютеру. Использование таких языков было крайне неудобно с точки зрения программиста, так как он должен был знать числовые коды всех машинных команд, должен был сам распределять память под команды программы и данные. Для того, чтобы облегчить общение человека с ЭВМ были созданы языки программирования типа Ассемблер. Переменные величины стали изображаться символическими именами. Числовые коды операций заменились на мнемонические обозначения, которые легче запомнить. Язык программирования приблизился к человеческому языку, и отдалился от языка машинных команд. Один из первых языков программирования высокого уровня – Фортран (For mula Tran slation) был создан в середине 50-х годов. Благодаря своей простоте и тому, что на этом языке накоплены большие библиотеки программ Фортран и в наши дни остается одним из самых распространенных. Он используется для инженерных и научных расчетов, для решения задач физики и других наук с развитым математическим аппаратом. Для решения экономических задач был создан язык программирования - Кобол. Расширение областей применения ЭВМ влечет за собой создание языков, ориентированных на новые сферы применения: Снобол – алгоритмический язык для обработки текстовой информации, Лисп - алгоритмический язык для обработки символов. Лисп находит широкое применение в исследованиях по созданию искусственного интеллекта. В 1968 г. был объявлен конкурс на лучший язык программирования для обучения студентов. Победителем стал язык Алгол-68, но широкого распространения не получил. Для этого конкурса Никлаус Вирт создал язык Паскаль, достаточно простой, удобный, с наличием мощных средств структурирования данных. Хотя Паскаль был разработан как язык для обучения программированию, он впоследствии получил широкое развитие и в настоящее время считается одним из самых используемых языков. Для обучения младших школьников Самуэлем Пайпертом был разработан язык Лого. Он отличается простотой и богатыми возможностями. Широкое распространение в школах в качестве обучающего языка получил язык Бейсик, позволяющий взаимодействовать с ЭВМ в режиме непосредственного диалога. Спустя много лет после изобретения Бейсика, он и сегодня самый простой для освоения из десятков языков общецелевого программирования. Необходимость разработки больших программ, управляющих работой ЭВМ, потребовала создания специального языка программирования СИ в начале 70-х г. Он является одним из универсальных языков программирования. В отличии от Паскаля, в нем заложены возможности непосредственного обращения к некоторым машинным командам и к определенным участкам памяти компьютера. Си широко используется как инструментальный язык для разработки операционных систем, трансляторов, баз данных и других системных и прикладных программ. Си – это язык программирования общего назначения, хорошо известный своей эффективностью, экономичностью, и переносимостью. Во многих случаях программы, написанные на Си, сравнимы по скорости с программами, написанными на языке Ассемблера. При этом они имеют лучшую наглядность и их более просто сопровождать. Си сочетает эффективность и мощность в относительно малом по размеру языке. Появление функционального программирования привело к созданию языка Пролог. Этот язык программирования разрабатывался для задач анализа и понимания естественных языков на основе языка формальной логики и методов автоматического доказательства теорем. В 80-х г. 20 века был создан язык Ада. Этот язык в дополнение к классическим свойствам, обеспечивает программирование задач реального времени и моделирования параллельного решения задач. Существуют различные классификации языков программирования. По наиболее распространенной классификации все языки программирования делят на языки низкого, высокого и сверхвысокого уровня. В группу языков низкого уровня входят машинные языки и языки символического кодирования: (Автокод, Ассемблер). Операторы этого языка – это те же машинные команды, но записанные мнемоническими кодами, а в качестве операндов используются не конкретные адреса, а символические имена. Все языки низкого уровня ориентированы на определенный тип компьютера, т. е. являются машинно-зависимыми. Машинно-ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.). Следующую, существенно более многочисленную группу составляют языки программирования высокого уровня. Это Фортран, Алгол, Кобол, Паскаль, Бейсик, Си, Пролог и т.д. Эти языки машинно-независимы, т.к. они ориентированы не на систему команд той или иной ЭВМ, а на систему операндов, характерных для записи определенного класса алгоритмов. Однако программы, написанные на языках высокого уровня, занимают больше памяти и медленнее выполняются, чем программы на машинных языках. К языкам сверхвысокого уровня можно отнести лишь Алгол-68 и APL. Повышение уровня этих языков произошло за счет введения сверхмощных операций и операторов. Другая классификация делит языки на вычислительные и языки символьной обработки. К первому типу относят Ф ортран, Паскаль, Алгол, Бейсик, Си, ко второму типу - Лисп, Пролог, Снобол и др. В современной информатике можно выделить два основных направления развития языков программирования: процедурное и непроцедурное. Процедурное программирование возникло на заре вычислительной техники и получило широкое распространение. В процедурных языках программа явно описывает действия, которые необходимо выполнить, а результат задается только способом получения его при помощи некоторой процедуры, которая представляет собой определенную последовательность действий. Среди процедурных языков выделяют в свою очередь структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д. В операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада, ПЛ/1. Среди операционных известны Фортран, Бейсик, Фокал. Непроцедурное (декларативное) программирование появилось в начале 70-х годов 20 века, но стремительное его развитие началось в 80-е годы, когда был разработан японский проект создания ЭВМ пятого поколения, целью которого явилась подготовка почвы для создания интеллектуальных машин. К непроцедурному программированию относятся функциональные и логические языки. В функциональных языках программа описывает вычисление некоторой функции. Обычно эта функция задается как композиция других, более простых, те в свою очередь разлагаются на еще более простые и т.д. Один из основных элементов в функциональных языках - рекурсия, то есть вычисление значения функции через значение этой же функции от других элементов. Присваивания и циклов в классических функциональных языках нет. В логических языках программа вообще не описывает действий. Она задает данные и соотношения между ними. После этого системе можно задавать вопросы. Машина перебирает известные и заданные в программе данные и находит ответ на вопрос. Порядок перебора не описывается в программе, а неявно задается самим языком. Классическим языком логического программирования считается Пролог. Построение логической программы вообще не требует алгоритмического мышления, программа описывает статические отношения объектов, а динамика находится в механизме перебора и скрыта от программиста. Можно выделить еще один класс языков программирования - объектно - ориентированные языки высокого уровня. На таких языках не описывают подробной последовательности действий для решения задачи, хотя они содержат элементы процедурного программирования. Объектно-ориентированные языки, благодаря богатому пользовательскому интерфейсу, предлагают человеку решить задачу в удобной для него форме. Примером такого языка может служить язык программирования визуального общения Object Pascal. Языки описания сценариев, такие как Perl, Python, Rexx, Tcl и языки оболочек UNIX, предполагают стиль программирования, весьма отличный от характерного для языков системного уровня. Они предназначаются не для написания приложения с нуля, а для комбинирования компонентов, набор которых создается заранее при помощи других языков. Развитие и рост популярности Internet также способствовали распространению языков описания сценариев. Так, для написания сценариев широко употребляется язык Perl, а среди разработчиков Web-страниц популярен JavaScript. XXI. Основные типы данных 1. Целые: 2. Вещественные: 3. символьные 4. логические (Boolean)
XXII. Понятие о трансляции Трансляция – преобразование программы, написанной на алгоритмическом языке, в программу, написанную: в машинных командах (кодах процессора). В настоящее время применяются две технологии трансляции: интерпретация и компиляция. Программа, которая осуществляет трансляцию, называется транслятором или, с учётом технологии, интерпретатором или компилятором. В интегрированные среды программирования для языков высокого уровня обычно включают как интерпретаторы, так и компиляторы. Исходный модуль – программа, написанная на алгоритмическом языке (обычно высокого уровня). Интерпретатор – транслятор, который работает пошагово: переводит в машинные команды очередную строку исходного модуля, сразу же выполняет её, «забывает» и переходит к обработке следующей строки. Удобен на этапе отладки программы, так как если в ней есть ошибка, понятно, в какой она строке. Компилятор – транслятор, преобразующая алгоритм, записанный на языке высокого уровня (исходный модуль), в программу, состоящую из машинных команд (исполняемый модуль). Удобен для расчётов по уже отлаженной и протестированной программе. Процесс компиляции разбивается на два этапа: собственно компиляцию и компоновку. Технология работы компилятора: Объектный модуль – промежуточная программа, в которой конструкции исходного модуля переведены в машинные коды, но ещё не дополнены стандартными и служебными программами, необходимыми для её работы. Исполняемый модуль – программа, написанная в машинных кодах и полностью готовая к работе. ------------------------------------------------------------------------------------------------------
Дата добавления: 2014-01-07; Просмотров: 667; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |