Раздел 2. Язык программирования С/С++ как язык программирования высокого уровня. Лекции 8-
22.
Тема 8. Понятие о языке программирования и среде программирования. Виды реализаций языков программирования.
Средой (или системой) программирования называют комплекс программ, предназначенный для создания, отладки и выполнения программ, создаваемых программистом на том или ином языке.
В состав среды программирования входят транслятор с языка программирования, компоновщик, отладчик, редактор, система помощи, библиотека стандартных подпрограмм и т.д.
Язык программирования – это набор правил, определяющих систему записей, составляющих программу, синтаксис и семантику используемых грамматических конструкций.
Синтаксис |
языка |
программирования – |
совокупность |
правил |
||||
записи, которым должна удовлетворять любая программа. |
|
|
||||||
Семантика |
языка |
программирования |
– |
набор |
правил, |
|||
определяющих |
|
смысловое |
содержание |
элементов |
|
языка |
||
программирования. |
|
|
|
|
|
|
||
Реализация языка – это программа, которая преобразует текст |
||||||||
программы |
на |
каком-либо |
языке |
программирования |
в |
|||
последовательность машинных команд.
Имеется два вида средств реализации (трансляторов) – компиляторы и интерпретаторы.
Компилятор осуществляет перевод в несколько этапов, причем для перехода к следующему этапу требуется, чтобы предыдущий этап был полностью и успешно завершен. При переводе программы с языка C компилятор работает в три прохода – препроцессорная обработка, синтаксический анализ, перевод в машинный код. После компиляции производится компоновка, во время которой устанавливаются смысловые связи между отдельными частями программы и соединяются модули, откомпилированные отдельно. Результатом компиляции и компоновки является программа в машинных кодах, которая затем выполняется без участия среды программирования.
Интерпретатор работает с программой построчно. Каждая строка программы проверяется на наличие ошибок, если их нет, то сразу переводится и выполняется.
Тема 9. Характеристики и свойства языков программирования.
Основными характеристиками , позволяющими сравнивать языки программирования и выбирать наилучшие для решения той или иной
Программирование на языке высокого уровня 09.03.01 |
6 |
задачи, являются мощность, уровень, надежность, удобочитаемость, полнота, гибкость, простота, мобильность и эффективность.
Мощность языка характеризуется количеством и разнообразием задач, алгоритмы решения которых можно записать, используя этот язык. Любую задачу, запрограммированную на каком-либо языке, можно запрограммировать и на машинном языке.
Уровень языка характеризуется сложностью решения задач с помощью этого языка. Чем проще для человека записать решение задачи, тем выше уровень языка.
Надежность языка обеспечивает при написании программ минимум
ошибок, которые не обнаруживаются при компиляции. |
|
||||
Удобочитаемость языка – это свойство, |
обеспечивающее |
||||
легкость восприятия программ человеком. |
|
|
|||
Полнота языка обеспечивает описание на языке решений как |
|||||
можно большего числа задач определенной предметной области. |
|||||
Гибкость языка обеспечивает легкость выражения на языке |
|||||
необходимых |
для |
решения |
задач |
действий, |
предоставляет |
программисту достаточно возможностей для выражения всех операций в программе.
Простота языка обеспечивает легкость понимания семантики языковых конструкций и запоминания их синтаксиса.
Мобильность языка обеспечивает независимость его от аппаратных средств, позволяет переносить программное обеспечение с одного типа компьютера на другой с относительной легкостью.
Эффективность языка обеспечивает высокоэффективную работу программ, написанных на этом языке.
Темы 10-11. Программа на языке программирования С/С++. Понятие о структурном программировании. Стандартные типы данных.
С – это универсальный язык программирования, сочетающий в себе как высокоуровневые, так и низкоуровневые черты. В частности, низкоуровневой является возможность в некоторых ситуациях принудительно назначать место в памяти для хранения данных. К высокоуровневым особенностям, например, относится отсутствие механизмов ввода-вывода, которые реализованы с помощью явно вызываемых функций.
Этот язык был создан в 1972 году Деннисом Ритчи (Bell Laboratories). Основными его предшественниками являются:
Algol – 1960 год – разработан специально созданным международным комитетом – большое внимание было уделено модульной структуре программы;
CPL (Combined Programming Language) – 1963 год – разработка
Лондонского и Кембриджского университетов; |
|
|
BCPL – 1967 |
год – разработан Мартином Ричардсом – получен |
|
выделением из CPL |
его основных свойств; |
|
Программирование на языке высокого уровня 09.03.01 |
7 |
|
В – 1970 год – разработан Кеном Томпсоном из Bell Laboratories – еще большее упрощение – пригоден для узкого круга системных задач.
Впоследствии Деннис Ритчи дополнил систему типов данных языка В без потери его простоты.
Программа на языке С состоит из произвольного количества функций, причем одна из них должна называться main(). Выполнение программы начинается с первой инструкции этой функции.
Тело функции представляет из себя перечень действий, которые необходимо выполнить. Этот список действий заключается в фигурные скобки. Перед телом функции помещается заголовок.
Как правило, функция main() среди своих действий содержит вызовы других функций, которые могут создаваться самим программистом или содержаться в библиотеках, входящих в комплект поставки.
# include <stdio.h> main()
{ |
printf(“Здравствуй, мир!\n”); |
} |
|
Вначале программы помещается конструкция, позволяющая
подключить информацию о стандартной библиотеке ввода-вывода. Знак # показывает, что данная строка должна быть выполнена до начала процесса перевода программы в машинный код.
Если необходимо в теле одной функции вызвать другую, то к
ней надо обратиться по имени, |
указав в скобках после имени |
список параметров, которые надо |
передать в вызываемую функцию |
для работы. Если функции не надо ничего передавать, то в строке вызова круглые скобки остаются, но в них ничего не будет.
Комбинация “\n” внутри строки означает на необходимость перейти на новую строку при печати. Существует несколько таких последовательностей, начинающихся с наклонной черты, которые служат для печати трудно представимых символов.
В языке C существует четыре базовых типа данных:
-символьный (char);
-целый (int);
-действительный (float);
-двойной точности(double).
Имеется также несколько квалификаторов, которые можно использовать для расширения числа типов данных. Это квалификаторы long (длинный), short (короткий), unsigned (беззнаковый) и signed (со знаком). Знаковым или беззнаковым может объявляться любой целый тип (в том числе и тип char), а long и short применяются к типу int. Кроме этого существует тп long double.
Программирование на языке высокого уровня 09.03.01 |
8 |
Стандарт языка С не устанавливает размер памяти, который должен быть выделен на тот или иной тип. При этом некоторые соотношения между типами в стандарте описаны. Например,
short int <= int <= long int.
Реально выделенный размер можно узнать при помощи конструкции sizeof(тип) или sizeof(переменная).
Кроме переменных в программах на С используются константы. Целую константу от действительной можно отличить по наличию десятичной точки.
Символьная константа – это целое число, записанное в виде символа, заключенного в одиночные кавычки. Значением символьной константы является код символа, зависящий от используемой системы кодировки. Символьные константы могут участвовать в операциях по тем же правилам, что и целые переменные или константы.
Некоторые трудно представимые символы записываются как комбинация нескольких других символов. Такие комбинации называются Esc-последовательностями. К ним, например, относятся:
\n – переход на новую строку \a – |
звонок |
|
\t |
– горизонтальная табуляция \f – |
перевод страницы |
\\ |
- собственно наклонная черта. |
|
Строковая константа – это произвольное количество символов, заключенных в двойные кавычки, которые не являются составной частью строки. Такая строка фактически воспринимается как массив символов, а в конце этого массива присутствует специальный невидимый символ завершения строки \0.
Символьная константа и строка, содержащая один символ, воспринимаются компьютером совершенно по разному. Так, “a” воспринимается как массив из двух символов, а ‘a’ – как число, равное коду буквы a.
Константы перечисления – это список целых констант. Первое имя в списке имеет значение 0, следующее – 1 и т.д. Если значение какой-нибудь константы явно определено, то следующие константы продолжаю прогрессию с шагом 1.
enum aaa {A,B=8,C}.
Все переменные должны быть описаны до их использования, при своем описании переменная может быть инициализирована (то есть ей может быть присвоено начальное значение). В языке С описание переменных разрешается в начале функции или начале блока.
К любой переменной может быть применен квалификатор const для запрета в дальнейшем изменения значения этой переменной. Константы принято инициализировать при описании в обязательном порядке.
Программирование на языке высокого уровня 09.03.01 |
9 |
Темы 12-15. Управляющие структуры языка С/С++.
Структуры, реализующие последовательность.
Для того чтобы любое выражение языка воспринималось как действие, в конце его необходимо поставить точку с запятой.
a=5;
Если необходимо, чтобы с точки зрения синтаксиса несколько действий воспринимались как одно, то перед первым из этих
действий необходимо открыть фигурную скобку, а после |
последнего |
– закрыть. Такая конструкция называется составной |
инструкцией |
или составным оператором. |
|
Структуры, реализующие развилку. |
|
Основной конструкцией для реализации развилки является оператор if-else.
if (условие)
действие;
else
действие; Если по какой-то ветви необходимо выполнить более чем одно
действие, то нужны фигурные скобки. if(a>5)
{b=3;
t=4;}
else
a=29;
k=11;
Очень часто не поставленные или неверно поставленные фигурные скобки вызывают не только синтаксические ошибки, обнаруживаемые при компиляции, но и смысловые ошибки, из-за которых программа работает неверно.
else – часть может отсутствовать. В этом случае, если условие ложно, то управление передается на следующий оператор программы.
if (a>5)
;
else
t=t+1;
r=7;
В случае, когда нескольким вложенным друг в друга или идущим друг за другом операторам if соответствует один оператор else, этот else считается относящимся к ближайшем if.
if(t > t1) |
if(t > t1) |
{ |
|
if (n<0) |
|
if (n<0) |
|
n=n+m; |
|
n=n+m; } |
|
Программирование на языке высокого уровня 09.03.01 |
|
10 |
|