Podstawy Programowania 03 Zlozo Nieznany

background image

1

Podstawy Programowania

ZŁO

Ż

ONE TYPY DANYCH,

LOGIKA CYFROWA I MACIERZE

Michał Bujacz

bujaczm@p.lodz.pl

B9 „Lodex” 207

godziny przyj

ęć

:

ś

rody i

czwartki 10:00-11:00

http://www.eletel.p.lodz.pl/bujacz/

background image

Pytania z ostatniego wykładu:

o

Instrukcja (Instruction)

o

Zmienna (Variable), nazwa (Identifier)

o

Słowo kluczowe (Keyword)

o

Wyra

ż

enie (Expression)

o

Operator (Operator)

o

Komentarz (Comment)

2

background image

Pytania z ostatniego wykładu:

o

Integer / short / long

co to „two’s complement” ?

o

Floating point / double

co to mantysa i wykładnik?

o

Char

o

Boolean

background image

Pytania z ostatniego wykładu:

o

Jaka jest najwi

ę

ksza liczba całkowita jak

ą

mo

ż

emy zapisa

ć

na 2 bajtach? Ze znakiem?

Bez znaku?

o

Zapisz liczb

ę

FF34 binarnie i dziesi

ę

tnie

o

Ile spacji powinno oddziela

ć

ka

ż

dy poziom

kodu w Pythonie?

background image

Logika cyfrowa

background image

Operatory cyfrowe

XOR

x ^ y

negacja bitowa
liczbowo to -x - 1

~ x

OR

x | y

AND

x & y

przesu

ń

bity o y w prawo

po lewej wchodz

ą

zera

to samo co dzielenie przez 2

y

x >> y

przesu

ń

bity o y w lewo

po prawej wchodz

ą

zera

to samo co mno

ż

enie przez 2

y

x << y

background image

Maskowanie bitowe

o

Rejestr R

o

Jak sprawdzi

ć

co siedzi w R

4

?

o

Jak przestawi

ć

R

4

na 1?

o

Jak przestawi

ć

R

4

na 0?

?

?

?

?

?

?

?

?

R

0

R

1

R

2

R

3

R

4

R

5

R

6

R

7

background image

Maskowanie – odczyt bitu

o

Jak sprawdzi

ć

co siedzi w R

4

?

10011101 10010101

AND 00001000 00001000

= 00001000 00000000

?

?

?

?

?

?

?

?

R

0

R

1

R

2

R

3

R

4

R

5

R

6

R

7

0

0

0

0

1

0

0

0

AND

0

0

0

0

?

0

0

0

=

background image

Maskowanie – ustawianie bitu

Jak przestawi

ć

R

4

na 1?

10011101

10010101

OR 00001000

00001000

= 10011101

10011101

?

?

?

?

?

?

?

?

R

0

R

1

R

2

R

3

R

4

R

5

R

6

R

7

0

0

0

0

1

0

0

0

OR

?

?

?

?

1

?

?

?

=

background image

Maskowanie – zerowanie bitu

Jak przestawi

ć

R

4

na 0?

10011101 10010101

AND 11110111 11110111

= 10010101 10010101

?

?

?

?

?

?

?

?

R

0

R

1

R

2

R

3

R

4

R

5

R

6

R

7

1

1

1

1

0

1

1

1

AND

?

?

?

?

0

?

?

?

=

background image

Konwersja little-big endian

Jak wykona

ć

operacj

ę

x



y dla 4 bajtowych liczb?

x = 4F 52 17 01 y = 01 17 52 4F

y1 = x >> 24

# 00 00 00 4F

y2 = x & 00FF0000

# 00 52 00 00

y2 = y2 >> 8

# 00 00 52 00

y3 = x & 0000FF00

# 00 00 17 00

y3 = y3 << 8

# 00 17 00 00

y4 = x << 24

# 01 00 00 00

y = y1 | y2 | y3 | y4

# 01 17 52 4F

background image

Zło

ż

one typy danych

Jedna zmienna mo

ż

e odnosi

ć

si

ę

do zbioru

danych jednego lub kilku ró

ż

nych typów

o

Tablice/Sekwencje (list, str, buffer, np.matrix)

o

Zbiory/słowniki (set,dict)

o

Struktury/Rekordy

o

Klasy/obiekty

12

background image

Tablice/Sekwencje

o

zmienne indeksowane, uporz

ą

dkowane

o

indeksy zaczynaj

ą

si

ę

od 0 (wyj

ą

tki – Matlab,

Mathematica, Fortran, zaczynaj

ą

od 1)

o

indeks podawany w kwadratowych klamrach

o

zazwyczaj jeden typ danych

o

jedno lub wielowymiarowe

background image

Tablice w Pytonie

o

Do

ść

nietypowe w porównaniu z wi

ę

kszo

ś

ci

ą

j

ę

zyków (np. Java czy C)

o

mog

ą

trzyma

ć

dowolne i ró

ż

ne typy danych

(heterogenous)

o

mog

ą

dynamicznie zmienia

ć

rozmiar i typ

danych (mutable)

o

indeksowane od 0

o

mo

ż

na u

ż

ywa

ć

ujemnych indeksów

background image

Tworzenie tablic/list

o

lista = [1, 3.14, ‘a’, ‘b’, ‘c’]

o

lista

[1, 3.14, ‘a’, ‘b’, ‘c’]

o

lista[0]

1

o

lista[-1]

‘c’

background image

Tworzenie tablic (2)

o

lista2 = [0]*5

#tworzy tablic

ę

o 5 elementach równych 0

SIZE = 1024

bufor = [0]*SIZE

background image

Metody do u

ż

ycia na tablicach

<lista>.append(x)

dodaj warto

ść

x do ko

ń

ca listy (wydłu

ż

a tablic

ę

o 1)

<lista>.sort()

sortuj list

ę

(parametr decyduje o kolejno

ś

ci)

<lista>.reverse()

odwraca kolejno

ść

elementów w li

ś

cie

<lista>.index(x)

zwraca indeks kiedy warto

ść

x pojawia si

ę

pierwszy raz

<lista>.insert(i,

x)

wstawia warto

ść

x pod indeks i (wydłu

ż

a tablic

ę

o 1)

<lista>.count(x)

liczy ile razy warto

ść

x pojawia si

ę

w li

ś

cie

<lista>.remove(x)

usuwa pierwszy element równy x (skraca tablic

ę

o 1)

<lista>.pop(i)

usuwa element o indeksie i, zwraca jego warto

ść

(skraca tablic

ę

o

1)

background image

Operatory na listach

<lista>

+

<lista>

scalenie (concatenation)

<lista>

*

<liczba>

powielenie

<lista>

[

i

]

warto

ść

pod indeksem i

len(

<lista>

)

długo

ść

listy

<lista>[

:

]

ci

ę

cie (slicing) – zwraca

now

ą

list

ę

od (włacznie) do

for

<zmienna>

in

<lista>

:

p

ę

tla „po li

ś

cie”

<x>

in

<lista>

sprawdza czy warto

ść

jest w

sekwencji (zwraca
prawd

ę

/fałsz)

background image

U

ż

ywanie listy jako stosu

o

Stos to popularna struktura programistyczna typu
„Last-in, first-out”

o

Odkładamy na stos - powi

ę

kszamy list

ę

o element

o

Zdejmujemy ze stosu -> skracamy list

ę

>

stos = [10]

>

stos.append(20) # push

>

stos

[10, 20]

>

stos.pop() #kasuje i zwraca ostatni element

20

background image

Zbiory, słowniki

Jak sekwencje, tylko nie indeksowane liczbowo

Zbiory (set) nie zawieraj

ą

powtarzaj

ą

cych si

ę

elementów

Słowniki (dict) zawieraj

ą

pary klucz:warto

ść

background image

Zbiory, przykład

>>> koszyk = ['apple', 'orange', 'apple',

'pear', 'orange', 'banana'] #lista owocow

>>> owoce = set(basket) #zbior owocow

>>> owoce

set(['orange', 'pear', 'apple', 'banana'])

>>> 'orange' in owoce

#czy cos jest w zbiorze?

True

>>>

pineapple' in owoce

False

background image

Operacje na zbiorach

>>> a = set('abracadabra')

>>> b = set('alacazam')

>>> a

# litery w a

set(['a', 'r', 'b', 'c', 'd'])

>>> a - b # litery w a, ale nie w b

set(['r', 'd', 'b'])

>>> a | b # litery w a lub w b

set(['a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'])

>>> a & b # litery w a i w b

set(['a', 'c'])

>>> a ^ b # (a | b) – (a & b)

set(['r', 'd', 'b', 'm', 'z', 'l'])

background image

Przykład słownika

>>> tel = {'jack': 4098, 'sape': 4139}

>>> tel['guido'] = 4127

>>> tel

{'sape': 4139, 'guido': 4127, 'jack': 4098}

>>> tel['jack']

4098

>>> del tel['sape']

>>> tel['irv'] = 4127

>>> tel

{'guido': 4127, 'irv': 4127, 'jack': 4098}

>>> list(tel.keys())

['irv', 'guido', 'jack']

>>> sorted(tel.keys())

['guido', 'irv', 'jack']

>>> 'guido' in tel

True

>>> 'jack' not in tel

False

background image

Ła

ń

cuchy (string)

o

w prezentacji Marka

background image

25

Programing exercises

PROGRAMMING
EXERCISE


Wyszukiwarka

Podobne podstrony:
Podstawy programowania 1 W2 id Nieznany
podstawy programowania id 36797 Nieznany
podstawy programowania java id Nieznany
Podstawy programowania komputer Nieznany
FANUC podstawy programowania id Nieznany
Zmiany w podstawie programowej Nieznany
Podstawa programowa ksztalcenia Nieznany
pp program wykladu zaoczne 03, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy pr
MwN GIM nowa podstawa programow Nieznany
Podstawy programowania w C palu Nieznany
03. Podstawy programowania, Materiały z progów
Podstawy programu FDS id 368033 Nieznany
podstawa programowa Wf id 36613 Nieznany
Podstawy programowania komputer Nieznany
FANUC podstawy programowania id Nieznany
Nowa podstawa programowa WF (1)

więcej podobnych podstron