Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Могут ставиться везде, где допустим знак разрядки. Транслятор рассматривает их как пробел.




 

Формат:

/*< произвольный текст> */

Комментарий может занимать несколько строк.

Пример.

/* Это предложение - комментарий! */

Также допустимы однострочные комментарии вида:

// < комментарий> Язык С++

Признак конца такого комментария является символ перевода строки (клавиша Enter ).

Пример.

// Это предложение - комментарий!

Basic

Формат:

' < произвольный текст> | Rem < произвольный текст>

Комментарий может начинаться в произвольном месте строки текста программы и заканчивается переводом строки ( Enter ). Следовательно, они должны быть последними в строке кода и после них нельзя использовать символы продолжения строки ( _).

Пример.

' Это комментарий!

Rem Это тоже!

Замечание. Комментарий с ключевым словом Rem является анахронизмом и сохранен для совместимости с программами, созданными с использованием устаревших версий языка, поэтому в настоящее время его применять не рекомендуется.

Запись текста программы

С

Записывается в произвольных позициях. Перенос свободный между словами. Инструкция заканчивается символом "; ". Исключение составляет символ " }", за которым "; " может не ставиться.

Basic

Предполагается запись одной инструкции в строку. В случае записи нескольких инструкций в одной строке они должны разделяться символом ": ".

Пример.

Text1.Text = " Hello" : Red = 255: Text1.BackColor = _Red

Если инструкция не помещается в строку, возможен перенос между словами. В этом случае в конце строки необходимо поместить комбинацию символов: пробел и _.


 

Пример.

Data1.RecordSource = _

" SELECT * FROM Titles, Publishers" _

& " WHERE Publishers.PubId = Titles.PubID" _

& " AND Publishers.State = 'CA'"

Начиная с версии VB2010 допустимо неявное продолжение строки кода, когда перевод строки ( Enter ) выполняется сразу после следующих символов:

, (запятая);

. (точка);

( (открывающая скобка);

знаков бинарных операторов (+ - * and и др.) и операторов присваивания (= += и др.) и некоторых других;

и перед следующими символами:

) (закрывающая скобка) и некоторыми другими.

Рекомендация. Это правило не использовать, только стандартную комбинацию < пробел> _.

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

Вопросы для самопроверки и контроля

Вопросы для самопроверки

1. Различаются ли прописные и строчные буквы в изучаемых языках?

2. Перечислите допустимые имена.

x X X_X A15B 15C a2 KOH A1b MAKC_HOMEP

3. Перечислите знаки разрядки.

4. Где могут записываться комментарии в тексте программы на языке C?

5. Чем отличается запись нескольких инструкций в одной строке в языках C и Basic?

Контрольные вопросы

1. Что входит в состав алфавита?

2. Чем отличается понятие идентификатор от понятия имя?

3. Зачем нужны знаки разрядки?

4. Можно ли записывать комментарий Rem в той же строке после инструкции?

5. Чем отличаются правила переноса инструкции на другую строку в языках C и Basic?

ЭЛЕМЕНТЫ ДАННЫХ

Данные – это значения, которые могут задаваться объектам программы и использоваться при ее выполнении.

Элемент данных имеет тип и изображение в тексте программы.

По организации различают скаляры (одиночные значения): переменные и литералы, и совокупности: массивы, структуры и объекты.

Типы данных

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

Внимание! Все переменные должны быть описаны до их использования (по описаниям выделяется память для них).

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

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

Целые

Это семейство типов, значения которых являются целыми. Типы различаются диапазоном значений и объемом выделяемой под элемент памяти.

Память в байтах Память в разрядах Диапазон Тип Basic Тип C
-128 – 127(27-1) SByte char
-32768 – 32767(215-1) Short short
-2147483648 – 2147483647(231-1) Integer int | long
-263 – 263-1 Long long long

Замечание 1. В языках C и C++ для всех целых типов существует модификатор unsigned, в рассматриваемых версиях языка Basic – типы Byte, UShort, UInteger, ULong, которые запрещают соответствующим типам принимать отрицательные значения. При этом изменяется диапазон представления значений.

unsigned char, Byte à 0 – 255

unsigned short, UShort à 0 – 65535

unsigned [int] | unsigned long, UInteger à 0 - 4294967295

ULong à 0 – 264-1

В качестве литералов в обоих языках могут употребляться числа в 10-чной, 8-чной и 16-чной системах счисления. Признак 8-чного литерала в языке Basic – префикс & o (буква " o”), в языке C 0 (цифра " 0" ), 16-ного: Basic - & h, C 0{x|X}.

Пример.

-1 2345 9999999999 à 10

& o7777 à Basic 07777 à C à 8

& hab à Basic 0xab 0Xab à C à 16

Данные с плавающей точкой

Это семейство типов, значения которых являются вещественными (дробными). Типы различаются диапазоном значений и объемом выделяемой под элемент памяти.

Память в байтах Память в разрядах Диапазон Точность представления (число разрядов мантиссы) Тип Basic Тип C
|x|< 3, 4...1038 6-7 Single float
|x|< 1, 8...10308 Double double
    long double

Замечание. Типы double и long double в изучаемой версии языка C не отличаются. Тип long double введен для совместимости со стандартом языка, поэтому его употреблять не рекомендуется.

Литералы имеют 2 формы записи:

- обычную:

[+|-]< целая часть>. < дробная часть>

и экспоненциальную или показательную:

< мантисса> e< степень>,

где мантисса – это целое число или число с плавающей точкой в обычной форме, e означает 10 в степени (регистр не важен), степень – целое число.

Все литералы с плавающей точкой относятся к типу double.

Пример.

-2.3 5e-15 -2.245E12 0.0002.0002 Basic –> 0.0002 среда корректирует)

В языке С допустима запись вида 26., чтобы избежать дополнительного преобразования.

Несмотря на различные формы записи литералов (внешнего представления) данные этого типа хранятся в памяти компьютера в форме с плавающей точкой (мантисса, порядок), отсюда и произошло название типа.

Замечание 1. В языке C разделитель между целой и дробной частью числа или мантиссы в виде десятичной точки может отсутствовать только при наличии степени (экспоненты). Если отсутствуют и точка, и степень, это означает литерал целого типа.

Замечание 2. Basic. Весьма важно!!! Во многих странах, в том числе и в нашей, в качестве десятичного разделителя используется символ ", ". Более того, многие программы, например Microsoft Excel, используют в этом качестве установки ОС, которые могут быть изменены. В результате при вводе данных с клавиатуры или выводе их на экран (печать) используются установки ОС, однако при задании литералов в тексте программы необходимо употреблять в качестве разделителя точку. Эти проблемы также возникнут при работе с датами, временем, денежными единицами.

Замечание 3. Basic. Все числовые типы данных имеют поля, содержащие минимальное и максимальное значения для каждого типа. Формат обращения к ним:

< имя типа>.{ MinValue | MaxValue }

Пример.

Single.MaxValue Double.MinValue Ushort.MinValue

Логический тип

Используется для задания логических условий и свойств объектов.

Описывается ключевыми словами bool в языке C++ и Boolean в языке Basic. Литералы этого типа имеют только 2 значения:

true (истина) и false (ложь).

Basic : в памяти занимают 2 байта (16 разрядов) и хранятся в виде True (-1), False (0).

C++ : в памяти занимают 1 байт (8 разрядов) и хранятся в виде true (1), false (0).

Замечание. В стандарте языка C логический тип не предусмотрен, однако в этом качестве можно использовать любую модификацию целого типа. Если значение условия не равно 0, то считается, что оно имеет значение true, если равно 0, то – значение false.

3.1.4. Символьные данные

Различают представления отдельных символов и последовательностей символов (строк). 1 символ занимает в памяти 1 байт. Каждый символ кодируется целым значением в диапазоне: 0 – 255. Символы с кодами от 0 до 127 представляют собой международную кодовую таблицу ASCII, которая едина для всех стран. Диапазон 128 – 255 содержит символы национальных алфавитов, спецсимволы и др. Эта кодовая страница специфична для различных стран.

Замечание. В обоих языках существует набор символов, каждый из которых занимает в памяти 2 байта. Они используются для представления символов национальных алфавитов, в основном, иероглифического типа (Япония, Китай, Корея и т.п.). Такая кодировка носит название Unicode. В языке Basic для хранения одного символа используется эта кодировка и отводится 2 байта памяти.

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

Пример.

′ a′ ′ C′ ′ \′ ′ ′ \”′ ′ \\′

′ \n′ – новая строка,

′ \t′ – табуляция,

′ \r′ – возврат каретки (переход к началу той же строки).

Для переменных используется ключевое слово char.

В языке Basic дляодиночных символов также применяется тип char, однако он требует 2-х байтов памяти и не относится к целому типу. Литерал для одиночного символа имеет вид" < символ> " C.

Пример.

" a" C

Для задания символа " (кавычка) надо записывать так: " " " " C.

Для строк (последовательностей символов) в обоих языках формат записи литералов одинаков:

" < строка> "

Пример.

" Это строка! " " Запись в Си и Бэйсике одинакова"

Для включения в языке Basic в строчный литерал " (кавычки) ее надо дублировать.

В языке C для того, чтобы транслятор мог обнаружить конец строки в памяти, он добавляет в ее " хвост" символ '\0', поэтому строка имеет длину на 1 байт больше. В языке Basic каждая строка переменной длины, к которым следует отнести литералы, дополнительно хранит 4 байта под длину строки + 2 байта.

Пример.

" Это строка! " – длина 12 байтов.

Замечание. В языке C следует различать записи 0 и '0'. В первом случае значение в памяти будет действительно равно 0, во втором – 48 – ASCII -код символа 0. Записи 0 и '\0' равнозначны.

В языке C два подряд расположенных строчных литерала автоматически объединяются в 1 строку.

Пример.

" Уральский социально-экономический институт"

" Академии труда и социальных отношений" Это 1 строка!

Для представления переменных, значениями которых являются одиночные символы, в языке C используется тип unsigned char (character), который в общем случае относится к целому типу. Переменных, значениями которых являются строки, в языке C нет. Для этой цели используются массивы данных типа char (о них позже).

В языке Basic для строк применяется тип String. Максимальная длина таких строк может достигать 2 млн символов. Отметим, что для работы со строками так же, как и в языке C, можно использовать массивы типа Char.

Дополнительные типы данных

Описанные выше типы данных можно считать основными. Они используются в той или иной форме во всех языках программирования. В языке C ( C++ ) определены также следующие типы: указатели, ссылки, перечисления ( enum ), void; в языке Basic: перечисления ( Enum ), даты ( Date ), универсальный ( Object ) и десятичный ( Decimal ). Они будут введены позже по ходу изложения.

Совокупности данных

Переменные любых типов могут быть объединены в совокупности. Если в совокупности все переменные одного типа и место каждой определяется номером (индексом), то это массив, если же разных, то – структура.

Массивы

Пример. Массив. Система линейных алгебраических уравнений.

a11*x1+a12*x2=b1

a21*x1+a22*x2=b2

В результате имеем 3 массива: {aij, i, j=1, 2}, {xk, k=1, 2}, {bl, l=1, 2}.

Количество индексов определяет размерность массива. Различают одномерные (размерность равна 1) и многомерные (размерность > 1) массивы.

Расположение в памяти элементов многомерного массива в языках C и Basic лексикографическое, т.е. в следующем порядке: a11 a12 a21 a22.

Доступ к отдельным элементам производится по значениям индексов.

Пример.

i=1 j=2 aij=a12

Массивы должны быть объявлены в специальных инструкциях.

Объявления массивов

С

< массив>: =< имя> [ < длина> ] [, [ < длина> ] ]…

< длина> - количество элементов массива в данном измерении.

Замечание. Жирным выделены символы языка, начертание которых совпадает с метаобозначениями.

Пример.

Page[10 ] Line[81] Screen[24][80] Vect[20] Matr[10][10]

Нижняя граница (минимальное значение) индекса в каждом измерении всегда равна 0, верхняя (максимальное значение) равна длина-1.

Пример.

В объявлении Matr[10][10] первый элемент – это Matr[0][0], последний – Matr[9][9]. Всего элементов 10*10=100. Многомерный массив можно рассматривать как массив, элементами которого являются массивы меньшей размерности.

Пример.

Matr[0] – первый элемент массива, элементом которого является массив из 10 элементов.

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

Basic

< массив>: =< имя> (< индекс> [, < индекс> ]...)

< индекс>: =[нижняя граница To ] верхняя граница

< граница> - целое выражение > 0

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

Пример.

A(1, 1) X(1) DaysOfMonth(1 To 12) Etap(1 To 20, 1) Matr(m-1, n-1)

Замечание 1. Старайтесь не использовать нижнюю границу при объявлении массива, поскольку нижняя граница измерения всегда равна 0. В результате в массивах DaysOfMonth и Etap память используется неполностью.

DaysOfMonth: выделено памяти под 12+1=13 элементов, используется 12,

Etap: выделено памяти под (20+1)*(1+1)=42 элемента, используется 40.

В отличие от языка C, где в объявлении массивов используется понятие длина или количество элементов в данном измерении массива, понятие верхняя граница означает максимальное значение индекса в данном измерении и, следовательно, объявление A(1, 1) определяет массив данных из 4 элементов: A(0, 0), A(0, 1), A(1, 0), A(1, 1). Как видно из примера, многомерные массивы аналогично языку C располагаются в памяти построчно.

Замечание 2. Весьма важно! Границы массивов в языке Basic могут быть выражениями, включающими имена переменных, и их объявления могут располагаться в произвольном месте кода до 1-го употребления их имен. Следовательно, можно сначала задать размеры массивов, а затем объявить их, используя заданные размеры. Это дает возможность использовать динамические массивы, размеры которых неизвестны до начала выполнения программы, что существенно повышает универсальность реализуемых алгоритмов (свойство массовости).


 

Пример.

…………………..……………………….

′ Ввод размеров m n

………..…………………………………..

' Объявление динамических массивов

… a(m - 1), b(n - 1), c(m + n - 1) …


Поделиться:



Последнее изменение этой страницы: 2017-04-12; Просмотров: 303; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.056 с.)
Главная | Случайная страница | Обратная связь