ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 01.03.2019

Просмотров: 1167

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

1. Понятие и состав языка программирования. Машинные и символьные языки.

Языки программирования являются изобразительным средством, существующим для непосредственной реализации алгоритмов на ЭВМ.

Любой ЯП представляет собой набор символов и систему правил: образования и истолкования конструкций из этих символов используемых для записи алгоритмов.

Алгоритм решения задачи записанный на конкретном ЯП называется программой.

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

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

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

Все ЯП можно разбить на:

1. Машинные языки

2. Символьные языки

Машинный язык – ЯП операторами которого являются машинные команды.

Каждый тип ЭВМ имеет свой конкретный машинный язык и ВМ может непосредственно выполнять программы только на ее машинном языке.

Каждая машинная команда обычно задается в цифровом коде и имеет структуру:

КОП – Адресное поле.

КОП – поле, в котором задается код операции («+», «-», …), определяющий заданные команды действий.

Адресное поле – используется для задания значения операторов, над которыми нужно выполнить заданную операцию.

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

Разработка программ на МЯ – ручное программирование и является чрезвычайно сложным процессом.

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

Поэтому МЯ для разработки программ не используется. Для этих целей используются символьные языки.

Символьные языки были разработаны для упрощения программирования и делятся на:

1. Языки типа Ассемблер.

2. Языки высокого уровня.

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

Языки типа Ассемблер и МЯ являются машинно-ориентированными.

Это связанно с тем что они максимально учитывают архитектуру конкретного типа ЭВМ. На каждый тип имеется свой язык Ассемблера.

Разработка программ на языках типа Ассемблер гораздо более простая, чем на МЯ, все равно остается сложным процессом.

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

К недостаткам языков типа Ассемблер можно отнести сложность разработки программ и не возможность использовать на различных типах ЭВМ.


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

Их особенностью является возможность записи программ на языке близком к обычному языку математики.

Это позволило максимально упростить разработку программ и сделать запись алгоритмов компактной и наглядной.

Алгоритмические языки являются машинно-независимыми, т.е. программа записанная на конкретном алгоритмическом языке может выполнятся на любом типе ЭВМ, где имеется система программирования на заданном языке.

Особенностью всех символьных языков является то, что программы, записанные на них, непосредственно ЭВМ выполнятся не могут, т.к. требуется перевод таких программ на машинные языки.

Для языков типа Ассемблер такой перевод выполняется автоматом с помощью ЭВМ с использованием специальных программ, называемых ассемблером.

Компилятор – программа, предназначенная для перевода с алгоритмического языка программирования на машинный язык.

2. Понятие и состав системы программирования.

Под системой программирования конкретного языка понимается комплекс программ предназначенных для подготовки, отладки и выполнения программ записанных на этом ЯП.

Обычно в состав СП входит:

- редактор текстов;

- компилятор или интерпретатор;

- редактор внешних связей;

- загрузчик;

- отладчик;

- библиотекарь;

- профилер.

Символьный ЯП без компилятора или интерпретатора на ВМ может представлять только теоретический интерес. Выполнение программы не возможно.

Все АЯ по методу реализации на ЭВМ делятся на:

- транслирующего типа;

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

- интерпретирующего типа.

Для выполнения программ, записанных на этих языках, на ЭВМ должен быть установлен интерпретатор с этого ЯП.

3. Описание алгоритмических языков. Формулы БНФ.

Любой ЯП состоит из символов, выражений и операторов.

Символы – основные неделимые знаки с помощью которых записываються все допустимые конструкции языка.

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

Числа являются словами.

Выражения – группа слов, имеющих некоторый смысл.

В АЯ это конструкция, состоящая из слов и символов задающая правила вычисления некоторого значения.

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

Описание ЯП состоит из описания четырех указанных элементов. Это описание обычно включает:

- синтаксис

- семантику

Синтаксис позволяет определить множество допустимых конструкций определить её смысл.

Для описания синтаксиса ЯП обычно использует спец. Языки называемые метаязыками.

Формулы Бэкуса-Наура.


Этот язык характеризуется тем, что для описания синтаксиса используются спец. Формулы. Эти формулы содержат знаки:

::= - есть по определению.

| - или.

< > - меньше, больше. В эти скобки заключаются описания конструкций языка.

[ ] – необязательные элементы.

{ } – элементы которые могут входить ноль или большее число раз.

Используемые формулы в этом языке допускают рекурсивные определения, т.е. когда в определении кого-то понятия входит это понятии как элемент.

<целое число>::=[<знак>]<цифра>{<цифра>}

<знак>::= + / -

<цифра>::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

C помощью формул БНФ можно однозначно описать синтаксис любого ЯП, но эти формулы имеют малую наглядность и достаточно громоздки.

Потому наряду с БНФ для описания синтаксиса используются другие метаязыки.

4. Описание алгоритмических языков. Синтаксические диаграммы.

СД также можно использовать для описания синтаксиса ЯП. Они состоят из овалов, кружков и прямоугольников, соединяемых прямыми линиями со стрелками.

Кружки и овалы служат для обозначения неделимых символов языка – терминальные силы.

Прямоугольники обозначают ссылку на другую синтаксическую диаграмму.

Указанные элементы объединены в более общую структуру, которая используется для описания синтаксиса конструкций языка.

Типовыми объединениями элементов являются след. диаграммы:

1)


А – имя диаграммы или определяемого понятия, а сама диаграмма означает, что по структуре конструкция А может состоять из конструкций описанных диаграммой А1 или А2 или … или АN.

Знак арифметической операции:


2) A => [A1] => [A2] => … => [AN]

Конструкция А представляет собой последовательную конструкцию А1, А2, …, АN.

3)

Конструкцией А может содержать или элемент А1 или вообще не чего.


4)

Определенная конструкция А может быть пустой или может содержать одну или несколько подряд идущих конструкций А1.


5)

Конструкция А может содержать одну или несколько подряд идущих конструкций А1.


Диаграммы являются более наглядным отображаем синтаксиса. Для изображения диаграмм требуются спец. средства и определения сложных конструкций требуются сложные диаграммы, которые будут слишком громоздкими.

СД используются наряду с формулами БНФ.

Для описания семантики (смысла) ЯП обычно используется неформальные пояснения на естественном языке или также специальные метаязыки. Для изучения ЯП необходимо изучить его синтаксис и семантику.

5.Типы ошибок в программах. Понятие отладки и отладчиков.

Ошибки компиляции

Ошибки компиляции, также называемые ошибками компилятора, препятствуют запуску программы. При нажатии клавиши F5 для запуска программы Visual Basic компилирует код в двоичный язык, который понятен компьютеру. Если компилятор Visual Basic получает код, который он не понимает, он выдает ошибку компилятора.

Большинство ошибок компилятора вызваны ошибками при вводе кода. Например, если бы не было доступ оператора Если.


Ошибки во время выполнения

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

Примером такой недопустимой операции является деление на ноль. Предположим, что имеется следующий оператор.

Скорость = мили / часы

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

Логические ошибки

Логические ошибки не позволяют программе выполнять предполагаемые действия. Бездепозитный код может компилироваться и выполняться без ошибок, но результат операции может оказаться неожиданным и неверным.

Например, переменная FirstName может быть изначально установленным пустой строки. Далее, в программу можно объединить FirstName с другой переменной LastName для отображения полного имени. Если вы забудете присвоить значение переменной FirstName, отображаться будет только фамилия, а не полное имя, как предполагалось.

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

Узнавать текущие значения переменных;

Выяснять, по какому пути выполнялась программа.

Существуют две взаимодополняющие технологии отладки.

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

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

Отладчик (дебаггер, англ. Debugger от bug) - компьютерная программа, предназначенная для поиска ошибок в других программах, ядрах операционных систем, SQL-запросах и других видах кода. Отладчик позволяет выполнять трассировку, отслеживать, устанавливать или изменять значения в процессе выполнения кода, устанавливать и удалять контрольные точки или условия остановки и т.д.


6.Алфавит си

Алфавит и лексемы языка C

В алфавит языка C входят:

Буквы латинского алфавита.

Цифры (0-9)

Все спец. знаки, которые есть на клавиатуре.

Из символов языка формируются лексемы– это:

Идентификаторы

Константы

Знаки операций

Ключевые слова

Разделители

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

Константа– величина, которая не изменяется в процессе решения задачи.


7.Константы. Их типы синтаксис записи.

Вещественные константы


Константа с плавающей точкой (вещественная константа) всегда представляется числом с плавающей точкой двойной точности, т. е. как имеющая тип double, и состоит из следующих частей:

целой части — последовательности цифр;

точки - разделителя целой и дробной части;

дробной части — последовательности цифр;

символа экспоненты е или E;

экспоненты в виде целой константы (может быть со знаком).

Любая часть (но не обе сразу) из нижеследующих пар может быть опущена:

целая или дробная часть;

точка или символ е (Е) и экспонента в виде целой константы.

Символьные константы

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

Код Обозначение Описание

0x00 '\0' Нуль-символ, NULL

0x07 '\a' Звуковой сигнал.

0x08 '\b' Возврат на 1 шаг (Backspace)

0x09 '\t' Горизонтальная табуляция (Tab)

0x0A '\n' Перевод строки (Enter)

0x0B '\v' Вертикальная табуляция (в консоли аналогична переводу строки)

0x0C '\f' Смена страницы

0x0D '\r' Возврат каретки

Как правило, нажатие клавиши Enter генерирует сразу два управляющих символа - перевод строки (0x0A) и возврат каретки (0x0D).


Все символьные константы имеют тип char и занимают в памяти 1 байт. Значением символьной константы является числовое значение её внутреннего кода.

Строковые константы

Строковая константа — это последовательность символов, заключенная в кавычки, например:

"Это строковая константа"

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

В конце каждой строковой константы компилятор помещает '\0' (нуль-символ), чтобы программе было возможно определить конец строки. Такое представление означает, что размер строковой константы не ограничен каким-либо пределом, но для определения длины строковой константы её нужно полностью просмотреть.

Поскольку строковая константа состоит из символов, то она имеет тип char. Количество ячеек памяти, необходимое для хранения строковой константы на 1 больше количества символов в ней (1 байт используется для хранения нуль-символа).

Символьная константа 'x' и строка из одного символа "x" - не одно и то же. Символьная константа - это символ, используемый для числового представления буквы x, а строковая константа "x" содержит символ 'x' и нуль-символ '\0' и занимает в памяти 2 байта. Если в программе строковые константы записаны одна за другой через разделители, то при выполнении программы они будут размещаться в последовательных ячейках памяти.

Наряду с переменными в языке существуют следующие виды констант:

вещественные, например 123.456, 5.61е-4. Они могут снабжаться суффиксом F (или f), например 123.456F, 5.61e-4f;