Основные элементы программирования
5.3 Основные элементы языков программирования
Алгоритм, записанный на языке программирования, называется программой. В алгоритме обязательно должны быть предусмотрены все ситуации, которые могут возникнуть в процессе решения комплекса задач.
Программирование – теоретическая и практическая деятельность, связанная с созданием программы.
Программа – результат интеллектуального труда, для которого характерно творчество, индивидуальность разработчиков. Вместе с тем программирование предполагает и рутинные работы, которые могут и должны иметь строгий регламент выполнения и соответствовать стандартам. Программирование базируется на комплексе научных дисциплин, направленных на исследование, разработку и применение методов и средств разработки программ (специального инструментария создания программы).
Эволюция языков программирования
20-е годы XIX века. Предварительная запись порядка действий машины на перфокарте для последующей автоматической реализации вычислений – программе (предложена Ч.Бэббиджем). Ада Лавлейс теоретически разработала некоторые приемы управления последовательностью вычислений, которые используются до сих пор.
40-е годы XX века. Создание программ на основе кодирования машинных команд (Грейс Мюрей Хоппер).
50-60-е годы. Роль программирования в машинных кодах уменьшается, появляются процедурные языки программирования высокого уровня (FORTRAN, ALGOL). Для преобразования команд в машинные коды используются трансляторы.
Середина 60-х годов. Создание специализированного языка программирования, состоящего из простых слов английского языка (BASIC), попытки создать универсальный язык (PL/1, АЛГОЛ-68).
Начало 70-х. Развитие идеи АЛГОЛА о структуризации разработки алгоритмов, создание Н. Виртом языка Паскаль. Создание языка АДА, предназначенного для создания и длительного сопровождения больших программных систем, допускающего возможность параллельной обработки, управления процессами в реальном времени и др.
1972 г. (Первая версия языка Си). Появление языка сочетающего черты языка высокого уровня с машинно-ориентированным языком, который допускает программиста ко всем машинным ресурсам.
В течение многих лет программное обеспечение строилось на основе операциональных и процедурных языков (Ассемблеры, Фортран, Бейсик, Паскаль, Ада, Си). По мере эволюции языков программирования широкое распространение получили и другие принципиально новые подходы к созданию программ непроцедурное программирование: объектно-ориентированное программирование (языки Си++, Delphi, Visual Basic) и декларативное программирование. Декларативные языки делятся на логические (Пролог) и функциональные (Лисп). В настоящее время разработаны языки работающие в управляемом окружении, обеспечивающие высокую надежность и защищенность создаваемых программ (Java, C#, VB.net).
Классификация языков программирования
Понятие о языках программирования высокого уровня
Языки программирования – это формальные языки специально созданные для общения человека с компьютером. Каждый язык программирования, равно как и «естественный язык» (русский, английский и т.д.) имеет:
- Алфавит – фиксированный для данного языка набор основных символов, допускаемых для составления текста программы на этом языке.
- Синтаксис – система правил, определяющих допустимые конструкции языка программирования.
- Семантика – система правил однозначного толкования отдельных языковых конструкций, позволяющих воспроизвести процесс обработки данных.
При описании языка и его применении используют понятия языка.
Понятие – некоторая синтаксическая конструкция и определяемые ею свойства программных объектов или процесса обработки данных.
Взаимодействие синтаксических и семантических правил определяет те или иные понятия языка, например, операторы, идентификаторы, переменные, функции и процедуры, модули и т.д. В отличие от естественных языков правила грамматики и семантики для языков программирования, как и для всех формальных языков, должны быть явно, однозначно и четко сформулированы.
Языки программирования, имитирующие естественные языки, обладающие укрупненными командами, ориентированными на решение прикладных содержательных задач, называются языками высокого уровня.
Язык программирования высокого уровня (high-level programming language).
Язык программирования, в который введены элементы, допускающие описание задачи в наглядном, легко воспринимаемом виде, упрощающие и автоматизирующие процесс программирования, управляющие конструкции и структуры данных.
ЯПВУ отражают естественные для человека понятия, а не архитектуру вычислительной системы. Поэтому программа, составленная на ЯПВУ , сначала транслируется самой ЭВМ на машинный язык (низкого уровня), а затем выполняется.
В алфавит ЯПВУ могут входить буквы, цифры, математические символы и даже так называемые ключевые слова, например:
Из исходных символов по правилам синтаксиса строятся предложения, обычно называемые операторами, например: if x 1 следует воспользоваться формулой у = х – 1.
Достоинства ЯПВУ
- Алфавит языка значительно шире машинного, что делает его гораздо более выразительным и существенно повышает наглядность и понятность текста.
- Набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса.
- Конструкции команд (операторов) отражают содержательные виды обработки данных и задаются в удобном для человека виде.
- Используется аппарат переменных и действий с ними.
- Поддерживается широкий набор типов данных.
Таким образом, языки программирования высокого уровня являются машинно-независимыми и требуют использования соответствующих программ-переводчиков (трансляторов) для представления программы на языке машины, на которой она будет исполняться.
Примеры языков высокого уровня
Fortran. Первый компилируемый язык созданный Джимом Бэкусом в 50-е годы. Для этого языка было создано огромное количество библиотек, начиная от статических комплексов и кончая пакетами управления спутниками, поэтому Fortran продолжает активно использоваться во многих организациях, а сейчас ведутся работы над очередным стандартом Фортрана F2k, который появился в 2000 году. Имеется стандартная версия Фортрана HPF (High Perfomance Fortran) для параллельных супер компьютеров со множеством процессоров.
Cobol. Это компилируемый язык для применения в экономической области и решения бизнес-задач, разработанный в начале 60-х г. Он отличается большой «многословностью» – его операторы выглядят как обычные английские фразы. В Коболе были реализованы очень мощные средства работы с большими объемами данных, хранящимися на различных внешних носителях. На этом языке создано много различных приложений, которые активно эксплуатируются и сегодня. Достаточно сказать, что наибольшую зарплату в США получают программисты на Коболе.
Algol. Компилируемый язык, созданный в 1960 году. Он был призван заменить Фортран, но из-за более сложной структуры не получил широкого распространения. В 1968 году была создана версия Алгол68,по своим возможностям опережающая и сегодня многие языки программирования, однако из-за отсутствия достаточно эффективных компьютеров для нее не удалось своевременно создать хорошие компиляторы.
Pascal. Язык Паскаль, созданный в конце 70-х годов основоположником множества идей современного программирования Николаусом Виртом, во многом напоминает Алгол, но в нем ужесточен ряд требований к структуре программы и имеются возможности, позволяющие успешно применять его при создании крупных проектов.
Basic. Для этого языка имеются и компиляторы, и интерпретаторы, а по популярности он занимает первое место в мире. Он создавался в конце 60-х годов в качестве учебного пособия и очень прост в изучении.
C. Данный язык был создан в лаборатории Bell и первоначально не рассматривался как массовый. Он планировался для замены ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы, и в то же время не зависеть от конкретного вида процессора.
C++. Это объектно-ориентированное расширения языка Си, созданное Бьярном Страуструпом в 1980 году. Множество новых мощных возможностей, позволивших резко увеличить производительность программистов, наложилось на унаследованную от языка Си определенную низкоуровневость, в результате чего создание сложных и надежных программ потребовало от разработчиков высокого уровня профессиональной подготовки.
Java. Этот язык был создан компанией Sun в начале 60-х годов на основе Си++. Он призван упростить разработку приложений на основе Си++ путем исключения из него всех низкоуровневых возможностей. Но главная особенность этого языка – компиляция не в машинный код, а в платформо-независимый байт-код. Этот байт-код может выполнятся с помощью интерпритатора-виртуальной машины Javа-машины JVM (Java Virtyal Machine), версии которой созданы сегодня для любых платформ. Благодаря наличию Java-машин программы на Java можно переносить не только на уровне исходных текстов, но и на уровне обычного байт-кода, поэтому по популярности язык Ява сегодня занимает второе место в мире после Бейсика.
Основные элементы программирования.
Программирование — это написание инструкций компьютеру, подчинение его ресурсов своим нуждам.
Большинство программ создаются для решения какой-либо задачи. В процессе решения задачи на компьютере пользователю нужно ввести обрабатываемые данные, указать, как их обрабатывать, задать способ вывода полученных результатов. Поэтому программист должен знать:
1). Как ввести информацию в память (ввод);
2). Как хранить информацию в памяти (данные);
3). Как указать правильные команды для обработки данных (операции);
4). Как передать обратно данные из программы пользователю (вывод);
5). Уметь упорядочить команды таким образом, чтобы:
Некоторые из них выполнялись только в том случае, если соблюдается некоторое условие или ряд условий (условное выполнение, т.е. ветвление);
Другие выполнялись повторно некоторое число раз (циклы);
Третьи выделялись в отдельные части, которые могут быть неоднократно выполнены в разных местах программы (подпрограммы);
Таким образом, программист должен уметь использовать семь основных элементов программирования: ввод, данные, операции, вывод, условное выполнение, циклы и подпрограммы и на их основе строить программы.
Ввод означает считывание значений, поступающих с клавиатуры, с диска или из порта ввода-вывода.
Данные – это константы, переменные и структуры, содержащие числа (целые и вещественные), текст (символы и строки) или адреса (переменных и структур).
Операции осуществляют присваивание значений, их комбинирование (сложение, деление и т.д.) и сравнение значений (равные, неравные и т.д.).
Вывод означает запись информации на экран, на диск или в порт ввода-вывода.
Условное выполнение предполагает выполнение набора команд в случае, если удовлетворяется (является истинным) некоторое условие (если это условие не удовлетворяется, то эти команды пропускаются или же выполняется другой набор команд) или если некоторый элемент данных имеет некоторое специальное значение или значение из некоторого спектра.
Благодаря циклам некоторый набор команд выполняется повторно или фиксированное число раз, или пока является истинным некоторое условие, или пока некоторое условие не стало истинным.
Подпрограмма представляет собой набор команд, который имеет имя и может быть неоднократно вызван из любого места программы по его имени.
Языком называется совокупность символов, соглашений и правил, используемых для общения. При записи алгоритма решения задачи на языке программирования необходимо четко знать правила написания и использования элементарных информационных и языковых единиц.
Элементарные конструкции. Выражения. Операторы. Операнды.
Выражение – это последовательность операндов, объединенных между собой знаками операций. В качестве операнда могут быть использованы: константы, переменные, функции или заключенные в круглые скобки выражения.
В зависимости от типа операндов и используемых операций выражения делятся на: арифметические, логические и строковые (текстовые) выражения.
Арифметическим называется выражение, содержащее операнды только арифметического (вещественного и/или целого) типа и знаки математических операций.
Специальные логические операции. Операнды этих операций могут иметь только логический тип.
Строковое (текстовое) выражение может содержать операнды только символьного (текстового или строкового) типа. В языках программирования, в том числе и в VBA, имеется только одна строковая операция, которая носит название конкатенация или слияние под-строк в строку.
Оператор представляет собой символическое обозначение некоторого действия, выполняемого с операндами в выражении. Многие операторы известны любому программисту, но вы должны помнить, что РНР выполняет автоматическое преобразование типов на основании типа оператора, объединяющего два операнда, — в других языках программирования это происходит не всегда.
Операнды — это данные, над которыми производятся действия. Операндами могут быть переменные, константы, переменные массивов и другие элементы
Синтаксис и семантика языка программирования.
Описание каждого элемента языка задается его СИНТАКСИСОМ и СЕМАНТИКОЙ. Синтаксические определения устанавливают правила построения элементов языка. Семантика определяет смысл и правила использования тех элементов языка, для которых были даны синтаксические определения.
Идентификатор. Инициализация переменных.
Идентификатор — это имя, которое дается элементам в создаваемых процедурах и модулях, таким как переменные. Это обусловлено тем фактом, что создаваемые имена определяют конкретные участки памяти (имя переменной), группы инструкций (макрос или процедура).
Переменная — это имя, которое программист дает области компьютерной памяти, используемой для хранения данных какого-либо типа.
Структура программы VBA.
Visual Basic for Applications (VBA) — это инструмент разработки приложений. Подобно другим средствам программирования, VBA позволяет создать полностью автоматизированные программные продукты, которые можно использовать, например, для подготовки документов или анализа данных электронных таблиц. VBA — уникальное приложение, поскольку оно встраивается в другое приложение и расширяет его функциональные возможности.
Программа на VBA — это набор процедур и функций, которые обеспечивают работоспособность системы. Их общая структура будет иметь такой вид:
Sub имя_процедуры ([аргументы])
Ключевые слова Sub и End Sub используются в описании любой процедуры. Параметр имя_процедуры определяет имя создаваемой процедуры. Необязательные параметры аргументы позволяют передать в процедуру требуемые значения.
Типы данных VBA.
Тип Date-для хранения дат и времени.
При работе с этим типом данных следует иметь ввиду, что VBA-типы Date не являются такими же типами, как в рабочих листах Excel, хотя во многом и схожи с ними. Например, базовой датой для VBA-типа Date является 30 декабря 1899 года, а в Excel — 1 января 1900 года.
Можно вычитать одну дату из другой, добавлять к дате или вычитать числа для изменения ее значения. В VBA имеется несколько встроенных процедур для отдельного извлечения года, месяца, дня, часов, минут и секунд переменной типа Date.
Числа-VBA имеет шесть различных численных типов данных: Byte, Integer, Long, Single, Double, Currency.
Целые числа: Integer — это целое число без дробной части (целые числа никогда не содержат десятичного знака, даже если десятичная часть равна нулю). VBA предоставляет три типа целых данных: Byte, Integer, Long.
Byte — наименьший из трех типов целых данных, предназначен для хранения числе от 0 до 255. Этот тип обычно используют для хранения двоичных данных.
Integer использует диапазон целых чисел от -32768 до 32767.
Long использует диапазон целых чисел от -2147483648 до 2147483647.
Числа с плавающей точкой: Числа с плавающей точкой могут иметь любое число цифр до или после десятичной точки (в пределах границ конкретного типа данных). Иногда их называют действительными числами. Этот тип данных используют тогда, когда требуется хранить числа, имеющие дробную часть. VBA имеет два типа данных с плавающей точкой: Single, Double.
Single используется для хранения:
отрицательных чисел от -3,402823*1038 до -1,401298*10-45
и положительных от 1,401298*10-45 до 3,402823*1038.
Числа, хранимые с использованием типа Single, называются числами одинарной точности.
Double используется для хранения:
отрицательных чисел от -1,79769313486232*10308 до -4,94065645841247*10-324
и положительных от 4,94065645841247*10-324 до 1,79769313486232*10308.
Числа, хранимые с использованием типа Double, называются числами двойной точности.
Тип данных Currency-Это число с фиксированной точкой, т.е., десятичная точка всегда находится в одном и том же месте — справа от точки всегда имеются четыре цифры. Этот тип данных используется при денежных вычислениях, когда требуется высокая точность.
Currency хранит числа в диапазоне от -922337203685477,5808 до 922337203685477,5807.
Тип данных Variant-Это особый тип данных, который может сохранять любые типы, за исключением типа Object. VBA использует этот тип данных для всех переменных, если только они не объявлены явно.
Данные типа Variant принимают характеристики определенного типа, который они сохраняют в данный момент. Например, если данные типа Variant содержат строковые данные, Variant принимает характеристики типа String. VBA использует для данных типа Variant наиболее компактное представление, возможное для конкретных значений, находящихся в данных.
Несмотря на то, что типы Variant удобны и избавляют от некоторой части работы при написании кода, они требуют большего объема памяти, чем любой другой тип данных, за исключением больших строк. Кроме того, математические операции и операции сравнения над данными типа Variant выполняются медленнее, чем подобные операции над данными любого другого типа. Следует избегать использования переменных Variant.
Константы и переменные. Свойства переменных.. Время жизни переменной.
Основные элементы программирования
Переменные: имя, тип, способы объявления, время жизни и зона видимости. Арифметические операции и математические функции в Visual Basic. Встроенные константы, ввод и отображение информации с помощью диалоговых окон. Основные алгоритмические конструкции.
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
1. Использование переменных для хранения информации
1.1 Переменные: имя, тип, способы объявления
1.2 Время жизни переменных:
1.3 Зона видимости переменных:
2. Числовые переменные. Арифметические операции. Математические функции
2.1 Арифметические операции
2.2 Математические функции
3. Символьные переменные, строковые функции. Функции преобразования типов данных.
4. Встроенные константы Visual Basic. Ввод и отображение информации с помощью диалоговых окон
4.1 Встроенные константы Visual Basic
4.2 Диалоговые окна
5. Основные алгоритмические конструкции
5.1 Линейные алгоритмы
5.2 Алгоритмы ветвления
5.3 Циклические алгоритмы
6.1 Массивы переменных
6.2 Массивы элементов управления
1. Использование переменных для хранения информации
1.1 Переменные: имя, тип, способы объявления
Имя: латинские и русские буквы, цифры, символ подчеркивания. Начинается с буквы. Максимально 255 символов.
Byte: целые числа от 0 до 255
Integer: целые числа от -32768 до 32767
Long: длинные целые
Single: вещественные одинарной точности
Double: вещественные двойной точности
Currency: денежный формат (числа с фиксированной точкой)
String: переменной длины
String*n: фиксированной длины
Boolean: логический тип; Date: тип дата/время
Object: объектный тип; Variant: стандартный тип (по умолчанию)
Явное объявление (с помощью специального оператора Dim, Private, Static, Public): Dim имя переменной [As тип переменной] Например: Dim f As Integer
Неявное объявление (с помощью специального символа %, &, !, #, @, $ после имени переменной): S% (тип Integer), Y# (тип Double)
1.2 Время жизни переменных
По времени жизни переменные делятся на:
Динамические: существуют, пока выполняется породившая их процедура.
Статические: сохраняют свои значения после окончания работы процедуры. Их необходимо объявлять: Static имя переменной [As тип переменной]. Такие переменные часто используют для подсчета количества.
программирование переменная константа алгоритмический
1.3 Зона видимости переменных
А) локальные для процедуры: описываются внутри конкретной процедуры оператором Dim или Private. Такие переменные нельзя использовать из других процедур.
Б) локальные для формы: описываются в разделе общих объявлений General Declaration этой формы оператором Dim. Такие переменные можно использовать из всех процедур кода для данной формы.
Глобальные: описываются в разделе общих объявлений General Declaration программного модуля проекта (файл с расширением bas) оператором Public. Такие переменные можно использовать из всех процедур проекта.
Пример: Психологи утверждают, что для того, чтобы брак был счастливым, должна быть определенная разница в возрасте между женихом и невестой: возраст невесты должен быть равен половине возраста мужчины плюс семь, а возраст жениха — удвоенному возрасту невесты минус четырнадцать. Разработать приложение для определения подходящего возраста будущего супруга (проект «Счастливый брак»).
‘логические переменные, локальные для формы
Основные элементы языка программирования
Основными понятиями в алгоритмических языках являются следующие.
¾ Имена (идентификаторы) — последовательность символов для обозначения объектов программы (переменных, массивов, функций и дp.).
¾ Операции. Существуют следующие типы операций:
—арифметические операции: сложение, обозначается символом “+”; вычитание, обозначается символом “-”; умножение, обозначается символом “*”; деление, обозначается символом “/” и дp. ;
— логические операции: операции “логическое и”, “логическое или”, “логическое не” и др.;
— операции отношения: меньше, обозначается символом “ ”; меньше или равно, обозначается символами “ =”; равно, обозначается символом “=”; не равно, обозначается символами “<>”.
— операция конкатенации символьных значений дpуг с другом, изображается знаком «+».
¾ Ключевые слова – это слова языка, имеющие строго определенное назначение, которые не могут использоваться в качестве идентификаторов.
¾ Данные — величины, обрабатываемые программой. Имеется тpи основных вида данных: константы, переменные и массивы.
¾ Константы — это данные, которые зафиксированы в тексте программы и не изменяются в процессе ее выполнения.
числовые: 7.5, 12;
логические: true(истина), false(ложь);
символьные: «А», «+»;
строковые: «abcde», «информатика».
¾ Переменные – это данные, которые могут изменять свои значения в ходе выполнения программы. Они обозначаются именами. Переменные бывают целые, вещественные, логические, символьные и строковые.
¾ Массивы — последовательности однотипных элементов, число которых фиксировано и которым присвоено одно имя. Положение элемента в массиве однозначно определяется его индексами — одним в случае одномерного массива, или несколькими, если массив многомерный.
¾ Выражения – элементы языка, которые предназначаются для выполнения необходимых вычислений, состоят из констант, переменных, указателей функций, объединенных знаками операций. Выражения записываются в виде линейных последовательностей символов (без подстрочных и надстрочных символов, «многоэтажных» дробей и т. д.), что позволяет вводить их в компьютер, последовательно нажимая на соответствующие клавиши клавиатуры.
Различают выражения арифметические, логические и строковые.
Арифметические выражения служат для определения одного числового значения. Арифметические выражения записываются по следующим правилам:
1. Нельзя опускать знак умножения между сомножителями и ставить рядом два знака операций.
2. Индексы элементов массивов записываются в скобках.
3. Операции выполняются в порядке старшинства: сначала вычисление функций, затем возведение в степень, потом умножение и деление и в последнюю очередь — сложение и вычитание.
4. Операции одного старшинства выполняются слева направо.
Логические выражения описывают некоторые условия, которые могут удовлетворяться или не удовлетворяться. Таким образом, логическое выражение может принимать только два значения — «истина» или «ложь» (да или нет).
В записи логических выражений помимо арифметических операций сложения, вычитания, умножения, деления и возведения в степень используются операции отношения и логические операции.
Значения строковых выражений — тексты. В них могут входить строковые константы, строковые переменные и строковые функции, разделенные знаком операции конкатенации.
¾ Оператор – это элемент языка, который задает полное описание некоторого действия, которое необходимо выполнить. Оператор — это наиболее крупное и содержательное понятие языка: каждый оператор представляет собой законченную фразу языка программирования и определяет некоторый вполне законченный этап обработки данных. В состав операторов входят ключевые слова; данные; выражения и т.д.
¾ Стандартная функция – подпрограмма, заранее встроенная в транслятор языка для вычисления часто употребляемых функций. В качестве аргументов функций можно использовать константы, переменные и выражения.
¾ Программа — это последовательность инструкций, предназначенных для выполнения компьютером. В настоящее время программы оформляются в виде текста, который записывается в файлы.
¾ Программирование – это теоретическая и практическая деятельность решения задачи средствами конкретного языка программирования и оформления полученных результатов в виде программы.
На стадии программирования возникает этап отладки программы – процесс обнаружения и устранения ошибок в программе, производимой по результатам ее тестирования на компьютере.
После окончательной отладки программа документируется, т.е. к ней прилагается описание назначения программы и инструкция по эксплуатации. Только после этого программа становится законченным программным продуктом, подготовленным к реализации как любой иной вид промышленной продукции.
Языки высокого уровня работают через трансляционные программы —трансляторы, которые преобразуют исходный код в последовательность команд машинного языка. Существует два основных вида трансляторов: интерпретаторы, которые сканируют и проверяют исходный код в один шаг, и компиляторы, которые сканируют исходный код для создания текста программы на машинном языке, которая затем выполняется отдельно.
В общем случае программа может иметь модульную структуру, т.е. состоять из нескольких программных единиц, связанных между собой командами передачи управления. Такой принцип построения программ называется модульным. Программная единица, с первой команды которой начинается выполнение программы, называется головной программой. Остальные программные единицы, входящие в единую программу, называются подпрограммами.
¾ Подпрограмма — это последовательность операторов, которые определены и записаны только в одном месте программы, однако их можно вызвать для выполнения из одной или нескольких точек программы.
¾ Функция — это программная единица, которая может быть употреблена в выражении. Функция прямо возвращает величину, которая используется при вычислении этого выражения, и, кроме того, может возвращать величины через параметры.
Процесс разработки многомодульных программ эффективнее, особенно если разрабатывается программа большого размера, когда над реализацией проекта может работать несколько программистов, каждый из которых имеет возможность модифицировать фрагменты программы, не мешая работе остальных.
Подпрограммы и функции позволяют создавать большие структурированные программы, которые можно делить на части. Это дает преимущества в следующих ситуациях:
1. Если программа большая, разделение ее на части облегчает создание, тестирование и ее сборку.
2. Если программа большая и повторная компиляция всего исходного текста занимает много времени, разделение ее на части экономит время компиляции.
3. Если процедуру надо использовать в разных случаях разным образом, можно записать ее в отдельный файл и скомпилировать отдельно.
Основные понятия языка
Предисловие
Этот курс лекций построен на основе учебника автора «C/C++. Программирование на языке высокого уровня » [18], который выпускается издательством ПИТЕР с 2001 года по настоящее время. Учебнику был присвоен гриф Министерства образования Российской Федерации, он входит в списки рекомендуемой литературы во многих вузах России и ближнего зарубежья. Материалы учебника, вошедшие в этот курс, подверглись частичному обновлению и переработке. В 2010 году учебник был удостоен премии Правительства Санкт-Петербурга «За выдающиеся достижения в сфере высшего и профессионального образования» в составе учебно-методического комплекса по языкам программирования.
В этот комплекс входят также практикум по C/C++ [19] и учебники по языкам C# и Паскаль [20, построенные по единому принципу. Соответствующие учебные курсы можно найти на этом сайте. В комплекс входит более 250 индивидуальных вариантов заданий на лабораторные работы в расчете на учебную группу из 20 человек (все варианты можно найти в учебнике [18]) и более 1000 тестовых вопросов. Преподавателям будут полезны презентации лекций. На сайте интернет-школы программирования http://ips.ifmo.ru можно проверить правильность выполнения некоторых лабораторных работ с помощью системы автоматического тестирования программ.
Целью этого курса является краткое и четкое изложение основных особенностей языка С++ в соответствии со стандартом ISO / IEC 14882 (2003). Для написания программ во время обучения вы можете использовать, например, компилятор gcc или среду Microsoft Visual C++ 2005 Express Edition . Эти программные продукты распространяются бесплатно и достаточно хорошо поддерживают стандарт.
Доброжелательную и конструктивную критику, а также предложения по улучшению курса направляйте автору по адресу pta- ipm @yandex.ru.
Состав языка
Презентацию к лекции Вы можете скачать здесь.
В тексте на любом естественном языке можно выделить четыре основных элемента: символы, слова, словосочетания и предложения. Подобные элементы содержит и язык программирования , только слова называют лексемами (элементарными конструкциями), словосочетания — выражениями, а предложения — операторами.
Алфавит языка
Все тексты на языке пишутся с помощью его алфавита. Алфавит C++ включает:
- прописные и строчные латинские буквы и символ подчеркивания (_), который употребляется наряду с буквами;
- арабские цифры от 0 до 9;
- специальные символы, например +, *, < и &;
- пробельные символы — пробел, символы табуляции, символы перевода строки и формата.
Алфавит языка в стандарте называется базовым набором символов. Кроме того, существует понятие » набор символов реализации » — все множество символов, доступных на данном компьютере. Этот набор содержит базовый набор в качестве подмножества .
Из символов базового набора составляются лексемы языка и директивы препроцессора. Символы из набора реализации используются для написания комментариев. Компилятор комментарии игнорирует.
Лексемы
Существуют следующие виды лексем:
- имена (идентификаторы);
- ключевые слова;
- знаки операций;
- разделители;
- литералы (константы).
Границы лексем определяются другими лексемами , такими, как разделители или знаки операций.
Лексемы языка программирования аналогичны словам естественного языка. Например, лексемами являются константа 128 (но не ее часть 12), имя Vasia , ключевое слово goto и знак операции сложения +. Из лексем составляются выражения и операторы.
- Выражение задает правило вычисления некоторого значения. Например, выражение a + b задает правило вычисления суммы величин a и b .
- Оператор задает законченное описание некоторого действия.
Операторы делят на исполняемые и неисполняемые, простые и составные. Исполняемые операторы задают действия над данными. Неисполняемые операторы служат для описания данных, поэтому их часто называют операторами описания или просто описаниями. Например, int a ; — это оператор описания целочисленной переменной a .
Составной оператор или блок — это группа операторов, заключенная в фигурные скобки . Блоки могут быть вложенными.
Каждый элемент языка определяется синтаксисом и семантикой. Синтаксические определения устанавливают правила построения элементов языка , а семантика определяет их смысл и правила использования.
Объединенная единым алгоритмом совокупность описаний и операторов образует программу.
Путь от текста программы к исполняемому коду
Чтобы выполнить программу, требуется перевести ее на язык, понятный процессору — в машинные коды. Этот процесс состоит из нескольких этапов.
Сначала исходный текст программы обрабатывается препроцессором . Он разыскивает в тексте программы «свои» директивы (инструкции, команды), которые начинаются с символа # («решетка»), и выполняет их. Директивы препроцессора позволяют вставить в программу тексты из других файлов, исключить из процесса компиляции фрагменты кода или выполнить замену одних фрагментов другими.
Обработанный препроцессором текст программы (в стандарте С++ он называется «единица компиляции «) передается компилятору, который выполняет лексический и синтаксический анализ . На фазе лексического анализа лексический анализатор ( сканер ) последовательно просматривает поступающий на его вход поток символов, составляющих исходный текст программы, и выделяет допустимые лексемы . Их границы определяются по разделителям, пробельным символам и другим лексемам.
На фазе синтаксического анализа синтаксический анализатор (парсер) на основе грамматики языка распознает построенные из лексем выражения и операторы. При этом выявляются синтаксические ошибки . Выполняется также семантический анализ, целью которого также является обнаружение разного рода смысловых ошибок (например, таких, как повторное описание переменной ) .
Если ошибок в программе не обнаружено, выполняется фаза генерации кода.Конкретный вид кода зависит от того, приложение какого типа мы создаем: Windows или . NET . Если это обычное приложение Windows , то строится объектный модуль — заготовка исполняемой программы в машинных кодах. Для приложения . NET формируется код на системно-независимом языке CIL .
Дальнейшая судьба этого кода также зависит от типа создаваемого приложения. Для обычного приложения Windows компоновщик (синонимы — линкер, редактор связей ) формирует исполняемый модуль программы, подключая к объектному модулю другие объектные модули, в том числе содержащие элементы стандартных библиотек , которые используются в любой программе (например, для выполнения вывода на экран). Если программа состоит из нескольких исходных файлов, они компилируются по отдельности и объединяются на этапе компоновки . Исполняемый модуль имеет расширение . exe и запускается на выполнение обычным образом.
Приложение . NET собирается в сборку компоновщиком сборки и запускается на выполнение под управлением виртуальной машины CLR . При создании . NET -приложений также имеется возможность компилировать отдельно несколько модулей программы, собирая их потом в одну сборку .
Описание синтаксических конструкций
Для описания языка здесь используется неформальный способ, при котором необязательные части синтаксических конструкций заключаются в квадратные скобки, текст, который необходимо заменить конкретным значением, пишется по-русски, а выбор одного из нескольких элементов обозначается вертикальной чертой. Например:
Фигурные скобки используются для группировки элементов, из которых требуется выбрать только один.
Рассмотрим лексемы языка С++ .
Имена (идентификаторы)
Идентификатор — это имя программного объекта. В идентификаторе могут использоваться латинские буквы, цифры и знак подчеркивания. Прописные и строчные буквы различаются. Первым символом идентификатора может быть буква или знак подчеркивания.
Длина идентификатора по стандарту не ограничена. Идентификатор создается на этапе объявления переменной , функции, типа и т.п., после этого его можно использовать в последующих операторах программы. При выборе идентификатора необходимо иметь в виду следующее:
- идентификатор не должен совпадать с ключевыми словами и именами используемых стандартных объектов языка;
- не рекомендуется начинать идентификаторы с символа подчеркивания;
- на идентификаторы, используемые для определения внешних переменных , налагаются ограничения компоновщика.
Не жалейте времени на придумывание подходящих имен. Имя должно отражать смысл хранимой величины, отвечать принятой нотации , быть легко распознаваемым и, желательно, не содержать символов, которые можно перепутать друг с другом, например, 1, l и I (единица, строчная L и прописная i ).