Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Описание и инициализация переменных

Поиск

Прежде чем использовать в программе какую-то переменную, надо обязательно дать её описание, то есть сказать, какое имя имеет переменная и каков её тип. Вначале указывается тип переменной, а затем её имя. Например:

Int k; // это переменная целого типа int

Double x; // это переменная вещественного типа удвоенной точности

Если имеется несколько переменных одного типа, то допускается их описание через запятую в одном операторе, например:

double a, b, c;

После описания переменной её можно использовать, но возникает вопрос: а какое значение имеет переменная сразу же после её описания? Ответ таков: в программе на языке C# значение переменной после описания не определено. Такая переменная может использоваться в левой части оператора присваивания, но её нельзя использовать в выражении или в правой части оператора присваивания. Например:

double x, y, z;

x=2.5; // так можно

y=z+1; // а так нельзя! Переменная z не определена

Для последнего оператора компилятор языка C# выдаст сообщение об ошибке. Этим свойством (нельзя использовать переменную, которая не получила ни какого значения) язык C# выгодно отличается от своих предшественников — языков С и С++.

Чтобы избежать проблемы, рекомендуется инициализировать переменные, то есть не просто выделять память под переменные, но и задавать им при этом необходимые значения. Например:

double x=3, y=4, z=5;

Инициализация переменных выполняется один раз на этапе компиляции и ни как не сказывается на скорости работы программы.

Задание и использование констант

Выше было дано определение констант. Теперь рассмотрим работу с константами более подробно.

Все константы вне зависимости от типа данных можно подразделить на две категории: именованные константы и константы, которые не имеют собственного имени. Например:

25 — константа целого типа;

3.14 — вещественная константа;

'A' — символьная константа.

Все три приведённые здесь константы не имеют имени, они заданы своим внешним представлением и используются в программе непосредственно, например так:

int k=25; // переменная k инициализирована константой — целым числом 25.

В ряде случаев константе удобнее дать имя и использовать её далее по имени. Это делает текст программы более наглядным. Обычно применяется для математических или физических констант.

В языке C# определить именованную константу очень просто Для этого используют ключевое слово const, например:

const double PI=3.14; // здесь PI — константа

double t;

t=PI * 2;

Константа, переменная — это основополагающие понятия в любом языке программирования. Дадим определения этим понятиям.

Константа — это величина, которая при выполнении программы остаётся неизменной.

Переменная — это ячейка памяти для временного хранения данных. Предполагается, что в процессе выполнения программы значения переменных могут изменяться.

Описание и инициализация переменных

Прежде чем использовать в программе какую-то переменную, надо обязательно дать её описание, то есть сказать, какое имя имеет переменная и каков её тип. Вначале указывается тип переменной, а затем её имя. Например:

Int k; // это переменная целого типа int

Double x; // это переменная вещественного типа удвоенной точности

Если имеется несколько переменных одного типа, то допускается их описание через запятую в одном операторе, например:

double a, b, c;

После описания переменной её можно использовать, но возникает вопрос: а какое значение имеет переменная сразу же после её описания? Ответ таков: в программе на языке C# значение переменной после описания не определено. Такая переменная может использоваться в левой части оператора присваивания, но её нельзя использовать в выражении или в правой части оператора присваивания. Например:

double x, y, z;

x=2.5; // так можно

y=z+1; // а так нельзя! Переменная z не определена

Для последнего оператора компилятор языка C# выдаст сообщение об ошибке. Этим свойством (нельзя использовать переменную, которая не получила ни какого значения) язык C# выгодно отличается от своих предшественников — языков С и С++.

Чтобы избежать проблемы, рекомендуется инициализировать переменные, то есть не просто выделять память под переменные, но и задавать им при этом необходимые значения. Например:

double x=3, y=4, z=5;

Инициализация переменных выполняется один раз на этапе компиляции и ни как не сказывается на скорости работы программы.

Задание и использование констант

Выше было дано определение констант. Теперь рассмотрим работу с константами более подробно.

Все константы вне зависимости от типа данных можно подразделить на две категории: именованные константы и константы, которые не имеют собственного имени. Например:

25 — константа целого типа;

3.14 — вещественная константа;

'A' — символьная константа.

Все три приведённые здесь константы не имеют имени, они заданы своим внешним представлением и используются в программе непосредственно, например так:

int k=25; // переменная k инициализирована константой — целым числом 25.

В ряде случаев константе удобнее дать имя и использовать её далее по имени. Это делает текст программы более наглядным. Обычно применяется для математических или физических констант.

В языке C# определить именованную константу очень просто Для этого используют ключевое слово const, например:

const double PI=3.14; // здесь PI — константа

double t;

t=PI * 2;

Операторы ввода-вывода встречаются в каждой программе, так как позволяют ввести необходимые для работы программы, данные с клавиатуры, из текстового файла или вывести на экран, в текстовый файл ответы, полученный в ходе выполнения программы.

организация ввода – вывода информации необходима для обеспечения связи с пользователем программы. Какая-то информация должна передаваться программе пользователем в качестве исходной, результаты обработки должны быть сообщены пользователю. Для этого используются стандартные операторы

· Read и ReadLn для чтения (ввода информации в программу);

· Write и WrileLn для записи (вывода информации из программы).

Ln (line) позволяет после выполнения оператора переместить курсор в начало следующей строки.

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

В качестве параметров оператора чтения используются имена переменных. Параметрами оператора записи могут служить текст, заключенный в апострофы, выражения.

Например, команда Writeln (‘Здравствуйте’) выведет на экран сообщение «Здравствуйте» и переместит курсор в начало следующей строки. А, команда Readln (а) будет запрашивать у пользователя ввод значения переменной а.

Рассмотрим следующий пример.

Пример. Написать программу приветствия и запроса даты рождения.

Var a,b,c: integer; {Переменные для даты рождения}

Name: string; {Переменная для имени}

BEGIN

Writeln (‘Привет. Как тебя зовут?’);

Readln (name);

Writeln (‘Введи день рождения’);

Readln (a);

Writeln (‘Введи месяц рождения’);

Readln (b);

Writeln (‘Введи год рождения’);

Readln (с);

Write (‘Тебя зовут – ’, name, ‘. Ты родился: ’, a, ‘.’,b, ‘.’,c);

Readln;

END.

Итак, наберем данную программу на компьютере и, применив пошаговую отладку, рассмотрим каждый пункт программы.

С ребятами нужно запустить данную программу и разобрать её по пунктам.

Следующий оператор, с которым мы познакомимся это оператор присваивания.

Оператор присваивания в Паскале имеет вид

А:= В,

где А – переменная некоторого типа, а В – выражение этого же типа. Выражение может включать в себя константы, переменные, знаки операций, функции, скобки. Если тип присваиваемого выражения В не соответствует типу переменной А, то компилятор выведет сообщение об ошибке Type miss match – несоответствие типов.

При выполнении этого оператора подсчитывается значение выражения, полученный результат присваивается переменной.

Рассмотрим применение данного оператора на примере.

Пример. Необходимо подсчитать значение функции f = -2,7*x2+0,23*x-1,4

Var f,x: real;

BEGIN

Writeln (‘Введите значение х’);

Readln (х);

f:=- 2.7*x*х+0.23*x-1.4;

Writeln (‘Значение функции f равно ’, f:0:2);

Readln;

END.

При выводе значения функции f добавляется следующая запись:0:2 для того, чтобы избежать вывода числа вещественного типа в экспоненциальной форме. Данной записью мы отводим для получившегося числа необходимое число позиции экрана для вывода цифр до запятой и 2 позиции – после запятой.

4. Подведение итогов.

Итак, сегодня мы познакомились с операторами ввода-вывода и присваивания.

Ребята, что нужно помнить при решении задач с использованием операторов ввода-вывода? А оператора присваивания?

При решении задач с использованием оператора ввода следует помнить, что:

  • для ввода с клавиатуры во время работы программы исходных данных (значений переменных) предназначена инструкция readln;
  • используя одну инструкцию readln, можно ввести значения нескольких переменных;

При решении задач с использованием оператора вывода следует помнить, что:

  • инструкции write и writein предназначены для вывода на экран монитора сообщений и значений переменных;
  • одна инструкция write (writein) может вывести на экран значения нескольких переменных и (или) несколько сооб щений;
  • инструкция writein без параметров переводит курсор в нача ло следующей строки экрана.

При решении задач с использованием оператора присваивания следует помнить, что:

  • инструкция присваивания используется для изменения зна чений переменных, в том числе и для вычислений по формулам;
  • тип выражения, находящегося в правой части инструкции присваивания, должен соответствовать типу переменной, имя которой стоит слева от символа инструкции присваивания (при нарушении соответствия типа переменной и выражения компилятор выводит сообщение об ошибке Type miss match - несоответствие типов).

40. 5.3. Типы данных

СУБД SYBASE SQL Anywhere поддерживает большой спектр данных. Их можно разделит на несколько категорий:

  • символьные типы;
  • числовые типы;
  • типы дата/время;
  • двоичные типы;
  • пользовательские типы.

Рассмотрим каждую категорию типов в отдельности.

Символьные типы

Символьные типы используются для представления как строк символов, так и отдельных символов. Перечень символьных типов представлен в табл. 8.

Таблица 8. Перечень символьных типов

Тип данных Назначение Размер
CHAR Строковый тип до 32767 байт. по умолчанию 1 байт
CHARACTER Тоже, что и CHAR  
CHARACTER VARYING Тоже, что и CHAR  
VARCHAR Тоже, что и CHAR  
LONG VARCHAR Символьный тип произвольной длины. Аналог МЕМО-полям в dBase, FoxPro, Access Длина произвольная. Ограничена максимальным размером файлов базы данных (2 гигобайта)
TEXT Тоже, что и LONG VARCHAR  

Данные символьных типов представляются двоичными кодами. То, как они отображаются на экранах мониторов или распечатках принтера определяется так называемыми кодовыми таблицами. СУБД SYBASE SQL Anywhere поддерживает более 50 кодовых таблиц. Они позволяют отображать текстовую информацию символами различных алфавитов, начиная от английского, русского, греческого, испанского и кончая китайским и японским. Информация об имеющихся кодовых таблицах хранится в системной таблице SYS.SYSCOLLATION. Для извлечения из нее данных достаточно выполнить оператор

SELECT * FROM SYS.SYSCOLLATION

Для того, чтобы получить информацию о кодовой таблице используемой в базе данных необходимо воспользоваться утилитой DBINFO (см. табл. 5 - 6). Для этого в утилите ISQL следует запустить ее на выполнение следующим образом:

/*Получение информации

о базе данных Dubl_Biblia*/

DBTOOL DBINFO DATABASE

'c:\database\dubl.db' //полное имя базового файла

TO 'c:\database\dbinfo.txt' /*полное имя файла

для записи результата */

USING 'UID=Stepanov; PWD=S' /*строка пара-

метров соединения */

При использовании символьных данных нужно проверить как отображается символьная информация, хранимая в базе данных на вашей ЭВМ. На разных ЭВМ, в разных операционных системах и даже в разных приложениях она может визуально представляться по - разному. Например, автор при создании базы данных Biblia столкнулись со следующим фактом. При использовании кодовой странице 866RUS текстовые данные, хранимые в этой базе данных, нормально отображались символами русского алфавита в утилите ISQL. При считывании этих же данных через интерфейс ODBC в системах Access и Borland Delphi на экране появлялась непонятная абракадабра. Только после настройки параметров источника данных (было заполнено поле Translator Name - см. рис.16) проблема была решена.

Числовые типы

Числовые типы предназначены для обозначения целых, вещественных и денежных типов. Представители числовых типов приведены в табл. 9.

Таблица 9. Перечень числовых типов

Тип данных Диапазон значений Точность - число знаков после запятой Размер
INTEGER от -2 147 483 648 до +2 147 483 647   4 байта
INT Тоже, что и INTEGER    
SMALLINT от -32 768 до +32 767   2 байта
REAL от -3.4 e-38 до 3.4 e+38 до 6 4 байта
FLOAT Тоже, что и REAL    
DOUBLE от -1.797 e-308 до +1.797 e+308 до 15 8 байт
TINYINT от 1 до 255   1 байт
DECIMAL числа состоящие из N цифр c M цифрами в дробной части. По умолчанию N=30, M=6 M сколько требуется
NUMERIC Тоже, что и DECIMAL    
MONEY Для хранения денежных величин. Допустимо значение NULL. Числа из 20 цифр, с 4 цифрами после запятой    
SMALLMONEY Для хранения денежных величин. Допустимо значение NULL.. Числа из 10 цифр, с 4 цифрами после запятой    

Типы дата/время

Типы дата/время предназначены для хранения времени, дат и дат совместно с временем. Такие типы, поддерживаемые СУБД SQL Anywhere, перечислены в табл. 10.

Таблица 10. Перечень типов дата/время

Тип данных Назначение Размер
DATE Тип для представления даты в виде совокупности года, месяца и числа. Значение года может изменяться в диапазоне от 0001 до 9999 года 4 байта
TIME Тип для представления времени в виде совокупности часа, минут, секунд и долей секунд. Доли секунд хранятся с точностью до 6 знаков. 8 байт
TIMESTAMP Тип для представления момента времени конкретной даты. Данные хранятся в виде совокупности года, месяца, числа, часа, минут, секунд и долей секунд. Доли секунд хранятся с точностью до 6 знаков. 8 байт
DATETIME Тоже, что и TIMESTAMP  
SMALLDATETIME Тоже, что и TIMESTAMP  

Обмен данными типа дата/время с базами данных производится:

  • в формате структуры TIMESTAMP при использовании интерфейса ODBC;
  • в формате структуры SQLDATETIME, если взаимодействие приложений с СУБД осуществляется через интерфейс Embedded SQL (см. рис. 1);
  • через строку символов в других случаях.

В первых двух случаях все компоненты данных типа дата/время записываются в свои поля. В результате этого достигается однозначное представление информации. При использовании строки формат данных типа дата/время определяется такими параметрами баз данных как DATA_FORMAT, DATA_ORDER, TIME_FORMAT и TIMESTAMP_FORMAT. Различные сочетания этих параметров порождают большое число вариантов форматов. Однако это не должно вызывать особого беспокойства. Параметры базы данных устанавливаются для всей базы данных и действуют на все приложения и всех пользователей. Форматы данных типа дата/время, определяемые вышеуказанными параметрами баз данных по умолчанию, представлены в табл. 11.

Таблица 11. Форматы представления данных типа дата/время, определяемые по умолчанию

Тип данных Формат, используемый по умолчанию
DATE 'YYYY-MM-DD'
TIME 'HH:NN:ss.SSS'
TIMESTAMP 'YYYY-MM-DD HH:NN:ss.SSS'
DATETIME 'YYYY-MM-DD HH:NN:ss.SSS'
SMALLDATETIME 'YYYY-MM-DD HH:NN:ss.SSS'

В табл. 11 используются следующие сокращения:

  • YYYY - четыре цифры, обозначающие год:
  • MM - две цифры, обозначающие месяц:
  • DD - две цифры, обозначающие день:
  • HH - две цифры, обозначающие часы:
  • NN - две цифры, обозначающие минуты:
  • ss - две цифры, обозначающие секунды:
  • SSS - три цифры, обозначающие доли секунд.

По умолчанию составляющие времени HH, NN, ss, SSS принимаются равными нулю, а DD - единице. Содержимое строк, представляющие данные типа дата/время, конвертируются автоматически. Некоторые примеры такого преобразования приведены в табл. 12.

Таблица 12. Примеры преобразования типов дата/время

Тип данных Содержимое строки Результат преобразования
DATE '1994-06-08' '1994-06' '1994-' '1994' '1994-06-08' '1994-06-01' Ошибка преобразования Ошибка преобразования
TIME '19:50:25.136777' '19:50:25' '19:50' '19:' '19' '19:50:25.136' '19:50:25.000' '19:50:00.000' '19:50:00.000' Ошибка преобразования
TIMESTAMP '1994-06-08 19:50:25.136777' '1994-06 19:50' '1994-06' '1994-06-08 19:50:25.000' '1994-06-01 19:50:00.000' '1994-06-01 00:00:00.000'

К сказанному следует добавить, что к данным типа дата/время применимы арифметические операции, перечень которых представлен в табл. 13.

Таблица 13. Арифметические операции, применимые к данным типов дата/время

Тип первого операнда Операция Тип второго операнда Тип результата Примечание
DATE + (-) INTEGER DATE Увеличивает (Уменьшает) значение даты на целое количество дней
TIMESTAMP + (-) INTEGER TIMESTAMP Увеличивает (Уменьшает) значение даты на целое количество дней
DATE + TIME TIMESTAMP Формирует из исходных операндов значение типа TIMESTAMP
DATE - DATE INTEGER Определяет разницу в днях между значения дат исходных операндов
DATE - TIMESTAMP INTEGER Определяет разницу в днях между значения дат исходных операндов
TIMESTAMP - DATE INTEGER Определяет разницу в днях между значения дат исходных операндов
TIMESTAMP - TIMESTAMP INTEGER Определяет разницу в днях между значения дат исходных операндов

Двоичные типы

Двоичные типы предназначены для представления двоичных данных, включая изображения и другую информацию, не обрабатываемую собственными средствами СУБД. Все двоичные типы приведены в табл. 14.

Таблица 14. Двоичные типы SQL Anywhere

Тип данных Назначениеs Размер
BIT Тип для представления значений 0 и 1. Аналог полей типа Logical в dBase, FoxPro 1 байт
BINARY Тоже, что и CHAR, за исключением операций сравнения. В отличии от CHAR, данные этогопо умолчанию 1 байт типа сравниваются на полное совпадение двоичных кодов байтов до 32767 байт
LONG BINARY Тип для представления двоичных данных произвольной длины Длина произвольная. Ограничена максимальным размером файлов базы данных (2 гиго- байта)
IMAGE Тоже, что и LONG BINARY  


Поделиться:


Последнее изменение этой страницы: 2016-08-06; просмотров: 910; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.147.146 (0.012 с.)