Zmienne i operacje typow prosty Nieznany

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

1

JiPP3

3. Zmienne i operacje typów

prostych

Włodzimierz Kasprzak

Włodzimierz Kasprzak

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

2

Układ

1.

Wbudowane typy danych

2.

Nazwy zmiennych

3.

Typy wbudowane i operacje

4.

Typy „proste” definiowane przez programistę

5.

Konwersje typów

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

3



1. Typy danych

Wśród

typów wbudowanych

języka wyróżnia się



typy proste (value-type, typ dla wartości) i



typy referencyjne.

Typ referencyjny

Typ referencyjny

Typ wbudowany j

ę

zyka

(mechanizm CTS)

Typ wbudowany j

ę

zyka

(mechanizm CTS)

Typ prosty

Typ prosty

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

4

Porównanie typów wbudowanych



Zmienna typu prostego:



Zawiera swoją wartość.



Każda zmienna typu
prostego odnosi się do
swojego, unikalnego
miejsca w pamięci.



Operacja wykonywane
na zmiennej nie
wpływają na inne
zmienne.



Zmienna referencyjna:



Zawierają odniesienia
(ukryte adresy) do swoich
danych (obiektów).



Dwie zmienne referencyjne
mogą odnosić się do tego
samego obiektu.



Operacje na jednej
zmiennej mogą wpływać na
inne.

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

5

Typy dla wartości - wbudowane lub programisty



Np.:



int



float



Np.:



enum



struct

Typy programisty

Typy programisty

Typy dla wartości

Typy dla wartości

Typy wbudowane

Typy wbudowane

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

6

Typy proste – wbudowane typy dla wartości



Rozpoznawane dzięki słowom kluczowym języka:



int // Słowo kluczowe języka – alias typu

struct

- lub odpowiadających im nazwom, np. -



System.Int32 // Nazwa typu

struct

zdefiniowana

// w obszarze nazw

System



Słowa kluczowe typów prostych stanowią synonimy nazw
definiowanych jako stuktury w standardowym obszarze
nazw

System

jezyka

C#.

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

7

Typy proste – wbudowane typy dla wartości



Słowo kluczowe dla typu i odpowiedni typ strukt

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

8



2. Nazwy zmiennych



Zasady tworzenia nazw



Stosujemy litery, znak podkreślenia i cyfry.



Rozpoczyna się literą lub znakiem

podkreślenia.



Konwencje:



Wyłącznie duże litery tylko dla nazw

stałych symbolicznych.



Nie rozpoczynaj od podkreślenia.



Unikaj skrótów w nazwach.



Stosuj duże litery dla rozpoczęcia słowa w

wielosłowowych nazwach.



Nazwy pól klasy i parametrów rozpoczynaj

małą literą. Pozostałe nazwy rozpoczynaj

dużą literą.

different
Different

different
Different

Answer42
42Answer

Answer42
42Answer

















BADSTYLE
_poorstyle
BestStyle

BADSTYLE
_poorstyle
BestStyle













Msg
Message

Msg
Message









background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

9

Słowa kluczowe C#



Słowa kluczowe są zarezerwowanymi nazwami



Nie można re-definiować słów kluczowych



spowoduje błąd kompilacji.



Unikaj nazw różniących się od słów kluczowych jedynie
rozmiarem liter, np.

abstract, base, bool, default, if, finally

abstract, base, bool, default, if, finally

int INT; // Z

ł

y styl

int INT; // Z

ł

y styl

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

10

Słowa kluczowe C#

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

11

Test. Które nazwy są niepoprawne i dlaczego?

char $diskPrice;

char $diskPrice;

char middleInitial;

char middleInitial;

int 12count;

int 12count;

float this;

float this;

2

2

2

3

3

3

4

4

4

1

1

1

int __identifier;

int __identifier;

5

5

5

Błąd

Błąd

Poprawne

Błąd

Poprawne

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

12



3. Typy wbudowane i operacje



Instrukcje deklaracji zmiennych:



Wiele nazw w jednej instrukcji:

-- lub --

int itemCount;

int itemCount;

int itemCount, employeeNumber;

int itemCount, employeeNumber;

int itemCount,

employeeNumber;

int itemCount,

employeeNumber;

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

13

Nadanie wartości zmiennej



Poprzez operację przypisania do wcześniej zdefiniowanych
zmiennych:



Poprzez inicjalizację w miejscu definicji zmiennej:



Nie można odwoływać się do wartości niezainicjalizowanej
zmiennej.

int employeeNumber;

employeeNumber = 23;

int employeeNumber;

employeeNumber = 23;

int employeeNumber = 23;

int employeeNumber = 23;

char middleInitial = 'J';

char middleInitial = 'J';

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

14

Rozszerzone operacje przypisania



Operacja dodawania wartości do zmiennej:



Taka operacja może być też zapisana krótko:



Rozszerzone operacje przypisania występują dla
wszystkich operacji arytmetycznych, np..:

itemCount = itemCount + 40;

itemCount = itemCount + 40;

itemCount += 40;

itemCount += 40;

itemCount -= 24;

itemCount -= 24;

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

15

Podstawowe operatory

Podstawowe Operatory

Podstawowe

Podstawowe

Operator

Operator

y

y

Równościowe

Porównania

Logiczne

Inkrementacja

Dekrementacja

Arytmetyczne

Przypisania

Przyk

Przyk

ł

ł

ad

ad

== !=

< > <= >= is

&& || ?:

++

- -

+ - * / %

= *= /= %= += -= <<=

>>= &= ^= |=

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

16

Inkrementacja i dekrementacja



Zmiana wartości zmiennej o jeden



Skrótowy zapis w postaci operacji inkrementacji lub
dekrementacji



Te

operacje

występują

w

2

postaciach:

przedrostkowej i przyrostkowej

itemCount += 1;
itemCount -= 1;

itemCount += 1;
itemCount -= 1;

itemCount++;
itemCount--;

itemCount++;
itemCount--;

++itemCount;
--itemCount;

++itemCount;
--itemCount;

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

17

Inkrementacja i dekrementacja



Te operacje są rozszerzonymi przypisaniami –
zwracają wynik:



Różnica między przedrostkową a przyrostkową
wersją operatora:

int itemCount = 0;
Console.WriteLine(itemCount += 2); // Wyprowadzi 2
Console.WriteLine(itemCount -= 2); // Wyprowadzi 0

int itemCount = 0;
Console.WriteLine(itemCount += 2); // Wyprowadzi 2
Console.WriteLine(itemCount -= 2); // Wyprowadzi 0

int itemCount = 42;
int prefixValue = ++itemCount; // prefixvalue = 43
int postfixValue = itemCount++;//postfixvalue = 43

int itemCount = 42;
int prefixValue = ++itemCount; // prefixvalue = 43
int postfixValue = itemCount++;//postfixvalue = 43

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

18

Wiązanie i priorytet operatora



Wiązanie operatora w wyrażeniu złożonym



Za wyjątkiem operatorów przypisania wszystkie
operatory

2-argumentowe

posiadają

wiązanie

lewostronne.



Operatory przypisania i 3-argumentowy (?:) posiadają
wiązanie prawo-stronne.

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

19



4. Typy „proste” definiowane przez

programistę

Typy

„dla

wartości”

definiowane

przez

programistę:



Typy wyliczeniowe



Struktury

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

20

Typy wyliczeniowe



Definicja typu wyliczeniowego



Zmienna typu wyliczeniowego



Korzystanie ze zmiennej

enum Color { Red, Green, Blue }//Nada wartości 0,1,2

enum Color { Red, Green, Blue }//Nada wartości 0,1,2

Color colorPalette = Color.Red;

Color colorPalette = Color.Red;

Console.WriteLine(“{0}”, colorPalette);//Wyświetli Red

Console.WriteLine(“{0}”, colorPalette);//Wyświetli Red

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

21

Struktury



Definicja typu strukturalnego



Zmienna typu strukturalnego (struktura)



Zmienne typów strukturalnych traktowane są w C# tak, jak
zmienne innych typów dla wartości – alokowane są w obszarze
stosu danych, a nie w pamięci dynamicznej danych programu.

Employee companyEmployee;
companyEmployee.firstName = "Joe";
companyEmployee.age = 23;

Employee companyEmployee;
companyEmployee.firstName = "Joe";
companyEmployee.age = 23;

public struct Employee
{

public string firstName;
public int age;

}

public struct Employee
{

public string firstName;
public int age;

}

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

22



5. Konwersje typów danych



Niejawne konwersje



Jawne konwersje

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

23

Niejawne konwersje typów



Konwersja z

int

do

long

:



Niejawne konwersje

nie kończą się błędem



Można utracić precyzję ale nie przekroczymy zakresu

using System;
class Test
{

static void Main( )

{

int intValue = 123;
long longValue = intValue; // Konwersja niejawna
Console.WriteLine("(long) {0} = {1}", intValue,

longValue);
}

}

using System;
class Test
{

static void Main( )

{

int intValue = 123;
long longValue = intValue;

// Konwersja niejawna

Console.WriteLine("(long) {0} = {1}", intValue,

longValue);
}

}

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

24

Jawne konwersje typów



Wymaga użycia wyrażenia konwersji typu:



Takie konwersje mogą zakończyć się błędem. Np. W powyższym
przykładzie wystąpi

błąd przekroczenia zakresu

– wynik będzie

postaci:

(int) 9223372036854775807 





 -1

using System;
class Test
{

static void Main( )

{

long longValue = Int64.MaxValue;
int intValue = (int) longValue; // Jawna konwersja
Console.WriteLine("(int) {0} = {1}", longValue,

intValue);
}

}

using System;
class Test
{

static void Main( )

{

long longValue = Int64.MaxValue;
int intValue =

(int)

longValue;

// Jawna konwersja

Console.WriteLine("

(int)

{0} = {1}", longValue,

intValue);
}

}

background image

W.Kasprzak: JiPP3

3. Zmienne i operacje

25

Jawne konwersje typów



W poprzednim przykładzie program przeszedł „do porządku”
nad błędem przekroczenia zakresu. Aby został zgłoszony
wyjątek tego typu należy użyć bloku ze słowem kluczowym

checked

:


Wyszukiwarka

Podobne podstrony:
Badania operacyjne wyklad 2 id Nieznany
badania operacyjne 3 id 76767 Nieznany (2)
Obliczenie czasu operacji id 32 Nieznany
badania operacyjne poss intro i Nieznany (2)
Badania operacyjne, zadanie id Nieznany (2)
02 Charakteryzowanie typow i ro Nieznany (2)
zmienna zalezna i niezalezna id Nieznany
02 Charakteryzowanie typow i ro Nieznany
badania operacyjne 1 id 76766 Nieznany
Badania operacyjne Zadanie tran Nieznany (2)
1 Zmiennosc procesu Sid 10162 Nieznany (2)
6 zmienna losowa id 44007 Nieznany
opieka o operacyjna id 336531 Nieznany
podstawowe operacje na wykresie Nieznany
badania operacyjne 9 id 76768 Nieznany
5 napieci zmienne cw5 id 60977 Nieznany (2)
1 2 Operacje bankoweid 8885 Nieznany

więcej podobnych podstron