Аннотация: Предыдущая лекция позволила нам получить первое представление о программах. Теперь мы готовы к введению новых концепций. Давайте ближе познакомимся с некоторыми частями программы, уже использованными, но не получившими пока собственные имена.
3.1. Операторы (instructions) и выражения
Основными операциями предыдущей программы, заставляющие компьютер выполнять определенные действия, были:
Paris.display Louvre.spotlight Line8.highlight Route1.animate Console.show (Route1.origin)
Такие операции в языке программирования естественно называются операторами языка. Обычно принято записывать в каждой строке программы по одному оператору, что облегчает читабельность наших программ.
До сих пор все рассматриваемые нами операторы были операторами вызова метода. В последующих лекциях мы встретимся с другими видами операторов языка.
Для выполнения своей работы операторам нужны некоторые значения, подобно тому, как математическая функция «косинус» при ее вызове cos (x) может дать результат, только если известно значение x. При вызове метода необходимыми значениями являются:
HTML5. Структура, Синтаксис, Семантика. 14.Проверяем структуру документа
- цель, заданная объектом. В наших примерах это Paris, Louvre и т. д.;
- аргументы, не обязательные, но необходимые для некоторых вызовов, как Route1.origin в последнем примере.
Такие элементы программы, обозначающие значения, называются выражениями. Наряду с продемонстрированной формой записи выражения нам встретятся выражения в привычной математической форме, такие как a + b .
Определение: операторы, выражения
В тексте программ:
- оператор обозначает базисную операцию, которую необходимо выполнить в период работы программы;
- выражение обозначает значение, используемое оператором при его выполнении.
3.2. Синтаксис и семантика
В определении оператора и выражения важную роль играет слово «обозначает». Выражение , такое как Route1.origin или a + b , не является значением – это последовательность слов программного текста. Оно обозначает значение , которое может существовать в момент выполнения.
Аналогично оператор, такой как Paris.display, является некоторой последовательностью слов, скомбинированной в соответствии с некоторыми структурными правилами; он обозначает некоторую операцию, которая будет происходить в момент выполнения.
Этот термин «обозначает» отражает различие между дополняющими друг друга аспектами программ:
- способа записи программы, состоящей из слов, которые, в свою очередь, составлены из символов, печатаемых на клавиатуре. Например, оператор Paris.display состоит из трех частей – слова, составленного из пяти символов P, a, r, i, s, затем «точки», затем слова, составленного из семи символов.
- эффекта от этих элементов программы, который, как вы ожидаете, возникнет в процессе выполнения: вызов метода Paris.display приведет к отображению на экране карты Парижа.
Первый аспект характеризует синтаксис программы, второй – ее семантику. Дадим точные определения.
Основы программирования. Синтаксис и семантика
Определения: синтаксис, семантика
Синтаксис программы – это структура и форма записи ее текста.
Семантика – множество свойств потенциально возможных выполнений программы.
Так как программы пишутся для того, чтобы их можно было выполнять и получать результат этой работы, определяющим фактором является семантика , но без синтаксиса не было бы правильного текста, следовательно, не было бы и выполнения, не имела бы значения семантика . Так что обоим аспектам программы следует уделить должное внимание.
Ранее у нас уже было разделение: команды против запросов. Команды являются императивными: они командуют, заставляя компьютер при запуске программы выполнять некоторые действия, которые могут изменять объекты. Запросы являются дескриптивными: они запрашивают у компьютера некоторую информацию об объектах без изменения самих объектов. Эта информация предоставляется программе. Комбинируя эти различия с различиями в синтаксисе и семантике, приходим к четырем различным ситуациям.
В нижнем правом углу таблицы имеем две семантики: запрос является программным механизмом для получения некоторой информации; эта информация , полученная при выполнении запроса, создана из значений.
Источник: intuit.ru
Синтаксис и семантика языка программирования
Любой язык, в том числе и язык программирования, подчиняется ряду правил. Их принято разделять на правила, определяющие синтаксис языка, и правила, определяющие его семантику.
Синтаксис языка — совокупность правил, определяющих допустимые конструкции (слова, предложения) языка, его форму.
Языки программирования относятся к группе формальных языков, для которых в отличие от естественных языков однозначно определены синтаксис и семантика. Описание синтаксиса языка включает определение алфавита и правил построения различных конструкций языка из символов алфавита и более простых конструкций. Для этого обычно используют форму Бэкуса-Наура (БНФ) или синтаксические диаграммы. Описание конструкции в БНФ состоит из символов алфавита языка, названий более простых конструкций и двух специальных знаков:
· «::=»- читается как «может быть заменено на»,
· «|» — читается как «или».
При этом символы алфавита языка, которые часто называют терминальными символами или терминалами, записывают в неизменном виде. Названия конструкций языка (нетерминальные символы или нетерминалы), определяемых через некоторые другие символы, при записи заключают в угловые скобки («< », « >»).
Пример БНФ
Правила построения конструкции , записанные в
БНФ, могут выглядеть следующим образом:
::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Для отображения того, что конструкция может включать неограниченное количество цифр, использовано правило с левосторонней рекурсией. Многократное применение этого правила позволяет построить целое число с любым количеством цифр.
Синтаксические диаграммы отображают правила построения конструкций в более наглядной форме. На такой диаграмме символы алфавита изображают блоками в овальных рамках, названия конструкций – в прямоугольных, а правила построения конструкций — в виде линий со стрелками на концах.
При этом, если линия входит в блок, то в описываемую конструкцию должен входить соответствующий символ. Разветвление линии означает, что при построении конструкции возможны варианты. На рис. 2.1 представлена синтаксическая диаграмма, иллюстрирующая первые два правила описания конструкции . Из диаграммы видно, что целое число может быть записано со знаком или без и включать произвольное количество цифр.
Для описания синтаксических конструкций своего языка Н. Вирт использовал именно синтаксические диаграммы, поэтому в тех случаях, когда словесное описание синтаксиса конструкции длинно и нечетко, мы будем использовать синтаксические диаграммы.
Алфавит языка программирования Borland Pascal 7.0 включает:
1. строчные, прописные буквы латинского алфавита (a..z, A..Z) и знак подчеркивания ( _ ), который также во многих случаях считается буквой (строчные и прописные буквы не различаются);
3. специальные знаки, состоящие из одного и двух символов:
4. служебные слова (эти сочетания считаются единым целым и их нельзя использовать в программе в другом качестве): (примеры)
Из символов алфавита в соответствии с правилами синтаксиса строят различные конструкции. Простейшей из них является конструкция .
Эта конструкция используется во многих более сложных конструкциях для обозначения имен программных объектов (полей данных, процедур, функций и т. п.).
В Borland Pascal идентификатор представляет собой последовательность букв латинского алфавита (включая символ подчеркивания) и цифр, которая обязательно начинается с буквы.
Синтаксическая диаграмма идентификатора приведена на рис. 2.2. Остальные конструкции будут рассмотрены в последующих разделах. Семантику языка программирования закладывают в его компилятор. Таким образом, синтаксически корректная программа, написанная на языке программирования, после преобразования ее в последовательность машинных команд обеспечит выполнение компьютером требуемых операций.
Структура программы
Программа на Borland Pascal состоит из трех частей: заголовка, раздела описаний и раздела операторов.
Пример программа, которая реализует алгоритм Евклида для определения наибольшего общего делителя двух натуральных чисел.
Writeln(‘Hauбoльшuй общий делитель равен ’,a);
Программа названа «example». Раздел описаний в данном случае включает только описание переменных (см. параграф 2.3). Раздел операторов содержит операторы ввода исходных данных, вычислений и вывода результатов. Начнем рассмотрение особенностей программирования на языке Borland Pascal с проблемы описания данных.
Источник: megaobuchalka.ru
Введение в язык программирования. Синтаксис и семантика программы
Введение в язык программирования
Язык программирования — формальный язык, предназначенный для записи
компьютерных программ. Язык программирования определяет набор лексических,
синтаксических и семантических правил, определяющих внешний вид программы и
действия, которые выполнит исполнитель (обычно — ЭВМ) под её управлением.
3.
Язык программирования предназначен для написания компьютерных программ,
которые представляют собой набор правил, позволяющих компьютеру выполнить тот
или иной вычислительный процесс, организовать управление различными
объектами, и т. п.
Язык программирования отличается от естественных языков тем, что предназначен
для управления ЭВМ, в то время как естественные языки используются, прежде
всего, для общения людей между собой.
4.
Со времени создания первых программируемых машин было создано более двух с
половиной тысяч языков программирования. Ежегодно их число пополняется
новыми.
Некоторыми языками умеет пользоваться только небольшое число их собственных
разработчиков, другие становятся известны миллионам людей. Профессиональные
программисты обычно применяют в своей работе несколько языков
программирования.
5.
Языки программирования низкого уровня
Первым компьютерам приходилось программировать двоичными машинными
кодами. Однако программировать таким образом — достаточно трудоемкая и сложная
задача.
Для упрощения этой задачи стали появляться языки программирования низкого
уровня, которые позволяли задавать машинные команды в более понятном для
человека виде. Для преобразования их в двоичный код были созданы специальные
программы — трансляторы.
6.
Трансляторы делятся на:
компиляторы — превращают текст программы в машинный код, который можно
сохранить и затем использовать уже без компилятора (примером являются
исполняемые файлы с расширением *. exe).
интерпретаторы — превращают часть программы в машинный код, выполняют и
после этого переходят к следующей части. При этом каждый раз при выполнении
программы используется интерпретатор.
7.
Примером языка низкого уровня является ассемблер. Языки низкого уровня
ориентированы на конкретный тип процессора и учитывают его особенности,
поэтому для переноса программы на ассемблере на другую аппаратную платформу ее
нужно почти полностью переписать.
8.
Преимущества
С помощью языков низкого уровня создаются эффективные и компактные
программы, поскольку разработчик получает доступ ко всем возможностям
процессора.
Недостатки
Программист, работающий с языками низкого уровня, должен быть высокой
квалификации, хорошо понимать устройство микропроцессорной системы, для
которой создается программа.
результирующая программа не может быть перенесена на компьютер или
устройство с другим типом процессора.
значительное время разработки больших и сложных программ.
9.
Языки низкого уровня, как правило, используют для написания небольших
системных программ, драйверов устройств, модулей стыков с нестандартным
оборудованием, программирование специализированных микропроцессоров, когда
важнейшими требованиями являются компактность, быстродействие и возможность
прямого доступа к аппаратным ресурсам.
10.
Языки программирования высокого уровня
Данный вид языков более понятен человеку, чем компьютеру. Особенности
конкретных компьютерных архитектур в них не учитываются, поэтому созданные
программы легко переносятся с компьютера на компьютер.
В основном достаточно просто перекомпилировать программу под определенную
компьютерную архитектурную и операционную систему.
Разрабатывать программы на таких языках гораздо проще и ошибок допускается
меньше. Значительно сокращается время разработки программы, что особенно важно
при работе над большими программными проектами.
11.
К языкам программирования высокого уровня относятся:
Фортран;
Кобол;
Алгол;
Pascal;
Java;
C;
C++;
C#;
Objective C;
Smalltalk;
Delphi;
PHP;
JavaScript;
Лисп;
Python;
Ruby.
12.
Достоинства языков программирования высокого уровня:
алфавит языка значительно шире машинного, что делает его гораздо более
выразительным и существенно повышает наглядность и понятность текста;
набор операций, допустимых для использования, не зависит от набора машинных
операций, а выбирается из соображений удобства формулирования алгоритмов
решения задач определенного класса;
конструкции операторов задаются в удобном для человека виде;
поддерживается широкий набор типов данных.
13.
Недостатком языков высокого уровня является больший размер программ по
сравнению с программами на языке низкого уровня. Поэтому в основном языки
высокого уровня используются для разработок программного обеспечения
компьютеров и устройств, которые имеют большой объем памяти.
14.
Синтаксис и семантика программы
Алфавит — разрешенный к использованию набор символов, с помощью которого
могут быть образованы слова и величины данного языка.
Синтаксис — система правил, определяющих допустимые конструкции языка
программирования из букв алфавита.
Семантика — система правил однозначного толкования каждой языковой
конструкции, позволяющих производить процесс обработки данных (алгоритм).
15.
Как программировали раньше
Язык С и Windows API
Данный подход можно считать традиционным: программы писались на языке С с
использованием интерфейса Windows API (Aplication Programming Interface –
интерфейс прикладного программирования). Это проверенный временем подход
программирования.
Основная проблема данного подхода в том, что С лаконичный язык. Любой Спрограммист вынужден мириться с необходимостью «вручную» управлять памятью,
иметь дело с указателями и синтаксическими конструкциями.
И еще С – это структурный язык программирования и ему не хватает преимуществ,
которые обеспечиваются объектно-ориентированным подходом.
16.
Структурный язык программирования – это методология разработки
программного обеспечения, в основе которой лежит представление программы в виде
иерархической структуры блоков.
Объектно-ориентированное
программирование
–
это
методология
программирования, основанная на представлении программы в виде совокупности
объектов, каждый из которых является экземпляром определённого класса, а классы
образуют иерархию наследования.
17.
Язык С++ и библиотека базовых классов
С появлением С++ программистам стало доступно объектно-ориентированное
программирование и его основные принципы – инкапсуляция, наследование и
полиморфизм.
Но не смотря на поддержку ООП, программисты вынуждены мириться с деталями
языка С (выделение памяти вручную, указатели и т.д.). Поэтому было решено
упростить работу – так появились платформы для программирования С++. Одна из
самых популярных называется MFC (Microsoft Foundation Classes – библиотека базовых
классов Microsoft).
18.
Visual Basic 6.0
Первым языком программирования, с которого многие начинают это язык Basic.
Данный язык специально был предназначен для новичков т.к. очень прост. Язык был
разработан в 1964 году, а вторую жизнь Basic получил с появлением Visual Basic от
Microsoft.
На Visual Basic возможно создавать сложные пользовательские интерфейсы,
библиотеки программного кода и логику доступа к базам данных. Основной недостаток
данного языка заключается в том, что он не является полностью объектноориентированным. Можно сказать, что он просто «объектный».
С появлением .NET все недостатки языка устранены, но теперь он называется VB.NET.
В этом современном языке поддерживается переопределение операций (перезагрузка),
классическое наследование, конструкторы типов, обобщения и многое другое.
19.
Язык Java
Java – это объектно-ориентированный язык программирования, который по своему
синтаксису похож на С++, но при этом Java не имеет многих неприятных
синтаксических аспектов, которые присутствуют в C++. И самое главное что Java – это
возможность написания кросс-платформенного кода.
Кроссплатформенность — способность программного обеспечения работать более
чем на одной аппаратной платформе и (или) операционной системе.
20.
У Java есть одна очень важная проблема: Его очень сложно интегрировать с другими
языками, поскольку он задумывался изначально как единственный язык
программирования и единственная платформа для удовлетворения любой
потребности.
21.
Модель компонентных объектов
Модель COM (Component Object Model – модель компонентных объектов) была
предшествующей платформой для разработки приложения, которая предлагалась
Microsoft перед .NET. Впервые COM появилась в 1993 году.
Модель COM позволяет строить типы в соответствии с правилами COM и получать
блок многократно используемого кода. Такие двоичные блоки кода называют
«серверами COM». Одно из преимуществ сервера COM в том, что к нему можно
получить доступ, используя другой язык программирования.
22.
Модель COM можно считать успешной объектной моделью, однако её внутреннее
устройство является очень сложной для восприятия, именно поэтому программистам
требуется много времени на изучение этой модели.
Источник: ppt-online.org