Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л. Часть 1. Типы данных и операторы присваивани...doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
239.62 Кб
Скачать

Автор: Горелов С.В.

Л. СТРУКТУРА ПРОГРАММЫ.

ТИПЫ ДАННЫХ И ОПЕРАТОРЫ.

1. Структура программы

Все С#-программы имеют объектную ориентацию.

В общем случае программа может иметь следующую структуру:

using пространство_имен;

. . .

namespace пространство_имен

{

}

class имя_1

{

объявление переменных класса

методы

}

class имя_2

{

объявление переменных класса

методы

}

. . .

class имя_N

{

объявление переменных класса

статический метод Main()

другие методы

}

Структура метода:

Заголовок метода

{

объявление переменных метода

оператор1;

оператор2;

. . .

}

Реальная С#-программа.

/* Это простая С#-программа.

Назовем ее Example.cs

*/

using System;

class Example

{

// Любая С#-программа начинается с метода Main().

public static void Main ()

{

Console.WriteLine ("Простая С#-программа");

}

}

C#-программа может иметь любое имя.

Расширение - .cs.

В С# поддерживается три стиля комментариев:

1) Многострочный

/*

Это простая С#-программа.

Назовем ее Example.cs.

*/

2) Однострочный

// Любая C#-программа начинается с метода Main().

3) В стиле xml

/// тег XML

Элементы программы:

using System;

Пространство имен, используемое по умолчанию.

Имена, объявленные в одном пространстве имен, не будут конфликтовать с такими же именами, объявленными в другом.

class Example

Ключевое слово class используется для объявления нового класса.

public static void Main()

В С# подпрограмма называется методом (method). Все C#-приложения начинают выполняться с вызова метода Main().

Ключевое слово static позволяет реализовать вызов метода Main() еще до создания объекта соответствующего класса.

Console.WriteLine ("Простая C#-программа");

Console — это имя встроенного класса, который поддерживает консольные операции ввода-вывода данных.

Передаваемая методу информация называется аргументом.

В языке С# различаются прописные и строчные буквы.

Console.WriteLine ( "Простая C#-программа.");

Можно заменить:

System.Console.WriteLine ( "Простая C#-программа.");

Вторая простая программа:

// Эта программа демонстрирует работу с переменными.

using System;

class Example2

{

public static void Main()

{

Int х; // Здесь объявляется переменная

Int у; // и еще одна переменная.

х = 100; // Здесь переменной х присваивается 100.

Console.WriteLine ("х содержит " + х);

у = х / 2;

Console.Write ("y содержит х / 2: ");

Console.WriteLine (у);

}

}

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

Во время выполнения программы значение переменной может меняться.

Формат объявления переменной:

тип имя_переменной;

Имя, присвоенное переменной, методу, классу или иному элементу, определенному пользователем, называется идентификатором.

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

Ключевые слова нельзя использовать в качестве имен переменных, классов или методов.

Ключевые слова С#

abstract

event

new

struct

as

explicit

null

switch

base

extern

object

this

bool

false

operator

throw

break

finally

out

true

byte

fixed

override

try

case

float

params

typeof

catch

for

private

uint

char

foreach

protected

ulong

checked

goto

public

unchecked

class

if

readonly

unsafe

const

implicit

ref

ushort

continue

in

return

using

decimal

int

sbyte

virtual

default

interface

sealed

volatile

delegate

internal

short

void

do

is

sizeof

while

double

lock

stackalloc

else

long

static

enum

namespace

string

Наиболее часто переменные используются в операторе присваивания.

Оператор присваивания представляется одиночным знаком равенства (=). Его действие заключается в копировании значения, расположенного справа от оператора, в переменную, указанную слева от него.

а = b + с;

Наиболее распространенные арифметические операции:

+ Сложение – Вычитание

* Умножение / Деление % Остаток от /

2. Типы данных

2. 1. Переменные

Данные делятся на переменные и константы.

Данные различаются своим типом:

  • встроенные

  • пользовательские

Встроенные типы языка С#

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

Имя типа

Системный тип

Значения

Размер

bool

System.Boolean

true, false

8 бит

Арифметические целочисленные типы

Имя типа

Системный тип

Диапазон

Размер

sbyte

System.SByte

-128 — +127

Знаковое, 8 Бит

byte

System.Byte

0 — 255

Беззнаковое, 8 Бит

short

System.Short

-32768 —32767

Знаковое, 16 Бит

ushort

System.UShort

0 — 65535

Беззнаковое, 16 Бит

int

System.Int32

(-2*10^9 — 2*10^9)

Знаковое, 32 Бит

uint

System.UInt32

(0 — 4*10^9)

Беззнаковое, 32 Бит

long

System.Int64

(-9*10^18 — 9*10^18)

Знаковое, 64 Бит

ulong

System.UInt64

(0— 18*10^18)

Беззнаковое, 64 Бит

Арифметический тип с плавающей точкой

Имя типа

Системный тип

Диапазон

Точность

float

System.Single

+1.5*10^-45 - +3.4

10^38

7 цифр

double

System.Double

+5.0*10^-324 - +1.7*10^308

15-16 цифр

Арифметический тип с плавающей точкой повышенной точности

Имя типа

Системный тип

Диапазон

Точность

decimal

System.Decimal

+1.0*10^-28 - +7.9*10^28

28-29 значащих цифр

Символьные типы, строковые типы

Имя типа

Системный тип

Диапазон

Точность

char

System.Char

U+0000 - U+ffff

16 бит Unicode символ

string

System.String

Строка из символов Unicode

Объектный тип

Имя типа

Системный тип

Примечание

object

System.Object

Прародитель всех встроенных и пользовательских типов

Стандарт языка C# включает следующий набор фундаментальных типов:

  • Логический тип (bool).

Значения false и true

bool flag, indicator;

  • Символьный тип (char).

char ch1, ch2, ch3;

Для представления отдельных символов и символов строк в С# используется Unicode (уникод), 16-раз­рядный стандарт кодирования символов. Стандартный 8-разрядный набор символов ASCII составляет лишь подмножество Unicode с диапазоном 0-127.

  • Строковый тип

string str1, str2;

  • Целые типы.

int x, y, z;

uint var1;

long leng;

Могут быть одного из четырех размеров – char, byte, short, int, long, сопровождаемые описателем s (signed) или u (unsigned), который указывает, как интерпретируется значение, - со знаком или без него.

  • Типы с плавающей точкой.

float area;

double угол;

decimal price, length;

Эти типы также могут быть одного из трех размеров - float, double, decimal.

Кроме того, в языке есть

  • Тип void.

Используется для указания на отсутствие информации.

  • Указатели.

Например, int* - указатель на переменную типа int.

  • Ссылки.

Например, double& - ссылка на переменную типа double.

  • Массивы

Например, char[ ] – массив (вектор) элементов типа char.

int[,] – массив (матрица) элементов типа int.

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

Все встроенные типы C# однозначно отображаются на системные типы каркаса .Net Framework, размещенные в пространстве имен System. Поэтому всюду, где можно использовать встроенное имя типа, например, int, с тем же успехом можно использовать и системное имя System.Int32.

int v = new Int32();

В языке C# сглажено различие между типом и классом. Все типы - встроенные и пользовательские - одновременно являются классами, связанными отношением наследования.

Типы, определяемые пользователем:

  • Классы (class).

  • Структуры (struct).

  • Перечислимые типы (enum).

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

Родительским, базовым классом, является класс Object. Все остальные типы или, точнее, классы являются его потомками, наследуя методы этого класса.

У класса Object есть четыре метода:

  • bool Equals(object obj) - проверяет эквивалент­ность текущего объекта и объекта, переданного в качестве аргумента;

  • System.Type GetType() - возвращает системный тип текущего объекта;

  • string ToString() - возвращает строку, связанную с объектом. Для арифметических типов возвращается значение, преобразованное в строку;

  • int GetHashCode() - служит как хэш-функция в соответствующих алгоритмах поиска по ключу при хранении данных в хэш-таблицах.

Естественно, что все встроенные типы нужным образом переопределяют методы родителя и добавляют собственные методы и свойства

2.2. Константы

Константы

Литералы

Именованные

константы

Литералы

Строковые литералы

"Строка – это набор символов, заключенных в двойные кавычки. "

"Это тест"

string s1 = "Москва – город герой!";

Символьные литералы.

'а', '%'

char ch = 'X';

ESC-последовательности

Помимо обычных символов, строковый литерал может содержать одну или несколько управляющих последовательностей, называемых ESC-последова­тель­ностями.

Управляющие последовательности символов

ESC-последо-

вательность Описание

\a Звуковой сигнал (звонок)

\b Возврат на одну позицию

\f Подача страницы (для перехода к началу

следующей страницы)

\n Новая строка

\r Возврат каретки

\t Горизонтальная табуляция

\v Вертикальная табуляция

\0 Нуль-символ

\' Одинарная кавычка (апостроф)

\" Двойная кавычка

\\ Обратная косая черта

ch = '\n' ;

// Использование ESC-последовательностей в строках.

using System;

class StrDemo

{

public static void Main()

{

Console.WriteLine ("Первая строка\nВторая строка" +

"\nТретья строка");

Console.WriteLine ("Один\tДва\tТри");

Console.WriteLine ( "Четыре\tПять\tШесть") ;

// Вставляем кавычки.

Console.WriteLine("\"3ачем?\", спросил он.");

}

}

Вот что получаем в результате:

Первая строка

Вторая строка

Третья строка

Один Два Три

Четыре Пять Шесть

"Зачем?", спросил он.

Не путайте строки с символами!

char ch1 = 'X';

string s1 = "X";

// s1 = 'X'; // ERROR

Целочисленным литералам может быть присвоен один из типов: int, uint, long или ulong.

Присваивается наименьший по длине тип.

Целочисленные литералы типа int:

-100, 56

Чтобы принудительно задать литерал типа long, присоедините к его концу букву l или L.

-100L, 56L

Целочисленное значение без зна­ка: суффикс u или U.

-100UL, 56u

Вещественным литералам может быть присвоен один из типов: float или double.

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

11.123, -75.0, 0.123

Несмотря на то что целочисленные литералы создают int-, uint-, long- или ulong-значения по умолчанию, их тем не менее можно присваивать переменным типа byte, sbyte, short или ushort, если, конечно, они могут быть представлены соответствующим типом.

Чтобы задать литерал типа float, используйте суффикс f или F.

11.123F, 10.19F

Чтобы задать литерал типа decimal, используйте суффикс m или М.

9.95М

Шестнадцатеричные литералы (целые числа)