Вопрос 13. Переменные, объявление переменных, константы, массивы в языке Паскаль.
Типы данных
Структура рассмотренной программы имеет следующий вид:
Program MyFirstProgram;
{Раздел описаний}
begin
{Раздел операторов}
end.
Слова Program, begin и end выделяют две части программы - раздел описаний и раздел операторов. Такая структура обязательна для любой программы, что является следствием жесткого требования языка: любой нестандартный идентификатор, используемый в исполняемых операторах, должен быть предварительно описан в разделе описаний. (Стандартные идентификаторы связаны с предварительно объявленными объектами и входят в стандартную библиотеку Турбо Паскаля. Таким, например, является идентификатор WriteLn. Стандартные идентификаторы, если они используются в программе, описывать не нужно).
Требование предварительного описания идентификаторов кажется чрезмерно строгим и делающим язык менее свободным. На самом деле в нем проявляется тенденция развития языков программирования в сторону повышения надежности создаваемых программ. Кто программировал на Фортране или Бэйсике (в этих языках не требуется предварительное описание идентификаторов), знает, как порой бывает трудно обнаружить в большой программе ошибочно введенный или пропущенный символ в идентификаторе. Если, например, всюду в программе используется переменная с именем EPSILON, а в одном месте ошибочно написано EPSLION, то программа может благополучно откомпилироваться и даже давать почти правдоподобный результат для некоторых наборов данных, но в какой-то момент начнет вести себя странно. Обязательное предварительное описание идентификаторов в Турбо Паскале защищает программы от такого рода ошибок и повышает их надежность.
Описать идентификатор - это значит указать тип связанного с ним объекта программы (константы или переменной). Понятие типа - одно из фундаментальных понятий Турбо Паскаля. В гл.4 подробно рассмотрены различные типы; чтобы пояснить описываемые ниже особенности языка и при этом не слишком забегать вперед, укажем, что тип определяет, во-первых, способ внутреннего для компьютера представления объекта и, во-вторых, действия, которые разрешается над ним выполнять.
В рассматриваемых далее в этой главе программах понадобятся следующие типы данных:
INTEGER - целочисленные данные, во внутреннем представлении занимают 2 байта; диапазон возможных значений - от -32768 до +32767; данные представляются точно;
REAL - вещественные данные, занимают 6 байт; диапазон возможных значений модуля - от 2.9Е-39 до 1.7Е+38; точность представления данных - 11...12 значащих цифр;
CHAR - символ, занимает 1 байт;
STRING - строка символов, занимает МАХ+1 байт, где МАХ - максимальное число символов в строке;
BOOLEAN - логический тип, занимает 1 байт и имеет два значения: FALSE (ложь) и TRUE (истина).
Тип константы определяется способом записи ее значения. Например:
const
cl = 17;
с2 = 3 .14 ;
сЗ = 'А';
с4 = '3.14 ' ;
с5 = False;
При анализе этого фрагмента программы компилятор отнесет первую константу к типу INTEGER, вторую - к типу REAL, третью - к CHAR, четвертую - к STRING и последнюю - к BOOLEAN. Признаком, позволяющим отнести константу к REAL или к INTEGER, является наличие или отсутствие десятичной точки в ее значении. Разумеется, константы С2 и С4 относятся к разным типам: С2 - к REAL (в константе есть десятичная точка), а С4 - к STRING (константа обрамлена апострофами). Константу СЗ компилятор будет считать относящейся к типу CHAR: одиночный символ в апострофах относится к CHAR, в то время как несколько символов - к STRING.
В отличие от константы переменная именует объект программы, который может изменять свое значение в ходе счета. При описании переменных за идентификатором ставятся двоеточие и имя типа. Несколько однотипных переменных можно объединять в список, разделяя их запятыми. В начале раздела описания переменных должно стоять зарезервированное слово VAR (VARiables - переменные). Например:
var
sigma :Real; а,b,с,d :Char;
textl :String[15];
text2 :String;
flag :Boolean;.
Как уже говорилось, тип данных определяет длину внутреннего представления соответствующих переменных. В частности, длина внутреннего представления переменных типа STRING (строка символов) зависит от максимального числа символов, которые могут составлять строку. В приведенном выше примере переменная text l описана с указанием ее максимальной длины (15 символов), а в описании переменной text2 максимальная длина не указана и компилятор установит для нее предельно допустимую в Турбо Паскале длину - 255 символов.
Массивы
Рассмотренные выше простые типы данных позволяют использовать в программе одиночные объекты - числа, символы, строки и т.п. В Турбо Паскале могут использоваться также объекты, содержащие множество однотипных элементов. Это массивы -формальное объединение нескольких однотипных объектов (чисел, символов, строк и т.п.), рассматриваемое как единое целое. К необходимости применения массивов мы приходим всякий раз, когда требуется связать и использовать целый ряд родственных величин. Например, результаты многократных замеров температуры воздуха в течение года удобно рассматривать как совокупность вещественных чисел, объединенных в один сложный объект - массив измерений.
При описании массива необходимо указать общее число входящих в массив элементов и тип этих элементов. Например:
var
а : array [1..10] of Real;
b : array [0..50] of Char;
с : array [-3..4] of Boolean;
Как видим, при описании массива используются зарезервированные слова ARRAY и OF (массив, из). За словом ARRAY в квадратных скобках указывается тип-диапазон, с помощью которого компилятор определяет общее число элементов массива. Тип-диапазон (подробнее см. в гл.4) задается левой и правой границами изменения индекса массива, так что массив А состоит из 10 элементов, массив В - из 51, а массив С - из 8 элементов. За словом OF указывается тип элементов, образующих массив.
Доступ к каждому элементу массива в программе осуществляется с помощью индекса - целого числа (точнее, выражения порядкового типа, см. гл.4), служащего своеобразным именем элемента в массиве (если левая граница типа-диапазона равна 1, индекс элемента совпадает с его порядковым номером). При упоминании в программе любого элемента массива сразу за именем массива должен следовать индекс элемента в квадратных скобках, например:
var
a: array [1..10] of Integer;
b: array [0..40] of Char;
c: array [-2..2] of Boolean;
k: Integer; begin
b[17] := 'F1;
c[-2] := a[l] > [2] ;
for k : = 1 to 10 do a[k] := 0;
...
end.
В правильно составленной программе индекс не должен выходить за пределы, определенные типом-диапазоном. Например, можно использовать элементы А[1], В[38], С[0], но нельзя A[0] или С[38] (определение массивов см. выше). Турбо Паскаль может контролировать использование индексов в программе на этапе компиляции и на этапе счета программы.
Для иллюстрации приемов работы с массивами составим программу (пример 2.9), которая создает массив случайных целых чисел, подсчитывает их среднее арифметическое, а также определяет и выводит на экран минимальное и максимальное из этих чисел.
Пример
Program Average;
{Программа создает массив из N случайных целых чисел, равномерно распределенных в диапазоне от 0 до MAX_VALUE-1, подсчитывает среднее арифметическое этих чисел, а также минимальное и максимальное из них.}
const
N = 1000;
MAX_VALUE = 100+1; {Диапазон значений случайных чисел}
var
m : array [1..N] of Integer; {Массив чисел}
i : Integer; {Индекс массива}
max, min : Integer; {Максимальное и минимальное число}
s : Real; {Сумма чисел}
begin
{Наполняем массив случайными числами:}
for i := 1 to N do
m[i] := random(MAX_VALUE); {Задаем начальные значения переменных:}
s := 0;
max : = m [ 1 ] ;
min : = m [ 1 ] ;
{Цикл вычисления суммы всех случайных чисел и поиска минимального и максимального:}
for i := 1 to N do
begin
s : = s + m [ i ] ;
if m[i] < min then
min := m[i]
else if m[i] > max then
max := m[i]
end;
{Вычисляем среднее значение и печатаем результат:}
WriteLn('MMH = ',min,' Макс = ', max, ' Среднее = ',s/N)
end.
Для создания массива используется встроенная функция RANDOM (MAX) , которая возвращает случайное целое число, равномерно распределенное в диапазоне от 0 до МАХ-1 (МАХ- параметр обращения).
Константы
В качестве констант в Турбо Паскале могут использоваться целые, вещественные и шестнадцатеричные числа, логические константы, символы, строки символов, конструкторы множеств и признак неопределенного указателя NIL.
Логическая константа - это либо слово FALSE (ложь), либо слово TRUE (истина).
Символьная константа - это любой символ ПК, заключенный в апострофы:
'z' - символ z;
'Ф' - символ Ф.
Если необходимо записать собственно символ апострофа, он удваивается:
'''' - символ ' (апостроф).
Допускается использование записи символа путем указания его внутреннего кода, которому предшествует символ # (код 35), например:
#97 - символ а;
#90 - символ Z;
#39 - символ ';
#13 - символ CR.
Строковая константа - любая последовательность символов (кроме символа CR -возврат каретки), заключенная в апострофы. Если в строке нужно указать сам символ апострофа, он удваивается, например:
'Это - строка символов;
'That' 's string.'.
- Часть 1.2. Basic(Знакомство с информационной технологией) 186
- Часть 1.3. Html (Знакомство с информационной технологией). Примечание: Подробно будут изучать (некоторые специальности) в рамках курса языки разметки web-страниц 198
- Часть 1.4. С-подобные языки(Знакомство с информационной технологией) 204
- Конспект лекций
- Часть 1: Современные информационные технологии (по и оборудовние)
- Вопрос 01. Информация и информатизация.
- Вопрос 02. Устройства хранения информации.
- Вопрос 06. Базы данных. Субд.
- Вопрос 07. Acses
- Вопрос 08. Передача данных.
- Вопрос 09. Сетевые информационные технологии
- Вопрос 10. Интернет. Сервисы, услуги и информационные ресурсы Интернета
- Вопрос 11. Защита информации
- Вопрос 12: Архитектура и структура пк. Назначение составных элементово пк. Сборка пк.
- Часть 2: Разработка информационных технологий. Применение информационных технологий преданазначенных для разработки информационных технологий.
- Вопрос 13. Переменные, объявление переменных, константы, массивы в языке Паскаль.
- Вопрос 14. Условный оператор (If) и оператор выбора (case) в языке Паскаль
- Вопрос 15. Циклы в языке Паскаль
- Вопрос 16. Объявление и использование своих функций и процедур в языке Паскаль
- Вопрос 17. Встроенные функции в языке Паскаль
- Вопрос 23. Понятие класса. Объявление класса.
- Вопрос 25. Среда Delphi и особенности языка
- Вопрос 28. Основные языковые структуры и применение html.
- Вопрос 29. JavaScript.
- 1. Оператор for
- 2. Оператор while
- 3. Оператор do…while
- 4. Метки операторов
- 5. Оператор break
- 6. Оператор continue
- 5. Оператор for…in
- 6. Оператор with
- Вопрос 30. Php.
- Вопрос 31. Жизненный цикл информационных технологий
- Часть 3: Концептуальные информационные технологии
- Вопрос 32: Технология com
- Вопрос 33: Технология Java. Java virtual mashin. Особенности и области применения языка Java.
- Технология Java
- Язык программирования Java
- Вопрос 34: Технология .Net. Особенности языка и области применения языка с#.
- Технология .Net.
- Язык с#.
- Вопрос 35: Использование библиотек DirectX и OpenGl.
- Вопрос 36: Создание компьютерных игр. Генераторы комьпьютерных игр.
- Вопрос 37: Проектирование информационных технологий. Язык uml 2.
- Вопрос 38: Интерпретаторы и компиляторы. История развития языков. Общая характеристика, назначение и область применения различных языков программирования.
- Интерпретаторы
- Компиляторы
- История развития языков. Общая характеристика, назначение и область применения различных языков программирования.
- Вопрос 39: Фриланс в информационных технологиях. Sharovar-ное программирование. Волонтерство в информационных технологиях.
- Фриланс
- Волонтеры
- Вопрос 40: Интерфейс usb.
- Список лабораторных работ (в количестве 5 штук с разделением на составные части)
- Часть 2: Использование ms Acses.
- Часть 3: Использование оборудования.
- Часть 4: Дополнительные лабораторные работы
- Пояснение по содержанию лекций и лабораторных работ
- Условный оператор (If) и оператор выбора (case) в языке Паскаль
- Циклы в языке Паскаль
- Объявление и использование своих функций и процедур в языке Паскаль
- Встроенные функции в языке Паскаль
- (2 Занятие)Лаб. Работа. 1. Часть 2. Особенности применения, особенности языка и среда Delphi (Знакомство с информационной технологией).
- Часть 1.2. Basic(Знакомство с информационной технологией)
- (4 Занятие)Лаб. Работа. 2. Часть 2. Особенности применения, особенности языка и среда Visual Basic (Знакомство с информационной технологией).
- Часть 1.3. Html (Знакомство с информационной технологией). Примечание: Подробно будут изучать (некоторые специальности) в рамках курса языки разметки web-страниц
- Часть 1.4. С-подобные языки(Знакомство с информационной технологией)
- (9 Занятие)Лаб. Работа. 4. Часть 4. Особенности применения, особенности языка и среда ms c# (Знакомство с информационной технологией).
- (10 Занятие)Лаб. Работа. 4. Часть 5. Особенности применения, особенности языка и среда JavaScript (Знакомство с информационной технологией).
- 1. Оператор for
- 2. Оператор while
- 3. Оператор do…while
- 4. Метки операторов
- 5. Оператор break
- 6. Оператор continue
- 5. Оператор for…in
- 6. Оператор with
- (11 Занятие)Лаб. Работа. 4. Часть 6. Особенности применения, особенности языка и среда php (Знакомство с информационной технологией).