Zestaw na powtórke

Opracowanie part 1

*Ada jest nieczuła na małe/duże znaki.

* symbol „ ` „ służy do wywoływania atrybutów danego obiektu

A: Integer := Integer’image(x) -> używane w celu wyświetlenia wartości Typu in ( zmienna)

Co w przypadku nowych typów?

INT X

TYPE INT IS NEW …

W tej sytuacji

Int’image(x) -> będzie działać

Integer’image(x) -> Nie będzie

Jeśli użyjemy subtype ze Int jest subtypem Integera to obydwa wywołania atrybutu są dopuszczalne.

:= podstaw

= równe

/= Nie równe

Mod reszta dzielenia

Rem ?

Abs ?

I : Integer;

A,b,c, :Integer

X: Integer:=0;

K,l:Integer:=1; ( deklaruje kilka zmiennych wartością 1);

X:constant Integer :=7

Nie musimy deklarować typu, kompilator dobierze wtedy najbardziej odpowiedni typ do reprezentacji wartości

X:constant:=7

Int jest teraz nową formą zapisu Integer ale operacje na różnych nazwach jak INT , Integer wywalają błąd, nie można zrobić a:=b;

---------FUNKCJE SĄ OSOBNE. Nie należy walić Type Int, a pod spodem Subtype----------

Jak wyżej, tylko teraz można wykonywać operację

Jedną z najważniejszych cech SUBTYPE jest możliwość ograniczania rodzica co do zakresu dolnego/górnego dla wartości INT. ( cokolwiek to znaczy )

a)Type BYTE is mod 256

Max to 255

Byte:=-250 wynik to 6

Byte:=-256 wali error ale jeśli podstawimy Byte:=0 to nagle jest ok:

________________________________________________________________ <- dlaczego

b) type BYTE is mod 2**8 <- The fuck is this?

Nie wolno używać ( wali error) Stringa bez podania długości w deklaracjach czyli

Shit:String; NIE

String(1..2) ok

Najniższa wartość musi być minimum 1

Definiowanie zakresu string to 1..4 itp.

Jeśli damy String 1..20 to słowo które później przypiszemy MUSI I NIE MA ŻE BOLI mieć dokładnie tyle znaków inaczej wali error.

Stringa można dać od razu w : Put_Line(zmienna);

Są dwa typy floatów Float i Fixed

::FLoat::

a)Type Floating is new Float

MUSI być float, jeśli damy 5 to wali error

Jeśli przypiszemy na start Float= 4.2 a później gdzieś z dzielenia wyjdzie, 4/2=1 wali ERROR

Normalnie wyświetla 6 znaków liczbą od cyfry przed kropką

b)type zmienna is digits 5

pozwala sterować ilością wyświetlanych znaków po przecinku ( max 18)

c) Tyczy się obydwu zapisów

Cyfra z przodu może mieć max 9. Jeśli damy np: 1.23 + 10= 11.2 to przesunie to do 1.123

Używanie floata a później przypisanie wyników floata do np. type kropki is digit 3

Wali błąd

::FIXED:: Nie wiem, doczytać, coś z dokładnością, mam w notatkach

Deklarowanie zakresu zmiennej za pomocą range

Type Hours is new Integer range 1..13; - z podaniem typu

Type Hour is range 2..56; - bez podania typu

Można robić typ

Type Hours is new range 0..23;

I do niego podtyp

Subtype Minutes is Hours range 1..12;

Sprawdzić dlaczego są różne zapisy Hours, czym sie to różni, co to robi

Teraz MINUTY są POTOMKIEM Godzin, Potomek nie może mieć zakresu większego niż rodzic

Inaczej można też zapisać zakres słowami:

Type days is (piątek,sobota,niedziela,poniedziałek);

I do tego znowu tez dorobić sobie podtyp

Subtype weekend is days range piątek ... niedziela ;

Atrybuty dla enumeracji:

Succ- zwraca wartość KOLEJNĄ co do tej którą podaliśmy, nie może wyjścia poza zakres, tj. nie przekręca się. Niedziela(succ) error

Pred- j.w tylko POPRZEDNIĄ, i to samo, Poniedziałek (pred) error

Val-Zwraca wartość enumeracji o danym numerze jak VAL(2) Wtorek, przy czym Val(0)=Val(1)

Pos- zwraca pozycje danego atrybutu, POS(Środa) = 3

First­-Zwraca pierwsza wartość zakresu

Last­-Zwraca ostatni warosc zakresu

Length- Zwraca liczbę obiektów w zakresie ( dla 0..100 zwroci 101)

Range- Zwraca wartość która mu daliśmy… wtf?

*dzień’succ(wtorek)=środa

*dzień’pred(wtorek)=poniedziałek

*dzień’val(2)=wtorek

*dzień’first=poniedziałek

*dzień’last=niedziela

*dzień’Succ(dzien’pred(wtorek))=wtorek;

Znaków:

array(1..30) of Characters

String(1..30)

Intów:

Array(0..4) of Integer;

Wymiarowe:

Array(0..5) of array (0..2) of Integer

Array(0..5,0..2) of Integer

Typ tablicowy

Type Name_type is array (1..30) of Character;

Definiowanie elementów

Tablica(2):=1;

Tablica(0,3):=2;

Jakaś notka , że a:=b przenosi elementy b do a

Ustalanie zakresu NIE zerowego, ustalanie indexowania od zakresu niższego do wyższego

Tablica(-10..10) of Integer

Normalnie tablice są indexowane liczbowo typu INT więc nie trzeba dawać zakresu

Odnoszenie się do wartości z tablicy w np.: put_line

Put_Line("[2]="&Integer'image(tablica(2)));

Wpisywanie wartości tablicy do zmiennej:

x:=tablica(3);

Tablica z zakresem innym niż typu INT jest definiowana:

Hours_Worked: array(All_days range Monday..Friday) gdzie All Days to typ a range to zakres z tego typu

- Jeden wymiar

Example:array(1..10) of Integer;

For I in Example’first.. Example’last loop

For I in Example’range loop

-Wiele wymiarów

Example(wymiar)’atrybut

Init:array(0..3)of Integer:=(0..3 =>1); Przypisze 1 do wszystkich

Init: array (0..3) of Integer :=(0=>1,others=>0); Przypisze 1 do elementu zero a reszcie 0.

Obydwa fragmenty muszą być tego samego typu, wymiarowości i rozmiaru (wykrojów)

Large: array (0..100) of Integer;

Small:array (0..3) of Integer

-przenoszenie fragmentu jednego taba do drugiego

Small(0..3):=Large(10..13);

-zamiana połówek tablicy miejscami

Large:=Large(51..100)&Large(1..50);

If wyrażenie then czynność

Elsif wyrażenie then czynność

Endif;

case value is

when 1..4 => value_ok:=1;

when 5|6|7=> null;

end case

While expression loop

Statment

End loop;

For zmienna in Typ range loop

Statement

End loop;

-zmienna istnieje TYLKO dla tego for a, jeśli nie podamy typu tej zmiennej to sama dobierze sobie typ najlepiej reprezentujący wartości Range.

?? W Online MUSI być, albo źle pisze.

-Pętla wsteczne od 10 do 1

For i in reverse 1..10 loop

Null; // Dla funkcji pustych MUSI BYĆ null;

End loop;

-Można z tego zrobić DO WHILE

Loop

Statement

Exit when expressionl

End loop;

Exit NIE przerywa pętli nadrzędnych typu While w pętli while będącej w while. (3x)

Ale np. IF w petli a w nim EXIT przerwie petle zawierajaca If-a

(Break and Continue 5. Wtf? )

Function nazwa(parametry) return typ_zwracany is

Deklaracje

Begin

Kondycje

End nazwa

Funkcje umieszcza sie w procedurze, PRZED BEGIN, Później wywołuje się ją w BEGIN ale Trzeba coś zrobić z wyjściem funkcji bo inaczej jebie błędy bezsensowne. Czyli robimy np.:

c:=test(a,b);

Ale podanie w funkcji np. 3 zmiennych i zwrócenie 3iej która miałaby być wynikową też wali błąd.

Procedure można umiescic tylko 1 w pliku. Ale w procedurze można umiescic inna funkcje PRZED BEGIN procedury;


Wyszukiwarka

Podobne podstrony:
Zestawy na mature ustną 14
E2 14 zadania na powtorzenie
ZESTAWY PONIEDZIALEK, EGZAMIN Z CHORÓB PŁUC, zestawy na ustny
zestawy na egzamin ustny przykłady
Trb zestawy na egzamin ~$staw?
zestawy na elektre z forum
zestawy na filozofię, zestaw 10, 28
zestawy na filozofię, zestaw 31, Zestaw 31
Trb- zestawy na egzamin, Zestaw Aa, 1
Zestawy na ochrone rodowiska, rok 2
ZESTAWY na egzamin, Turystyka i Rekreacja, ekonomia
pytania na powtórzenie-Polska w Sredniowieczu, Średniowiecze kl. II
Zestawy na fizykę
Zestawy na egzamin z EPHL, Leśnictwo UWM Olsztyn, Semestr IV, Ekologiczne Podstawy Hodowli Lasu, Egz
zestawy na filozofię zestaw
zestawy na filozofię, zestaw 23, 56
zestawy na filozofię, zestaw 8, Etyka

więcej podobnych podstron