![]() |
Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Могут ставиться везде, где допустим знак разрядки. Транслятор рассматривает их как пробел.
Формат: /*< произвольный текст> */ Комментарий может занимать несколько строк. Пример. /* Это предложение - комментарий! */ Также допустимы однострочные комментарии вида: // < комментарий> Язык С++ Признак конца такого комментария является символ перевода строки (клавиша 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? ЭЛЕМЕНТЫ ДАННЫХ Данные – это значения, которые могут задаваться объектам программы и использоваться при ее выполнении. Элемент данных имеет тип и изображение в тексте программы. По организации различают скаляры (одиночные значения): переменные и литералы, и совокупности: массивы, структуры и объекты. Типы данных Тип – множество допустимых значений и операций над ними. Элемент какого-либо типа: переменная | константа | литерал. Тип литерала определяется его изображением, для переменной необходима специальная конструкция языка – описание, константы в пособии не рассматриваются. Внимание! Все переменные должны быть описаны до их использования (по описаниям выделяется память для них). Большинство типов имеют определенный в языке набор операций, реализованных в виде операторов или функций. Существуют определенные в языке типы данных (так называемые предопределенные) и типы, задаваемые пользователем (о них позже). Целые Это семейство типов, значения которых являются целыми. Типы различаются диапазоном значений и объемом выделяемой под элемент памяти.
Замечание 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 Данные с плавающей точкой Это семейство типов, значения которых являются вещественными (дробными). Типы различаются диапазоном значений и объемом выделяемой под элемент памяти.
Замечание. Типы 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; Просмотров: 325; Нарушение авторского права страницы