перегруженные имена функций
Идентификаторы — это имена переменных, функций и меток, используемых в программе. Идентификатор создается объявлением соответствующей ему переменной или функции. После этого его можно использовать в последующих операторах программы. Идентификатор — это последовательность из одной или более букв, цифр или подчерков ( ), которая начинается с буквы или подчерка. Допускается любое число символов в идентификаторе, однако только первые 31 символ распознаются компилятором. (Программы, использующие результат работы
компилятора, такие как, линкер, могут распознавать меньшее число символов).
При использовании подчерков в идентификаторе нужно быть осторожным, поскольку идентификаторы, начинающиеся с подчерка могут совпадать (войти в конфликт) с именами скрытых системных программ.
Компилятор Си рассматривает буквы верхнего и нижнего регистров как различные символы. Поэтому можно создать отдельные независимые идентификаторы, которые совпадают орфографически, но различаются большими и малыми буквами. Например, каждый из следующих идентификаторов является уникальным:
Константные аргументы функции. Константный указатель. Константные параметры. Для начинающих Урок #57
Компилятор Си не допускает идентификаторов, которые имеют ту же самую орфографию, что и ключевые слова.
Важно: По сравнению с компилятором, сборщик может в большей степени ограничивать количество и тип символов для глобальных идентификаторов, и в отличие от компилятора не делать различия между большими и малыми буквами.
Ключевые слова — это предопределенные идентификаторы, которые имеют специальное значение для компилятора Си. Их можно использовать только так как они определены. Имена объектов программы не могут совпадать с названиями ключевых слов.
Список ключевых слов:
auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof while
do if static volatile
Ключевые слова не могут быть переопределены. Тем не менее, они могут быть названы другим текстом, но тогда перед компиляцией они должны быть заменены посредством препроцессора на соответствующие ключевые слова.
Ключевые слова const и volatile зарезервированы для будущего использования.
Следующие идентификаторы могут быть ключевыми словами для некоторых приложений:
fortran huge near pascal
Комментарий — это последовательность символов, которая воспринимается компилятором как отдельный пробельный символ или, другими словами, игнорируется.
Комментарий имеет следующую форму представления:
/**/ где может быть любой комбинацией символов из множества представимых символов, включая символы новой строки, но исключая комбинацию */.
Это означает, что комментарии могут занимать более одной строки, но не могут быть вложенными.
Комментарии допускаются везде, где разрешены пробельные символы. Компилятор игнорирует символы комментария, в частности, в комментариях допускается запись ключевых слов и это не приведет к ошибке. Так как компилятор рассматривает комментарий как символ пробела, то комментарии не могут появляться внутри лексем.
#5. Переменные и их базовые типы. Модификаторы unsigned и signed | Язык C для начинающих
Источник: www.pmbk.ru
Константы Константы – это величины, остающиеся неизменными в течении работы программы. Константы описывают в разделе констант, начинающимся со слова Const. — презентация
Презентация на тему: » Константы Константы – это величины, остающиеся неизменными в течении работы программы. Константы описывают в разделе констант, начинающимся со слова Const.» — Транскрипт:
2 Константы Константы – это величины, остающиеся неизменными в течении работы программы. Константы описывают в разделе констант, начинающимся со слова Const. Синтаксис: Const Имя_константы = Значение_константы; Объявление константы – это оператор, поэтому после него следует точка с запятой.
3 Задание 1 Как можно изменить программу «Визитная карточка», если использовать константы? Const zv=**************************; Begin Writeln (zv); Writeln (* ФИ *); Writeln (* класс *); Writeln (* Гимназия 1596 *); Writeln (zv); Writeln (Нажмите ентер); Readln end. Проверить
4 Идентификаторы – имена величин Ограничения на имена величин: Допускаются только латинские буквы, знак подчеркивания, цифры. Идентификатор не может начинаться с цифры. Идентификатор может содержать до 255 символов, но Паскаль учитывает только первые 32. Не допускается совпадение идентификатора с ключевым словом. Регистр букв не учитывается.
5 Примеры идентификаторов ВерныеНеверные A B1 Asd _12_ Next_Step 1 g,h T 15 End имя
6 Задание 2 Изменить программу 1 «Приветствие» так, чтобы она запрашивала имя пользователя, а затем здоровалась с ним: Как Вас зовут? Здравствуйте, Иван! Нажмите ентер
7 1. Как ввести имя? 2. Как его напечатать? Begin Writeln (Как Вас зовут?); ? Writeln (Здравствуйте. ); Writeln (Нажмите ентер); Readln End.
8 Переменные (variable) Переменные – это величины, значение которых может изменяться в процессе выполнения программы. Переменные описываются в разделе переменных, начинающемся со слова var. Синтаксис: Var имя_переменной : тип переменной; Тип переменной указывает, какие действия можно совершать с данной переменной.
9 Строковый тип (String) Позволяет работать с произвольной последовательностью символов. Объявление строковой переменной: Var name : string;
10 Ввод переменных Для ввода переменных используется процедура Readln (Read). Синтаксис: Readln (идентификаторы переменных через запятую): Read (идентификаторы переменных через запятую): При запуске программы компьютер, встретив этот оператор будет ожидать ввод данных с клавиатуры. Завершается ввод нажатием на клавишу Enter.
11 Вывод переменных Для вывода переменных используется процедура Writeln (Write). Синтаксис: Writeln (идентификаторы переменных через запятую): Write (идентификаторы переменных через запятую): Суффикс Ln позволяет переводить ввод/вывод данных на следующую строку.
12 Текст программы: Var name : string; Begin Writeln (Как Вас зовут?); Readln (name); Writeln (Здравствуйте,, name); Writeln (Нажмите ентер); Readln End.
13 Итоги: Константы служат для удобного именования неизменяемых данных, они облегчают работу и повышают надежность программ. Константы не могут изменяться в ходе выполнения программы. Переменные предназначены для хранения в оперативной памяти компьютера изменяемых данных. Переменные могут изменяться в ходе выполнения программы.
Каждая переменная относится к некоторому типу данных, который определяет объем занимаемой ею памяти и правила работы с переменной. Ввод данных в переменные выполняется оператором Readln, а печать – оператором Writeln. Имена констант и переменных – это идентификаторы. Они составляются из латинских букв, цифр и знака подчеркивания.
14 Задание Добавьте в программу «Приветствие» разделяющие строки прочерки, чтобы на экране текст выглядел так: Как Вас зовут? Иван Здравствуйте, Иван Нажмите ентер
15 2. Измените процедуру вывода Writhen (Здравствуйте,, name); так, чтобы после имени выводился восклицательный знак. 3. Дополните программу так, чтобы пользователю был задан вопрос «В каком месяце вы родились?», а после ввода названия месяца программа печатала сообщение «Название введенного месяца – это мой любимый месяц».
Источник: www.myshared.ru
Язык программирования TurboPascal
Turbo Pascal. Глобальные и локальные идентификаторы
Областью действия идентификатора (параметра) называется часть программы, где он может быть использован.
Область действия идентификаторов определяется местом их объявления. Область действия означает, что переменная является доступной в этой области.
Локальными называют идентификаторы, которые доступны только в одной подпрограмме.
Глобальными называют идентификаторы, которые доступны в любой вложенной подпрограмме.
Для упрощения дальнейшего изложения материала программу и подпрограммы будем называть блоками.
Пример. Рассмотрим ситуацию, представленную на рисунке ниже, где схематично представлена программа (блок 1) , имеющая подпрограмму (блок 2).
Блок 1
Var
Y: real;
X: integer;
Begin
X:=10; Блок 2
Идентификатор Y описан только в блоке 1. Блок 2 является внутренним или вложенным блоком. Поэтому областью действия идентификатора Y является блок 1 и блок 2, т.е. идентификатор Y является доступным и в блоке 1 и в блоке 2. Следовательно, идентификатор Y является глобальным.
Идентификатор Z описан в блоке 2 и областью его действия является только блок 2, следовательно, является локальным. В блоке 1 идентификатор Z недоступен или говорят, не определен.
Если блок содержит подблоки, в которых описаны идентификаторы, имеющие одинаковые имена, то внутренние блоки уже не будут областью действия тех идентификаторов, которые описаны во внешних блоках. Именно такая ситуация возникает с идентификатором X .
Идентификатор X описан и в блоке 1, и еще раз в блоке 2. Но это разные переменные! Идентификатор X блока 1 при входе в блок 2 теряет свою силу. С блоком 2 связан свой идентификатор X . Например, X в блоке 1 может означать количество чисел, а в блоке 2 сумму чисел. При выходе из блока 2 идентификатор X вновь приобретает смысл, вложенный при его описании в блоке 1.
Например, до входа в блок 1 X имеет численное значение равное 10 . В блоке 2 значение X будет равно 20 , но при выходе из блока X снова будет равно 10 .
Для того чтобы не возникали ошибки, следует учитывать следующие правила:
- не следует использовать одинаковые имена для глобальных и локальных переменных;
- в случае совпадения имен глобального и локального идентификатора действовать будет только локальный идентификатор;
- локальные идентификаторы во внешней подпрограмме не действуют;
- если имена отличаются, идентификаторы действуют во всех внутренних подпрограммах;
- следует избегать совпадения имен формальных и фактических параметров.
Способы передачи параметров
При обращении к подпрограмме формальные параметры заменяются соответствующими фактическими параметрами. Между формальными и фактическими параметрами должно быть строгое соответствие по количеству, порядку их следования и типу.
Существуют три основных способа передачи параметров, в соответствии с которыми делятся формальные параметры:
- параметры-значения(эти параметры подпрограмма не может изменить в основной программе);
- параметры-переменные (эти параметры подпрограмма может изменить в основной программе);
- параметры-константы (эти параметры подпрограмма не может изменить в основной программе).
Параметры-значения
При вызове подпрограммы выделяется память под формальные параметры, в которую копируются фактические параметры. При работе подпрограммы изменения значений формальных параметров не влияют на значения фактических параметров. При окончании работы подпрограммы память, выделенная под формальные параметры, очищается и, следовательно, все значения формальных параметров теряются
Параметры-значения передаются в виде их копий и, следовательно, фактический параметр программы подпрограммой измениться не может.
procedure A1 (p1,p2:; p3,p4:; p5,p6:);
здесь p1. p6 – формальные параметры.
Пример. В качестве примера приведем процедуру поиска максимального элемента (задача 2 из урока «Процедуры и функции»). В процедуре в качестве формальных параметров мы использовали только параметры значения:
Фактические параметры подставляли при вызове процедуры:
При вызове выделяется память под массив b и переменную t и в порядке следования выполняется копирование значений массива a и переменной t . Далее выполняются вычисления с массивом b , переменной t и формируется результат. Значения фактических параметров недоступны и поэтому не могут быть изменены.
Недостатками использования параметров-значений являются:
- расходуется дополнительно память на создание копий;
- происходит потеря быстродействия работы программы.
- нельзя случайным образом изменить значения фактических параметров.
Параметры-переменные
При вызове подпрограммы выделяется память для сохранения адресов фактических параметров и выполняется копирование адресов. При работе подпрограммы изменение формальных параметров приводит к непосредственному изменению значений фактических параметров.
При передаче параметров-переменных в подпрограмму передаются адреса фактических параметров в порядке, объявленном в заголовке подпрограммы. Следовательно, подпрограмма имеет доступ к фактическим параметрам и может их изменять.
Параметр-переменная указывается в заголовке подпрограммы аналогично параметру-значению, но только перед именем параметра записывается зарезервированное слово VAR . Действие слова VAR распространяется до ближайшей точки с запятой.
procedure A1(var p1,p2:; var p3,p4:; var p5,p6:);
здесь: p1. p6 – формальные параметры.
Рассмотрим пример. В процедуре нахождения суммы (задача 1 из урока «Процедуры и функции»)
procedure summa(b:mas;var t:integer);
В процедуре для нахождения суммы чисел использовалась переменная s и печать результата осуществлялась внутри процедуры. Переменная s была объявлена в процедуре, следовательно, является локальной и основной программе она не доступна. Если необходимо передать значение s в основную программу, например, для печати, то необходимо ввести эту переменную в число формальных параметров. Если необходимо вернуть результат из процедуры в основную программу, то формальная переменная должна быть объявлена как параметр-переменная.
ЗАДАЧА 1. Ввести с клавиатуры 15 вещественных чисел в массив и найти сумму этих чисел с помощью процедуры с параметром-переменной.
program a24;
Const n=15;
Type
mas=array[1..n] of real;
Var
a:mas;
i:integer;
sum:real;
procedure summa(b:mas; var s:real; t:integer);
var
i:integer;
begin
s:=0;
for i:=1 to t do s:=s+b[i];
end;
begin
write(‘Введите ’, n:4,’ чисел’);
for i:=1 to n do
begin
write(‘a[‘,i,’]=’);
readln(a[i]);
end;
summa(a,sum,n);
writeln(‘Сумма чисел равна:’, sum:8:2);
summa(a,sum,10);
writeln(‘Сумма равна:’, sum:8:2);
End.
Этот вариант решения задачи лучше, чем решение в задаче 1 из урока «Процедуры и функции» тем, что не создается копия исходного массива a , что улучшает быстродействие программы. Однако при такой передаче параметров возможно непреднамеренное изменение фактических параметров.
Параметры-константы
При вызове подпрограммы выделяется память для сохранения адресов фактических параметров и выполняется копирование адресов. При работе подпрограммы изменение формальных параметров не приводит к непосредственному изменению значений фактических параметров. Изменять фактические параметры запрещено.
При передаче параметров-констант в подпрограмму передаются адреса фактических параметров в порядке, объявленном в заголовке подпрограммы. Подпрограмме запрещено изменять фактические параметры.
Параметр-константа указывается в заголовке подпрограммы аналогично параметру-значению, но только перед именем параметра записывается зарезервированное слово Const . Действие слова Const распространяется до ближайшей точки с запятой.
procedure A1(const p1,p2:; const p3,p4:; const p5,p6:);
здесь p1. p6 – формальные параметры.
Параметры константы целесообразно использовать в случаях, когда требуется передать данные большого размера (массивы, записи и т.д.), но изменять значения данных подпрограмма не должна. Использование параметров-констант обеспечивает экономное расходование памяти, повышает быстродействие программы и гарантирует неизменность исходных данных.
Пример. Запись заголовка процедуры суммирования (задача 3 из урока «Процедуры и функции») с формальным параметром-константой:
procedure summa(const b:mas; var s:real; t:integer);
Источник: www.turbopro.ru