Microsoft Word - C#_nizi_in_tabele.doc

Size: px
Start display at page:

Download "Microsoft Word - C#_nizi_in_tabele.doc"

Transcription

1 诲诲诲眃 眃 ʝ Programski 省 jezik C# Znaki, nizi in tabele Matija Lokar in Srečo Uranič V 0.83 november 2008

2 2

3 3 Predgovor Omenjeno gradivo predstavlja četrti del gradiv, namenjenih predmetu Programiranje 1 na višješolskem študiju Informatika. V predhodnih delih smo spoznali osnovne podatkovne tipe (int, double, bool), prireditveni stavek, pogojni stavek, zanke ter osnovne prijeme za branje/izpisovanje podatkov preko konzole. Pokriva znake (tip char), nize (string) in tabele v jeziku C#. Glede samega besedila velja tisto, kar je bilo napisano v predgovorih prejšnjih delov gradiv, torej ne poveva vsega, določene stvari poenostaviva, veliko je zgledov.... Gradivo vsekakor ni dokončano in predstavlja delovno različico. V njem so zagotovo napake (upava, da čimmanj), za katere se vnaprej opravičujeva. Da bo lažje spremljati spremembe, obstaja razdelek Zgodovina sprememb, kamor bova vpisovala spremembe med eno in drugo različico. Tako bo nekomu, ki si je prenesel starejšo različico, lažje ugotoviti, kaj je bilo v novi različici spremenjeno. Matija Lokar in Srečo Uranič Kranj, oktober 2008

4 4 Zgodovina sprememb : Različica V0.8 prva, ki je na voljo javno : Različica V0.81 oblikovanje in manjši popravki, dodana zanka foreach, dodane dvodimenzionalne tabele : Različica V0.82 manjši tipkarski popravki, par besed v predgovoru : Različica V0.83 manjši tipkarski popravki

5 5 KAZALO Znaki (tip char)... 7 Abeceda... 8 Primerjanje znakov... 8 Pretvarjanje znakov... 9 Geslo Naloge (tip char) izi (tip string) Dostop do znakov v nizu Dolžina niza Zgledi Obratni izpis Obratni niz Preštej števke v nizu Primerjanje nizov Metode nad nizi Samoglasniki Galci in Rimljani Razporeditev besed po abecedi Še nekaj metod Naloge za utrjevanje znanja iz nizov Tabele Preberi 5 števil in jih izpiši v obratnem vrstnem redu Indeksi Deklaracija tabele Indeksi v nizih in tabelah Neujemanje tipov pri deklaraciji Izpis tabele Primerjanje tabel Zgledi Dnevi v tednu Mrzli meseci Delitev znakov v stavku Zbiramo sličice Najdaljša beseda v nizu Uredi elemente po velikosti Vsota elementov Zanka foreach Manjkajoča števila Naloge za utrjevanje znanja iz tabel Dvodimenzionalne in večdimenzionalne tabele... 49

6 6 Poštevanka Največja vrednost v tabeli Naloge... 50

7 7 Znaki (tip char) V spremenljivki lahko hranimo tudi en znak. V ta namen uporabljamo podatkovni tip char (ang. character). To so črke, številke, presledek, ločila,.... Znake pišemo med enojnimi narekovaji. Primer: char znak = 'n'; char oznakavrat = 'N'; char zacetnica = 'M'; Primer uporabe: static void Main(string[] args) char znak_a = 'a'; Console.WriteLine(znak_a); // main Program prevedemo in poženemo: C# obravnava znake kot "majhna" števila. Zato smo v spremenljivko znak_a pravzaprav shranili kodo znaka mali a. Ta koda je neko naravno število. Na vsako spremenljivko tipa char lahko gledamo bodisi kot na znak, bodisi kot na število. Ker na znake lahko gledamo tudi kot na števila, smemo napisati tudi tak program. static void Main(string[] args) char znak_a = 'a'; Console.WriteLine(znak_a + znak_a); Console.ReadKey(); // main Program prevedemo in poženemo: V spremenljivko tipa char pravzaprav shranimo kodo znaka. Zato smo v spremenljivko znak_a shranili kodo znaka mali a, ki je neko naravno število (v našem primeru 97). In ker je med dvema "številoma" operator +, se izvede operacija seštevanja, kot smo že navajeni. Torej se seštejeta dve številski vrednosti malega znaka a in vsota se izpiše. Razlikovati moramo med znakom in nizom, ki vsebuje en znak. Tako znak 'm' ni enak nizu, ki vsebuje le znak m, torej "m". string znakkotniz = "m"; char znakkotznak = 'm';

8 8 Abeceda Napišimo program, ki bo izpisal angleško abecedo. Prvič naprej, drugič pa v obratnem vrstnem redu. Izrabili bomo dejstvo, da so znaki "števila". Ker z njimi lahko računamo, to pomeni tudi, da jih lahko uporabimo kot števce v zankah. 1: static void Main(string[] args) 2: 3: for(char i = 'a'; i <= 'z'; i++)// abeceda naprej 4: 5: Console.Write (i + " "); 6: // for 7: Console.WriteLine ("\n"); // vmesna prazna vrsta 8: for(char j = 'z'; j >= 'a'; j--) // abeceda nazaj 9: 10: Console.Write (j + " "); 11: // for 12: Program prevedemo in poženemo: Opis programa. Kot smo že rekli, lahko na znake gledamo kot na števila. Zato smo v spremenljivki i pravzaprav shranili kodo znaka mali a. Ta koda je neko naravno število. Če so znaki kodirani po ASCII 1 standardu, se v a shrani število 97. Preveri se pogoj in ker je 97 <= 122 (koda znaka 'z') se izpiše znak s kodo 97, torej a. Vrednost v spremenljivki i se poveča za ena (i++). Zopet se preveri pogoj in ker je resničen, se izpiše znak s kodo 98. Na ta način se zanka for izvaja, dokler je vrednost v spremenljivki i manjša ali enaka 'z' (122). Ko je v spremenljivki i vrednost 122, je pogoj izpolnjen in 5. vrstica izpiše znak s kodo 122, torej z. Sedaj spremenljivka i dobi vrednost 123. Preveri se pogoj. Ker 123 ni manjše ali enako 122, pogoj ni več izpolnjen. Zato se zanka konča in program se nadaljuje v vrstici 7. Izpiše se prazna vrsta. Program se nadaljuje v vrstici 8. Če želimo izpisati abecedo v obratnem vrstnem redu, začnemo izpisovati znake od zadnjega proti prvemu. V spremenljivki j shranimo kodo znaka mali z (122). Preveri se pogoj in ker je 122 >= 97 (koda znaka mali a), se izpiše znak s kodo 122, torej z. Vrednost v spremenljivki j se zmanjša za ena (j--) in zopet se preveri pogoj. Ker je resničen, se izpiše znak s kodo 121. Na ta način se zanka for izvaja, dokler je vrednost v spremenljivki j večja ali enaka 'a' (97). Ko je v spremenljivki vrednost 97, je pogoj izpolnjen in 10. vrstica izpiše znak s kodo 97, torej a. Sedaj spremenljivka i dobi vrednost 96. Preveri se pogoj. Ker 96 ni večje ali enako 97, pogoj ni več izpolnjen, zato se zanka konča. Primerjanje znakov Ker v spremenljivko tipa char shranimo kodo znaka, znake primerjamo tako kot števila z operatorjem enakosti (==). S tem se v bistvu primerja koda znaka. Ker ima vsak znak svojo kodo, lahko dobimo vrednost true samo, kadar primerjamo enaka znaka, drugače dobimo false. Poglejmo si primer. static void Main(string[] args) char znak_a = 'a'; char znak_a = 'A'; Console.WriteLine(znak_a == znak_a); 1 V računalništvu oznaka za splošno uveljavljeno 8-bitno kodo za kodiranje običajnih črk in znakov, s katerimi se zapisuje besedila.

9 9 Console.WriteLine(znak_a == 'a'); // main Program prevedemo in poženemo: Kot smo že povedali, C# primerja znake po njihovih celoštevilčnih kodah. Ker koda malega in velikega znaka a ni enaka, se izpiše false. V naslednji vrstici primerjamo vrednost spremenljivke znak_a in znakovne konstante 'a'. Ker je njuna celoštevilčna koda enaka, se izpiše true. Za primerjanje znakov je pomembno vedeti, kako so znaki zloženi v kodnih tabelah. Velja: 'a' < 'b' < 'c' < < 'z' '0' < '1' < < '9' 'A' < 'B' < 'C' < < 'Z' Vmes v teh treh zaporedjih ni nobenih drugih znakov. Če torej napišemo pogoj ('0' <= preverjaniznak) && (preverjaniznak <= '9') bo ta imel vrednost true (bo torej izpolnjen), če je v spremenljivki preverjaniznak števka. Podobno z ('a' <= malačrka) && (malačrka <= 'z') preverjamo, če je v spremenljivki malačrka res mala črka. Pogoj pomeni, da je znak v tej spremenljivki "desno" od 'a' in "levo" od 'z'. In ker med 'a' in 'z' ni drugih znakov, temu pogoj ustrezajo le male črke. Pretvarjanje znakov S pomočjo operatorja (char) celo število lahko pretvorimo v znak. Tako na primer velja (char)('a') 'a' In ker z znaki lahko računamo in so, kot smo videli v zgornjem razdelku, črke lepo "zložene skupaj", je seveda res tudi, da (char)('a' + 2) 'c' To lahko izrabimo, če moramo slučajno malo črko pretvoriti v veliko ali obratno. Kratek premislek pokaže, da velja: (char)('a' + 'k' 'a') 'K' (char)('a' + 'M' 'A') 'm' Kako to? Če želimo malo črko 'k' pretvoriti v veliko, vemo, da bo razlika v kodi med 'k' in 'a' enaka razliki kod 'K' in 'A'. Torej moramo od kode 'A' iti naprej točno za razliko med kodo 'k' in 'a', da pridemo do kode znaka 'K'. Če je v spremenljivki maliznak torej neka mala črka, bomo z (char)('a' + maliznak 'a') dobili ustrezno veliko črko.

10 10 Oglejmo si še zgled uporabe. Geslo Iz oddelka za varovanje podatkov smo dobili nalogo, da napišemo program za samodejno generiranje gesel. Sodelavci tega oddelka želijo gesla naslednje oblike: najprej dve naključni števki, potem tri naključne velike črke, nato še ena naključna števka in na koncu naključno trimestno število. Pri generiranju naključnih črk si bomo pomagali z dejstvom, da je znak predstavljen kar s številom, ki predstavlja njegovo kodo. Z njim torej lahko računamo. Izraz geslo.next('a', 'Z' + 1) je torej koda neke velike črke. Za pretvarjanje iz celega števila v znak bomo uporabili operator (char). C2: C3: C4: C5: C6: C7: C8: C9: C10: C11: C12: C13: C14: C15: C16: C17: C18: C19: C20: C21: C22: static void Main(string[] args) // Ustvarimo generator naključnih števil Random geslo = new Random(); // Določimo dve števki int stev1 = geslo.next(10); int stev2 = geslo.next(10); // Določimo tri naključne črke (velike tiskane) char c1 = (char)geslo.next('a', 'Z' + 1); char c2 = (char)geslo.next('a', 'Z' + 1); char c3 = (char)geslo.next('a', 'Z' + 1); // Določimo eno naključno števko int stev3 = geslo.next(10); // Določimo naključno tromestno število int s = geslo.next(100, 1000); // Izpis gesla Console.WriteLine("Geslo: "+stev1+stev2 +c1 +c2 +c3+stev3+ s); Console.ReadKey(); Zapis na zaslonu: Razlaga Najprej ustvarimo generator naključnih števil. Nato generiramo posamezne elemente gesla (C7 - C18). Za generiranje naključne črke uporabimo izraz geslo.next('a', 'Z' + 1). Z omenjenim izrazom določimo kodo črke. Ker se koda črke (tipa int) ne spremeni v črko (tip char) samodejno, pred omenjenim izrazom zapišemo operator (char). S tem operatorjem iz kode dobimo naključno črko, ki jo nato priredimo spremenljivki. Po generiranju združimo vse elemente in jih izpišemo na zaslon (C20). Naloge (tip char) Napišite program, ki bere posamezne znake in jih kodira v števila na naslednji način: Ne loči velike in male črke, črke od a do e (A do E) kodira po vrsti s števili od 1 do 5, številke 0 do 9 kodira po vrsti s števili od 6 do 15, črke od f do z (F do Z) kodira s števili od 16 do 36 v obratnem vrstnem redu, vse ostale znake zakodira s številom 0.

11 11 Program naj za vsak posamezen znak izpiše na zaslon znak = koda. Branje se konča, če je prebran znak *. Namig: Za pretvarjanje iz tipa string v tip char si pomagajte z metodo char.parse(niz). Primer kodiranja: Vnesi znak: a a = 1 Vnesi znak: Z Z = 16

12 12 Nizi (tip string) Pogosteje kot posamezne znake uporabljamo nize znakov (ang. string). Za delo z nizi je v jeziku C# definiran tip string. Željen niz navedemo med dvojnimi narekovaji. Podatkovni tip string (niz) torej označuje zaporedje znakov. Spremenljivke tega tipa v C# lahko inicializiramo takole: string var5; var5 = "Lokomotiva"; string niz = "Pozdravljeni!"; string presledek = " "; Dva niza staknemo (združimo) z operatorjem za združevanje (+). To smo že večkrat srečali pri izpisovanju. static void Main(string[] args) string niz1 = "Dobro "; string niz2 = "jutro."; string niz3 = niz1 + niz2; Console.WriteLine(niz3); Console.ReadKey(); Program prevedemo in poženemo: Niz je lahko sestavljen iz enega ali več znakov, poznamo pa tudi t.i. prazen niz, ki ne vsebuje nobenega znaka. string prazenniz = ""; Dostop do znakov v nizu Niz je lahko sestavljen iz enega ali več znakov, poznamo pa tudi t.i. prazen niz, ki ne vsebuje nobenega znaka. Vsak znak, ki je vsebovan v nizu, ima svoj indeks. Do posameznega znaka v nizu dostopamo s pomočjo oglatih oklepajev ([]), kjer navedemo indeks znaka. Z niz[i] torej dobimo znak z indeksom i iz niza niz. "Blabla"[3] b string ime = "Matija"; ime[1] a Indeksiranje znakov se prične z 0 in se konča z dolžina niza - 1. Primer: Niz "D o b e r d a n." Indeks

13 13 Z uporabo oglatih oklepajev ne moremo spreminjati znakov v nizu, temveč jih lahko le beremo. Izraz niz[indeks] se torej ne sme pojaviti na levi strani prireditvenega stavka. Dolžina niza Da zvemo dolžino niza, uporabljamo lastnost Length. Primer: string n = "Rock Otocec"; int dolzina = n.length; Vrednost spremenljivke dolzina je 11. o string priimek = "Lokar"; o priimek.length 5 o "matija".length 6 o (priimek + " " + "bla").length 9 Zgledi Obratni izpis Napišimo program, ki bo vneseni niz izpisal v obratnem vrstnem redu. Torej bo npr. niz "Matija" izpisal kot ajitam. Tu si bomo pomagali z [i], ki vrne znak z indeksom i ter z lastnostjo Length, ki vrne dolžino niza. Ker v nizih znake indeksiramo od 0 dalje, nam niz.[i] vrne i+1-ti znak niza niz. Ideja programa je v tem, da naredimo zanko, v kateri izpišemo posamezen znak. Začnemo pri zadnjem znaku in zmanjšujemo števec, ki pomeni indeks, dokler ne pridemo do vrednosti števca 0 (torej do zadnjega znaka), ko še zadnjič izvedemo zanko. 1: static void Main(string[] args) 2: 3: Console.WriteLine("Vnesi niz:"); 4: string beri = Console.ReadLine(); 5: Console.WriteLine("Vnešeni niz je: " + beri); 6: 7: for(int i = beri.length - 1; i >= 0; i--) 8: 9: Console.Write (beri[i]); 10: // for 11: Console.WriteLine ("\n"); 12: // main Opis programa Če želimo niz izpisati v obratnem vrstnem redu, bomo izpisovali znake od zadnjega proti prvemu. Recimo, da smo vnesli niz "abeceda". Spremenljivki i se najprej priredi začetna vrednost beri.length - 1. Dolžina niza je enaka številu vnesenih znakov, kar je v našem primeru 7. Ker se znaki štejejo od 0 dalje, ima naš zadnji znak indeks Length - 1. V našem primeru se spremenljivki i najprej priredi začetna vrednost 6. Nato se preveri pogoj. Ker je resničen (6 >= 0), vstopimo v zanko in izpiše se znak na mestu i (a). Nato se izvede ukaz2 (i--), ki

14 14 vrednost spremenljivke i zmanjša za ena. Preveri se pogoj in ker še vedno velja (5 >= 0), se zopet izpiše znak na mestu 5 (d). Na ta način se zanka for izvaja, dokler je vrednost v spremenljivki i večja ali enaka 0. Ko je v spremenljivki vrednost 0, je pogoj še vedno izpolnjen in v vrstici 9 se izpiše znak na mestu 0, torej prvi znak. Sedaj spremenljivka i dobi vrednost -1. Preveri se pogoj. Ker -1 ni večje od 0, pogoj ni več izpolnjen. Zanka se konča in program se nadaljuje v vrstici 11. Izpiše se prazna vrsta. Obratni niz Kaj pa, če bi rad opravili nekoliko drugačno nalogo in iz vnesenega niza naredili obrnjeni niz nekoliko drugače. Tudi tu bomo uporabili zanko, a za razliko od prej bomo šli kar od indeksa 0 naprej. Uporabili bomo tudi stikanje nizov. Če znak dodamo nizu, se znak pretvori v ustrezni niz in niza se stakneta. Začnemo s praznim nizom o string obrnjeniniz = ""; Zanka Pregledamo vse znake v nizu (dolžina niza) o while (i < niz.length) Dodajamo na začetek o obrnjeniniz = niz[i] + obrnjeniniz; static void Main(string[] args) Console.WriteLine("Vnesi niz:"); string beri = Console.ReadLine(); Console.WriteLine("Vnešeni niz je: " + beri); int i = 0; string obrnjeniniz = ""; while (i < beri.length) obrnjeniniz = beri[i] + obrnjeniniz; i++; Console.WriteLine("\nObrnjeni niz: " + obrnjeniniz); Preštej števke v nizu Ugotovimo, koliko števk vsebuje poljuben niz: Preberemo niz Pregledamo vsak znak o znak = niz[i]; // tekoči znak Če je števka, povečamo števec za 1 o if (('0' <= znak) && (znak <= '9')) // če je števka koliko_stevk++; // povečanje za 1 Izpišemo rezultat i = 0; while (i < dol_niza) znak = niz[i]; // tekoči znak if (('0' <= znak) && (znak <= '9')) // če je stevka

15 15 koliko_stevk = koliko_stevk + 1; i = i + 1; rezultat = "V nizu " + niz + " je " + koliko_stevk + " števk."; Primerjanje nizov Oglejmo si, kako lahko ugotovimo, da sta dva niza enaka (ang. equals)? V razredu string najdemo metodo Equals(), ki vrača rezultat tipa bool. static void Main(string[] args) string niz1 = "Ana"; string niz2 = "Zdravko"; bool trditev = niz1.equals(niz2); Console.WriteLine(trditev); // main Program prevedemo in poženemo: V programu smo uporabili metodo Equals(). Primerjali smo niz1 in niz2. Ker sta različna, nam metoda vrne false. Nize pa lahko glede enakosti primerjamo tudi z relacijskim operatorjem ==. Zgornji zgled bi torej lahko napisali kot static void Main(string[] args) string niz1 = "Ana"; string niz2 = "Zdravko"; bool trditev = niz1 == niz2; Console.WriteLine(trditev); // main Večkrat bi radi niza primerjali (ang. compare) po abecednem redu. Tako je niz "Matija" je manjši kot niz "Mojca", ker sta prva znaka enaka, drugi znak pa je v prvem nizu ('a') manjši kot v drugem nizu ('o'). Tu ne moremo uporabiti relacijskih operatorjev <, >, <=, >=. Na voljo imamo metodo String.Compare(), ki vrača celoštevilčno vrednost. Tako String.Compare(s1,"bla") vrne 0, če je niz shranjen v s1 enak nizu bla, neg. število, če je niz v s1 manjši od niza "bla" in poz. število, če je večji. String.Compare("matija","mojca") // vrne negativno število bool jemanj = String.Compare(n1,n2) < 0;

16 16 Kako si zapomniti, kako to uporabiti? Zanima nas če velja niz1 <= niz2 (če je torej niz1 manjši (prej po abecedi) ali enak nizu niz2). Namesto zgornjega izraza, ki ga prevajalnik "ne mara", napišemo izraz String.Compare(niz1,niz2) <= 0 Za primerjanje nizov torej uporabimo ustrezen operator in primerjamo z 0. Poglejmo, kako deluje, oziroma, kako jo uporabljamo. static void Main(string[] args) string niz1 = "Ana"; string niz2 = "Zdravko"; int vrednost = String.Compare(niz1,niz2); Console.WriteLine(vrednost); Console.ReadKey(); // main Program prevedemo in poženemo: Obstaja pa tudi malo drugačna metoda CompareTo(), ki se več ali manj razlikuje le po obliki (načinu klica). No resnici na ljubo je to "okleščena" različica metode String.Compare(), ki poleg tega, kar smo spoznali mi, "zna" še mnogo več. Ustrezna oblike te metode je kar ustreza klicu niz1.compareto(niz2) String.Compare(niz1, niz2) Prejšne zglede navedimo še v novi obliki. Tako S1.CompareTo("bla") vrne 0, če je niz shranjen v s1 enak nizu bla, neg. število, če je niz v s1 manjši od niza "bla" in poz. število, če je večji. "matija".compareto("mojca") // vrne negativno število bool jemanj = n1.compareto(n2) < 0; Poglejmo še enkrat, kaj nam pove metoda CompareTo(). Denimo, da primerjamo niz1 in niz2 z niz1.compareto(niz2). Če je niz v spremenljivki niz1 po abecedi pred nizom, ki je v spremenljivki niz2, vrne metoda negativno število. Če je niz1 enak niz2, vrne metoda vrednost 0. Če je niz1 po abecedi za niz2, vrne metoda pozitivno število.

17 17 Metode nad nizi Za delo z nizi poleg omenjenih metod, lastnosti in operatorja [] pogosteje uporabljamo še metode, ki so prikazane v spodnji tabeli. Da bomo imeli zbrane vse, sta v tabeli še metodi Equals in CompareTo. Vse te metode uporabljamo nad nizi. To pomeni, da jih kličemo kot niz1.metoda(niz2) Metoda Equals(niz) CompareTo(niz) Razlaga S postopkom preverjamo enakost niza niz in niza, nad katerim uporabljamo metodo. Ukaz vrne vrednost true, če sta niza enaka. S postopkom primerjamo dva niza po abecednem položaju. Če je vrnjena vrednost: pozitivna, je niz po abecedi pred nizom, nad katerim je uporabljena metoda. negativna, je niz po abecedi za uporabljenim nizom. nič, sta niz in uporabljeni niz enaka (ju sestavljajo isti znaki). ToUpper() ToLower() Substring(int,int) IndexOf(niz) Metoda spremeni v nizu, nad katerim je uporabljena,vse male črke v velike. Metoda spremeni v nizu, nad katerim je uporabljena, vse velike črke v male. Metoda vrne podniz danega niza. Prvi argument pomeni začetni položaj (indeks) v nizu. Drugi argument v javi pomeni položaj (indeks) za zadnjim znakom podniza, medtem pa v C# dolžino podniza. Če drugega argumenta ni, metoda vrne vse znake do konca niza. S postopkom preverimo, če je niz podniz v nizu, nad katerim metodo uporabljamo. Metoda vrne celo število, ki predstavlja na katerem indeksu se v nizu prvič kot podniz prične niz niz. Če niz ni podniz uporabljenega niza, je vrnjena vrednost -1. Ilustrirajmo uporabo omenjenih metod z nekaj zgledi. Samoglasniki Sestavimo program, ki prebere niz in ga izpiše tako, da vse samoglasnike nadomesti z zvezdico (*). Pomagali si bomo z metodo IndexOf(), s katero bomo preverili, če je posamezen znak prebranega niza podniz niza "aaeeiioouu ". Posamezne znake prebranega niza, ki jih bomo bodisi spremenili bodisi ohranili, bomo dodali v pomožni niz. Pomožni niz bo na začetku programa prazen (""). C1: C2: C3: C4: C5: C6: C7: C8: C9: C10: C11: C12: C13: C14: C15: static void Main(string[] args) // Vnos niza Console.Write("Vnesi niz: "); string niz = Console.ReadLine(); // Pomožne spremenljivke string samoglasniki = "aaeeiioouu"; // Niz samoglasnikov string novniz = ""; // Nov niz int dolzina = niz.length; // Dolžina prebranega niza // Zamenjava samoglasnikov z zvezdico for (int i = 0; i < dolzina; i++) char znak = niz[i]; if (samoglasniki.indexof(znak)!= -1) // Znak je samoglasnik

18 18 C16: C17: C18: C19: C20: C21: C22: C23: C24: C25: novniz = novniz + '*'; // Samoglasnik zamenjamo z * else novniz = novniz + znak;//ostali znaki ostanejo nespr. // Izpis novega niza Console.WriteLine("Spremenjen niz: " + novniz); Zapis na zaslonu: Razlaga. Najprej preberemo niz (C5), nato deklariramo niz samoglasnikov (C7) in prazen niz (C8). Potem določimo dolžino niza niz (C9). Z zanko se sprehodimo preko vseh znakov v nizu. Znotraj zanke deklariramo spremenljivko znak in ji priredimo trenutni znak niza niz. V vrstico C14 preverimo, če je znak, katerega koda je shranjena v spremenljivki znak, podniz niza samoglasniki. Če je pogoj izpolnjen, se nizu novniz doda znak '*' (C16), sicer pa se mu doda trenutno preverjeni znak (C20). Na koncu izvedemo izpis niza novniz. Galci in Rimljani Verjetno je vsak med nami že kdaj prebral kak strip o Asterixu in Obelixu. Zato vemo, da se imena vseh Galcev zaključijo z "ix", na primer Asterix, Filix, Obelix, Dogmatix, itn. Napišimo program, ki bo prebral ime, nato pa bo izpisal "Galec!", če gre za galsko ime, v nasprotnem primeru pa bo izpisal "Rimljan!". Predpostavimo, da so vnesena imena dolga vsaj tri znake. Program zapišimo le v jeziku C#. static void Main(string[] args) // Preberemo ime Console.Write("Vnesi ime: "); string ime = Console.ReadLine(); // Podniz string podniz = ime.substring(ime.length - 2); podniz = podniz.tolower(); // Da ne bo težav z velikimi črkami // Glede na ime izpišimo ustrezen tekst if(podniz.equals("ix")) Console.WriteLine("Galec!"); else Console.WriteLine("Rimljan!"); Kot smo povedali, metodo Equals() lahko nadomestimo z operatorjem enakosti (==). Zgornji program bi torej lahko zapisali tudi na naslednji način. static void Main(string[] args) // Preberemo ime Console.Write("Vnesi ime: "); string ime = Console.ReadLine();

19 19 // Podniz string podniz = ime.substring(ime.length - 2); podniz = podniz.tolower(); // Da ne bo težav z velikimi črkami // Glede na ime izpišimo ustrezen tekst if (podniz == "ix") Console.WriteLine("Galec!"); else Console.WriteLine("Rimljan!"); Zapis na zaslonu: Razlaga. Na začetku preko konzolnega okna preberemo ime osebe in ga shranimo v spremenljivki niz (C6). Potem določimo podniz iz zadnjih dveh znakov niza niz (C9). V vrstici C10 pretvorimo podniz podniz v male tiskane črke. Nato preverimo, če je podniz podniz enak nizu "ix" (C13). Če to drži, izpišemo "Galec!", sicer izpišemo "Rimljan!". Razporeditev besed po abecedi Napišimo program, ki bo prebral tri besede in jih izpisal po abecednem vrstnem redu. Na primer za prebrane besede buda, vescine in tempelj, naj program izpiše buda tempelj vescine. Predpostavimo, da so prebrane besede zapisane z malimi tiskanimi črkami. Program sestavimo po korakih: Najprej preko konzolnega okna določimo tri besede. Console.Write("Vnesi prvo besedo: "); string beseda1 = Console.ReadLine(); Console.Write("Vnesi drugo besedo: "); string beseda2 = Console.ReadLine(); Console.Write("Vnesi tretjo besedo: "); string beseda3 = Console.ReadLine(); Nato preverimo, če je beseda beseda3 abecedno pred besedo beseda1. Če je pogoj resničen, zamenjamo vrstni red besed beseda3 in beseda1. if (beseda1.compareto(beseda3) > 0) string pom = beseda1; beseda1 = beseda3; beseda3 = pom; V naslednjem koraku preverimo, če je beseda beseda2 abecedno pred besedo beseda1. Če je pogoj resničen, zamenjamo vrstni red besed beseda2 in beseda1. if (beseda1.compareto(beseda2) > 0) string pom = beseda1; beseda1 = beseda2; beseda2 = pom;

20 20 Za konec preverimo še, če je beseda beseda3 abecedno pred besedo beseda2. Če je pogoj resničen, zamenjamo vrstni red besed beseda3 in beseda2. if (beseda2.compareto(beseda3) > 0) string pom = beseda2; beseda2 = beseda3; beseda3 = pom; Besede so abecedno urejene, zato jih izpišemo. Ločimo jih s presledkom. Console.WriteLine("\n" + beseda1 + " " + beseda2 + " " + beseda3); Združimo posamezne korake v celoten program. static void Main(string[] args) // Vnesene besede Console.Write("Vnesi prvo besedo: "); string beseda1 = Console.ReadLine(); Console.Write("Vnesi drugo besedo: "); string beseda2 = Console.ReadLine(); Console.Write("Vnesi tretjo besedo: "); string beseda3 = Console.ReadLine(); // beseda3 je abecedno pred beseda1 if(beseda1.compareto(beseda3) > 0) string pom = beseda1; beseda1 = beseda3; beseda3 = pom; // beseda2 je abecedno pred beseda1 if(beseda1.compareto(beseda2) > 0) string pom = beseda1; beseda1 = beseda2; beseda2 = pom; // beseda3 je abecedno pred beseda2 if(beseda2.compareto(beseda3) > 0) string pom = beseda2; beseda2 = beseda3; beseda3 = pom; // Izpis po abecedi Console.WriteLine("\n" + beseda1 + " " + beseda2 + " " + beseda3); Zapis na zaslonu:

21 21 Še nekaj metod Povzemimo še vse skupaj v tabelo in dodajmo še nekaj uporabnejših metod. Indeks [indeks] Lastnost Length Metoda StartsWith(string) EndsWith(string) IndexOf(niz) IndexOf(string, začetni indeks) Insert(začetni indeks, string) Equals(niz) CompareTo(niz) ToUpper() ToLower() Substring(začetni_indeks) Substring(začetni_indeks, dolžina) PadLeft(skupna_dolžina) Razlaga Dostop do znaka na določeni poziciji. Razlaga Število znakov nizu. Razlaga Vrne logično vrednost, ki označuje, ali se nek niz začenja z navedenim nizom. Vrne logično vrednost, ki označuje, ali se nek niz končuje z navedenim nizom. S postopkom preverimo, če je niz podniz v nizu, nad katerim metodo uporabljamo. Metoda vrne celo število, ki predstavlja na katerem indeksu se v nizu prvič kot podniz prične niz niz. Če niz ni podniz uporabljenega niza, je vrnjena vrednost -1. Vrne celo število ki predstavlja mesto (indeks), kjer se navedeni (pod)niz v nekem nizu od začetnega indeksa naprej prvič pojavi. Če navedenega (pod)niza ni, je vrnjena vrednost -1. Vrne niz, v katerega je na navedeno mesto (začetni indeks) vrinjen navedeni niz. S postopkom preverjamo enakost niza niz in niza, nad katerim uporabljamo metodo. Ukaz vrne vrednost true, če sta niza enaka. S postopkom primerjamo dva niza po abecednem položaju. Če je vrnjena vrednost: - pozitivna, je niz po abecedi pred nizom, nad katerim je uporabljena metoda. - negativna, je niz po abecedi za uporabljenim nizom. - nič, sta niz in uporabljeni niz enaka (ju sestavljajo isti znaki). Metoda spremeni v nizu, nad katerim je uporabljena,vse male črke v velike. Metoda spremeni v nizu, nad katerim je uporabljena, vse velike črke v male. Vrne del niza, ki se začne na navedenem mestu in vsebuje vse znake do konca niza. Vrne del niza, ki se začne na navedenem mestu in ima navedeno dolžino. Vrne niz, ki je DESNO poravnan in na levi strani zapolnjen s tolikšnim številom presledkov, da je skupno število znakov enako vrednosti skupna_dolžina.

22 22 PadRight(skupna_dolžina) Remove(začetni_indeks, N) Replace(staristring, novistring) Trim() Vrne niz, ki je LEVO poravnan in na desni strani zapolnjen s tolikšnim številom presledkov, da je skupno število znakov enako vrednosti skupna_dolžina. Vrne niz, iz katerega je odstranjeno N znakov od mesta začetni_indeks naprej. Vrne niz, v katerem je na vsakem mestu, kjer je bil v starem nizu (pod)niz stariniz, sedaj (pod)niz noviniz. Vrne niz iz katerega so odstranjeni vsi vodilni in končni presledki. Nekaj primerov: //dostop do posameznega znaka v nizu string znaki = "abcdefg"; char a=znaki[0]; // 'a' char b=znaki[1]; // 'b' string beseda="danes je lep dan!"; //sestavimo nov niz iz nekaterih znakov niza beseda string znakiinpresledki = beseda[0]+ beseda[3]+ beseda[4]+ beseda[14]; //znakiinpresledki dobi vrednost "Desa" //Uporaba metod StartsWith in EndsWith bool zacnezabc = znaki.startswith("abc"); // true bool koncazabc = znaki.endswith("abc"); // false //Uporaba metode IndexOf string sola = "Tehniški Šolski Center Kranj"; int index1 = sola.indexof(" ");// 8, ker se string " " pojavi prvič na // osmem mestu int index2 = sola.indexof(' '); // 8, ker se znak ' ' pojavi prvič na osmem // mestu int index3 = sola.indexof("center");// 16, ker se string "Center" pojavi // prvič na 16 mestu int index4 = sola.lastindexof(" ");// 22, ker se string " " pojavi zadnjič // na 22 mestu //Uporaba metod Remove, Insert in Replace sola = sola.remove(0, 9); // Šolski center Kranj sola = sola.insert(sola.length, ", Slovenija");// Šolski center Kranj //, Slovenija sola = sola.replace("slovenija", "4000 Kranj");// Šolski center Kranj, 4000 // Kranj //Uporaba metod Substring, ToUpper in ToLower string ime = "anja"; string prvacrka = ime.substring(0, 1).ToUpper(); // A string drugecrke = ime.substring(1).tolower(); // nja ime = prvacrka + drugecrke; // Anja //Kopiranje enga stringa v drug string string s1 = "abc"; string s2 = s1; // string s2 dobi vrednost s1, torej s2 postane "abc" s2 = "def"; // string s2 postane "def", string s1 pa se ne spremeni string s3 = s1 + s2; // strig s3 dobi vrednost "abcdef"

23 23 //Uporaba metode Substring string polnoime = " Edward C Koop "; // " Edward C Koop " polnoime = polnoime.trim(); // "Edward C Koop" int prvipresledek = polnoime.indexof(" "); // 6 string lastnoime = polnoime.substring(0,prvipresledek); // "Edward" string naslov = " 34 Kališka ulica Slovenija Kranj 4000 "; naslov = naslov.trim(); // " 34 Kališka ulica Slovenija Kranj 4000" naslov.remove(0,1); //iz naslova odstranimo prvi znak string naslov1= naslov.remove(naslov.length-1,1);// iz naslova odstranimo // zadnji znak int indeksulice = naslov.indexof(" ") + 1; // 1 int indeksdrzave = naslov.indexof(" ", indeksulice) + 1; // 18 int indekskraja = naslov.indexof(" ", indeksdrzave) + 1; // 28 int indeksposte = naslov.indexof(" ", indekskraja) + 1; // 34 string ulica = naslov.substring(0, indeksdrzave-1); // 34 Kališka ulica string mesto = naslov.substring(indekskraja,indeksposte - indekskraja - 1); // Kranj string posta = naslov.substring(indeksposte); // 4000 //Uporaba metode Insert string telefonskastevilka = " "; // " " telefonskastevilka = telefonskastevilka.insert(3, "-"); // " " telefonskastevilka = telefonskastevilka.insert(7, "-"); // " " //Uporaba metode Replace string datum = " "; // " " datum = datum.replace("-", "/"); Naloge za utrjevanje znanja iz nizov Kaj izpišejo spodnji deli programov : string niz = "Tantadruj"; char y; y = niz[5]; Console.WriteLine("V nizu je crka " + y); string niz1 = "Tantadruj"; int n = niz1.length; string niz2 = ""; int i = 0; while(i < n) char x = niz1[i]; niz2 = x + niz2; i = i + 1; Console.WriteLine(niz2); string niz1 = "Tantadruj"; int n = niz1.length; string niz2 = "";

24 24 int i = 3; while(i < n) niz2 = niz2 + niz1[i]; i = i + 1; niz2 = niz2 + niz1[0] + niz1[1] + niz1[2]; Console.WriteLine(niz2); Kaj izpiše naslednja metoda: public static void Izpis () string a = "moje bojno polje"; System.Console.Write(a.IndexOf("oj")); a) 6 b) 7 c) 1 d) 2 e) nič od navedenega, ampak Dani niz izpiši obrnjeno. Primera: "1. januar 2008" Niz 1. januar 2008 izpisan obrnjeno je 8002 raunaj.1 "Lahek izpit" Niz Lahek izpit izpisan obrnjeno je tipzi kehal Na svetovnem spletu uporabljamo več kodnih tabel znakov, od katerih samo nekatere vsebujejo šumevce (č, š, ž). Da se šumevci ne pretvorijo v nerazumljive znake, jih pretvorimo v ustrezne sičnike (c, s, z) in jih take tudi izpišimo. Napišite program, ki prebere vrstico besedila s šumevci in na zaslon izpiše spremenjeno besedilo. Sestavite program, ki prebere niz in ga izpiše tako, da med znake besede vrine presledke. Primer: Prebran niz je Lepa Anka kolo vodi. L e p a A n k a k o l o v o d i. Napišite program Okvir, ki bo zahteval vnos niza. Nato ga bo izpisal na zaslon v "okvirju". Primer: Vnesi niz: Mladost je norost, skače čez jarke, kjer je most. * * Mladost je norost, skače čez jarke, kjer je most. * * Sestavite program, ki bo zahteval vnos besede. Nato to besedo izpiše na zaslon tako, da bo beseda izpisana v obliki trikotnika. Primer: Vnesena beseda je JEZIK JEZIK JEZI

25 25 JEZ JE J Napiši program, ki bo prebral niz in preveril prvi znak. Če prvi znak ni črka, naj izpiše "Niz se ne začne s črko." Če je prvi znak velika črka, naj izpiše "Niz niz ima veliko začetnico.". Če je prvi znak mala črka, naj niz spremeni, tako da bo prvi znak velika začetnica in izpiše: "Vneseni niz niz ni imel velike začetnice. Po popravku zgleda tako: popravljen niz niz.". Dana je deklaracija string stavek = "moj stavek"; S pomočjo lastnosti Length ter metode ToUpper spremeni prvo in zadnjo črko tega niza v veliko črko. Ugotovi na katerem mestu spremenljivke stavek tipa string se prvič pojavi veznik in (uporabi metodo IndexOf)? Iz spremenljivke stavek tipa string odstrani vse znake od 10. znaka naprej! Uporabi metodo Remove! Dana je spremenljivka stavek tipa string, spremenljivka ima že neko vrednost (vsebuje več kot 10 znakov). Odstrani vse vodilne in končne presledke; Vse črke v stringu stavek spremeni v velike črke angleške abecede; Ugotovi in izpiši prvi in zadnji znak tega stringa; Ugotovi in izpiši koliko znakov je v tem stringu; V spremenljivko beseda (string) zapiši prvih pet znakov stringa stavek; Zadnje tri znake tega stringa nadomesti s pikicami; Na sredino stringa stavek vrini tri podčrtaje; Iz stringa stavek odstrani vse znake od šestega znaka naprej. V nizu stavek vse števke nadomesti z besednim opisom (števko 1 zamenjaj z ena, števko 2 z dva, ) Dane so tri stpremenljivke tipa string st1, st2 in st3, ki so že inicializirani. Deklariraj spremenljivko st4 tipa string, katere vrednost naj bo sestavljena iz zadnjih znakov nizov v st1, st2 in st3! Dan je zelo dolg niz, sestavljen iz števk. Ugotovi, katerih števk je v nizu največ. Izpiši najprej vse samoglasnike poljubnega stavka, nato ta stavek izpiši navpično, vsak znak v svojo vrsto! Napiši program, ki prebere niz in vsak znak niza razmnoži tolikokrat kot mu naroči uporabnik z vnesenim številskim parametrom. Primer izpisa: Uporabnik je vnesel niz AVTO in zahteval, da se vsak znak ponovi trikrat. AAAVVVTTTOOO Napiši program, ki bo uporabniku omogočal vpis poljubnega stavka. Iz vpisanega stavka program nato izloči samoglasnike. Namesto ostalih znakov pa izpiše podčrtaj ( _ ). Preberi poljuben stavek in ga izpiši navpično in nato še diagonalno (vsaka črka v svoji vrstici, za en znak bolj v desno! Napiši program, ki vse šumnike š, č in ž nekega stavka nadomesti z znaki s, c in z! Preberi poljuben string. Ugotovi in izpiši, koliko presledkov vsebuje. Preberi kemijsko formulo in jo izpiši tako, da so številke vrstico nižje. Če npr. prebereš formulo H2SO4, jo izpiši kot H SO 2 4

26 26 Dana sta dva niza, ime in priimek. Sestavi nov niz sifra tako, da najprej obrneš ime in priimek, nato pa izmenično iz zaporednih črk obrnjenega imena in priimka sestaviš nov niz. Iz nizov ime in priimek vzemi le toliko črk, kot znaša dolžina krajšega od obeh nizov. Beri znake toliko časa, da je vneseni znak enak pika (.). Prebrane znake nato izpiši v obliki stavka. Sestavi preprost program, ki bo kodiral in dekodiral kratka telefonska sporočila (sms-e). Program mora v obrniti vrstni red besed v sporočilu in vrstni red črk v besedi. Preberi 5 stavkov. Če je v stavku manj kot 5 znakov, ga ne upoštevaj (stavek continue). Na koncu ugotovi in izpiši najdaljši stavek.

27 27 Tabele Pogosto se srečamo z večjo količino podatkov istega tipa, nad katerimi želimo izvajati podobne (ali enake) operacije. Takrat si pomagamo s tabelami. Tabelo ali polje (ang. array) v jeziku C# uporabljamo torej v primerih, ko moramo na enak način obdelati skupino vrednosti istega tipa. Oglejmo si tak zgled. Tabelarične spremenljivke imajo vse enako ime (npr. tabela), razlikujejo pa se po indeksu, zaradi česar vsako od njih obravnavamo kot samostojno spremenljivko. Preberi 5 števil in jih izpiši v obratnem vrstnem redu Denimo, da je naloga Preberi 5 števil in jih izpiši v obratnem vrstnem redu. Vsa števila moramo prebrati (shraniti), ker jih bomo potrebovali šele, ko bodo prebrana vsa. Ustrezen bo na primer tak program: static void Main(string[] args) // branje Console.WriteLine("Vnesi število:"); string beri = Console.ReadLine(); int x1 = int.parse(beri); Console.WriteLine("Vnesi število:"); beri = Console.ReadLine(); int x2 = int.parse(beri); Console.WriteLine("Vnesi število:"); beri = Console.ReadLine(); int x3 = int.parse(beri); Console.WriteLine("Vnesi število:"); beri = Console.ReadLine(); int x4 = int.parse(beri); Console.WriteLine("Vnesi število:"); beri = Console.ReadLine(); int x5 = int.parse(beri); // izpis Console.WriteLine("Števila v obratnem vrstnem redu: "); Console.WriteLine(x5); Console.WriteLine(x4); Console.WriteLine(x3); Console.WriteLine(x2); Console.WriteLine(x1); Če malo pomislimo, vidimo, da v našem program prazzaprav ponavljamo dva sklopa ukazov. Prvi je Console.WriteLine("Vnesi število:"); beri = Console.ReadLine(); int x2 = int.parse(beri); in drugi Console.WriteLine(x3); Vsak sklop ponovimo 5x. Razlikujejo se le po tem da v njih nastopa enkrat x2, drugič x3, tretjič x4 To nam da misliti, da bi lahko uporabili zanko:

28 28 zanka preberi i-to število shrani ga v xi Povečaj i za 1 Naj bo i = prebrano število števil zanka izpiši xi zmanjšaj i za 1 static void Main(string[] args) // branje string beri; for (int i = 1; i <= 50; i++) Console.WriteLine("Vnesi število:"); beri = Console.ReadLine(); int xi = int.parse(beri); for (int i = 50; i >= 1; i--) Console.WriteLine(xi); Prevajalniku tisti xi ni najbolj všeč in v drugi zanki pravi, da "ne obstaja". No razlog je v tem, da so tisti naši xi deklarirani v prvi zanki in jih "drugje ni". Torej jih moramo deklarirati zunaj. Spremenimo v static void Main(string[] args) // branje string beri; int x1, x2, x3, x4, x5; for (int i = 1; i <= 5; i++) Console.WriteLine("Vnesi število:"); beri = Console.ReadLine(); xi = int.parse(beri); for (int i = 5; i >= 1; i--) Console.WriteLine(xi); A prevajalnik pravi, da ne pozna spremenljivke xi? No, morda pa bi bilo dobro deklarirati še to in dodamo int xi; A ko poženemo program, le ta 5x izpiše zadnje vnešeno število? Indeksi Mi bi v prejšnjem zgledu želeli, da xi pomeni x1, x2, x3,... (glede na vrednost i). Prevajalnik pa trmasto vztraja, da je to spremenljivka z imenom xi (torej ena sama). Kako torej napišemo indekse? Indeks napišemo za imenom tabele med oglatimi oklepaji ([]). Tako zapis igralci[4] pomeni element z indeksom 4 tabele igralci.

29 29 Torej bi prejšnji zgled morali napisati kot static void Main(string[] args) // branje string beri; int x1, x2, x3, x4, x5; for (int i = 1; i <= 5; i++) Console.WriteLine("Vnesi število:"); beri = Console.ReadLine(); x[i] = int.parse(beri); for (int i = 5; i >= 1; i--) Console.WriteLine(x[i]); Vendar žal prevajalnik še vedno ni zadovoljen. Namreč pozna le spremenljike x1, x2,... ne ve pa, da je x ime tabele, kjer bi radi imeli 5 indeksov (torej prostor za 5 števil). Deklaracija tabele Prvi korak pri ustvarjanju tabele je najava le te. To storimo tako, da za tipom tabele navedemo oglate oklepaje in ime tabele. podatkovnitip[] imetabele; Z zgornjim stavkom zgolj napovemo spremenljivko, ki bo hranila naslov bodoče tabele, ne zasedemo pa še nobene pomnilniške lokacije, kjer bodo elementi tabele dejansko shranjeni. Potrebno količino zagotovimo in s tem tabelo dokončno pripravimo z ukazom new: imetabele = new podatkovnitip[velikost]; Ukaz new zasede dovolj pomnilnika, da vanj lahko shranimo dolzina spremenljivk ustreznega tipa in vrne njegov naslov. Velikost tabele je enaka številu elementov, ki jih lahko hranimo v tabeli. Napoved in zasedanje pomnilniške lokacije lahko združimo v en stavek: podatkovnitip[] imetabele = new podatkovnitip[velikost]; Primeri najave tabele: // tabela 10 celih števil int[] stevila = new int[10]; // tabela 3 realnih števil double[] cena = new double[3]; // tabela 4 znakov char[] tabelaznakov = new char[4]; // tabela 500 nizov string[] ime = new string[500]; Sedaj lahko končno naš zgled napišemo prav. static void Main(string[] args)

30 30 // branje string beri; int[] x = new int[5]; for (int i = 1; i <= 5; i++) Console.WriteLine("Vnesi število:"); beri = Console.ReadLine(); x[i] = int.parse(beri); for (int i = 5; i >= 1; i--) Console.WriteLine(x[i]); A med izvajanjem se program "sesuje" s sporočilom Zakaj? Grafično si lahko enodimenzionalno tabelo predstavljamo takole: int[] tab = new int[5];//ime tabelarične spremenljivke je tab tab[0] tab[1] tab[2] tab[3] tab[4] tab[4] = 100; // peti element v tabeli ( indeksi se označujejo od 0 naprej!!!) ime tabele (polja) indeks vrednost Vsaka tabelarična spremenljivka ima svoj indeks, preko katerega ji določimo vrednost (jo inicializiramo) ali pa jo uporabljamo tako kot običajno spremenljivko. Začetni indeks je enak nič (0) končni indeks pa je za ena manjši kot je dimenzija tabele (dimenzija 1). S posameznimi elementi tabele lahko operiramo enako kot s spremenljivkami tega tipa. Tako je v spodnjem zgledu npr. tabela[4] povsem običajna spremenljivka tipa int. Primer: // tabelo napolnimo z vrednostmi tabela[0] = 10; tabela[1] = 20; tabela[2] = 31;

31 31 tabela[3] = 74; tabela[4] = 97; tabela[5] = 31; Posameznim tabelaričnim spremenljivkam (komponentam) lahko prirejamo vrednost, ali pa jih uporabljamo v izrazih, npr.: int[] tab = new int[5]; tab[0] = 100; tab[1] = tab[0]-20; // tab[1] dobi vrednost 80 tab[2] = 300; tab[3] = 400; tab[4] = tab[1] + tab[3]; // tab[4] dobi vrednost 500 Izgled tabele po izvedbi zgornjih stavkov je torej takle: Pri uporabi indeksov pa moramo paziti, da ne zaidemo izven predpisanih meja. In ker smo v našem primeru uporabljali x[5] (ko je bil i == 5), smo dobili napako IndexOutOfRangeException, ki vedno pomeni, da smo zašli izven tabele. Če sedaj upoštevamo povedano, vidimo, da bomo namesto indeksov 1, 2, 3, 4 in 5 uporabili indekse 0, 1, 2, 3, in 4. S programom static void Main(string[] args) // branje string beri; int[] x = new int[5]; for (int i = 0; i <= 4; i++) Console.WriteLine("Vnesi število:"); beri = Console.ReadLine(); x[i] = int.parse(beri); for (int i = 4; i >= 0; i--) Console.WriteLine(x[i]); pa končno dobimo željeni rezultat! Najbolj uporabna lastnost tabel je ta, da jih zlahka uporabljamo v zankah. S spreminjanjem indeksov v zanki poskrbimo, da se operacije izvedejo nad vsemi elementi tabele. Deklarirajmo tabelo 100 celih števil in jo inicializirajmo tako, da bodo imeli vsi elementi tabele vrednost 1: int[] tabela = new int[100]; for (int i = 0; i < 100; i++) tabela[i] = 1; Velikost tabele lahko določimo med samim delovanjem programa. Dimenzijo tabele torej lahko določi uporabnik, glede na svoje potrebe:

32 32 Console.Write("Določi dimenzijo tabele: "); int dimenzija = int.parse(console.readline()); //Dimenzijo tabele določi uporabnik med izvajanjem!!! int[] tabela = new int[dimenzija]; Sočasno z najavo lahko elementom določimo tudi začetne vrednosti. Te zapišemo med zavita oklepaja. Posamezne vrednosti so ločene z vejico. Primer: int[] stevila = 1, 2, 3, 6, 8, 12, 14, 4, 7, 9; Ob naštevanju vrednosti ne moremo navesti dolžine tabele, saj jo prevajalnik izračuna sam. Paziti moramo, da vsi elementi ustrezajo izbranemu tipu. Povzemimo vse načine deklaracije tabele: 1. način: Najprej najavimo ime tabele. Nato z operatorjem new dejansko ustvarimo tabelo. Primer: int[] tabela = new int[5]; // ustvarimo tabelo dolžine 5 int[] tab1; // Vemo, da je tab1 ime tabele celih števil, // tabela kot taka pa še ne obstaja tab1 = new int[20]; // tab1 kaže na tabelo 20 celih števil Seveda ni nujno, da si ukaza sledita neposredno drug za drugim. Prav tako ni nujno, da za določanje velikosti uporabimo konstanton. Napišemo lahko poljubni izraz. tab1 = new int[2 + 5]; // tab1 kaže na tabelo 7 celih števil kjer lahko nastopajo tudi spremenljivke, ki imajo v tistem trenutku že prirejeno vrednost int vel = 10; tab1 = new int[2 * vel]; // tab1 kaže na tabelo 20 celih števil ki smo jo seveda lahko tudi prebrali int[] tab = new int[int.parse(console.readline())]; No, omenjeno "kolobocijo" zgoraj raje napišimo kot string beri = Console.ReadLine(); int veltab = int.parse(beri); int[] tab = new int[veltab]; 2. način: Oba zgornja koraka združimo v enega. Primera: int[] tab1 = new int[2]; // Vsi elementi so samodejno nastavljeni na 0 double[]tab2 = new double[5];//vsi elementi so samodejno nastavljeni na 0.0

33 33 Tako v 1. in 2. načinu velja, da se, ko z new ustvarimo tabelo, vsi elementi samodejno nastavijo na začetno vrednost, ki jo določa tip tabele (npr. int - 0, double - 0.0, bool - false). 3. način: Tabelo najprej najavimo, z operatorjem new zasedemo pomnilniško lokacijo, nato pa elementom določimo začetno vrednost. Primer: int[] tab3 = new int[] -7, 5, 65 ; // Elementi so -7, 5 in 65 lahko pa smo tudi "pridni" in velikost povemo še sami Primer: int[] tab3 = new int[3] -7, 5, 65 ; // Elementi so -7, 5 in način: Tabelo najprej najavimo, nato pa elementom določimo začetno vrednost. Velikosti tabele ni potrebno podati, saj jo prevajalnik izračuna sam. Primer: char[] tab4 = 'a', 'b', 'c' ; // Elementi so 'a', 'b', in 'c' Omenimo še enkrat, da dolžino tabele stevila (število elementov, ki jih lahko shranimo v tabelo) dobimo z izrazom stevila.length. Indeksi v nizih in tabelah Izraz, s katerim dostopamo do i-tega elementa tabele (imetabele[i]), se v jeziku C# po videzu ujema z izrazom za dostopanje do i-tega znaka v nizu (imeniza[i]). Izraza pa se ne ujemata v uporabi. Pri tabelah uporabljamo izraz za pridobitev in spremembo elementa tabele, medtem, ko ga pri nizih uporabljamo le za pridobitev znaka. V primeru, da izraz uporabimo za spremembo določenega znaka v nizu, nam prevajalnik vrne napako. C:\Documents and Settings\Administrator\Desktop\VajeC#\Test12\Test12\ Program.cs(10,13): error CS0200: Property or indexer 'string.this[int]' cannot be assigned to -- it is read only Primer: // Deklaracija tabele in niza int[] tab = 1, 6, 40, 15 ; string niz = "Trubarjevo leto 2008."; // Pridobivanje int el = tab[2]; // Vrednost spremenljivke je 6. char z = niz[2]; // Vrednost spremenljivke je koda zanka 'u'. // Spreminjanje tab[1] = 5; // Spremenjena tabela je [1, 5, 40, 15]. niz[18] = '9'; // Izpiše se napaka. Poglejmo si preprost primer tabele imen. Napolnimo tabelo z imeni in izpišimo njeno dolžino. 1: static void Main(string[] args) 2: 3: string[] imena="jan", "Matej", "Ana", "Grega", "Sanja"; 4: Console.WriteLine("Dolzina tabele je " + imena.length + ".");

34 34 5: Console.WriteLine("Ime na sredini tabele je " + 6: imena[imena.length / 2] + "."); 7: // main Program prevedemo in poženemo: Opis programa V 3. vrstici smo najavili tabelo imena tipa string[] in jo napolnili z elementi. Zatem smo izpisali njeno dolžino z ukazom imena.length. V 4. vrstici želimo izpisati element, ki se nahaja na sredini naše tabele. Izraz imena.length / 2 nam vrne 2, element, ki se nahaja na mestu imena[2] je Ana. Podrobneje si poglejmo, kako indeksiramo podatke v tabeli imena. Prvi element tabele ima indeks 0 in vsebuje niz "Jan", drugi ima indeks 1 in vsebuje niz "Matej", tretji ima indeks 2 in vsebuje niz "Ana", četrti ima indeks 3 in vsebuje niz "Grega" in peti ima indeks 4 in vsebuje niz "Sanja". Tabelo imena si lahko predstavljamo takole: indeks vrednost Jan Matej Ana Grega Sanja Neujemanje tipov pri deklaraciji Kaj se bo zgodilo, če napišemo naslednji program. 1: static void Main(string[] args) 2: 3: string[] stevila = 1, 2, 3 ; 4: Console.WriteLine("Dolžina tabele je " + 5: stevila.length + "."); 6: Program se ne prevede. Če pogledamo vrstico 3, smo deklarirali tabelo nizov, tej tabeli pa smo priredili celoštevilske vrednosti. Ker se tipa ne ujemata, bo prevajalnik javil: Error 3 Cannot implicitly convert type 'int' to 'string' Napako popravimo tako, da napišemo ustrezen (pravilen) tip. 1: static void Main(string[] args) 2: 3: int[] stevila = 1, 2, 3 ; 4: Console.WriteLine("Dolzina tabele je " +stevila.length + "."); 5: Program prevedemo in poženemo:

35 35 Izpis tabele Poskusimo izpisati vse elemente tabele imena na naslednji način. static void Main(string[] args) string[] imena="jan", "Matej", "Ana", "Grega", "Sanja"; Console.WriteLine(imena); // main Program prevedemo in poženemo: Dobimo čuden izpis. V spremenljivki imena namreč ne hranimo tabele imen, ampak le naslov, kje se tabela nahaja. Z ukazom Console.WriteLine(imena) izpišemo naslov, kjer se nahaja naša tabela, in ne posameznih elementov. Če želimo izpisati vrednosti slednjih, jih moramo obravnavati vsakega posebej. Omenili smo že, da do i tega elementa (natančneje, do elementa z indeksom i) dostopamo z izrazom imetabele[i]. Popravimo program. Za izpis vseh elementov tabele bomo uporabili zanko for, static void Main(string[] args) string[] imena="jaka", "Matej", "Ana", "Grega", "Sanja"; for(int i = 0; i < imena.length; i++) Console.WriteLine(imena[i]); // main Program prevedemo in poženemo: Opis programa: Najprej definiramo tabelo tipa string in jo napolnimo s podatki. Njeno vsebino bomo izpisali na ekran s pomočjo zanke for. Definiramo spremenljivko i in ji priredimo vrednost 0, zatem preverimo če je i manjše od dolžine tabele, ki je v našem primeru 5 (pogoj je izpolnjen), izpišemo spremenljivko, ki se nahaja na mestu imena[0] to je Jaka. Vrednost i povečamo za ena in ponovno preverimo resničnost pogoja (i < imena.length), ker je pogoj ponovno resničen izpišemo vrednost spremenljivke imena[1] Matej, postopek nadaljujemo toliko časa, da izpišemo še preostal del tabele, ko pogoj ni več izpolnjen (izpisali smo vse vrednosti tabele) končamo. Poskusimo izpisati peti element tabele imena. static void Main(string[] args) string[] imena="jaka", "Matej", "Ana", "Grega", "Sanja"; Console.WriteLine(imena[5]); // main Program prevedemo in poženemo:

36 36 Prevajalnik javi napako, saj smo poskušali poklicati element, ki je izven definirane meje. Kot smo že povedali, se veljavni indeksi vedno gibljejo v meji od 0 do dolzina 1, v našem primeru od 0 do 4. Primerjanje tabel Oglejmo si še en primer pogoste napake. Denimo, da želimo primerjati dve tabeli. Zanima nas, če so vsi istoležni elementi enaki. "Naivna" rešitev z t1 == t2 nam ne vrne pričakovan rezultat. static void Main(string[] args) int[] t1 = new int[] 1, 2, 3 ; int[] t2 = new int[] 1, 2, 3 ; Console.WriteLine(t1 == t2); //main Program prevedemo in poženemo: Opis programa. Čeprav obe tabeli vsebujeta enake elemente, nam izpis pove, da tabeli nista enaki. Zakaj? Spomnimo se, da t1 in t2 vsebujeta samo naslov, kjer se nahajata tabeli. Ker sta to dve različni tabeli (sicer z enakimi elementi, a vseeno gre za dve tabeli), zato tudi naslova nista enaka. In to nam pove primerjava t1 == t2. Oglejmo si, kako bi pravilno primerjali dve tabeli. 1: static void Main(string[] args) 2: 3: int[] t1 = new int[] 1, 2, 3; 4: int[] t2 = new int[] 1, 2, 3; 5: 6: bool je_enaka = true; 7: 8: if (t1.length == t2.length) 9: 10: for(int i = 0; i < t1.length; i++) 11: 12: if (t1[i]!= t2[i]) 13: je_enaka = false; 14: 15: 16: else je_enaka = false; 17: 18: if (je_enaka) 19: Console.WriteLine("Tabeli sta enaki."); 20: else Console.WriteLine("Tabeli nista enaki."); 21: //main Opis programa. V 8. vrstici najprej preverimo če sta tabeli enako veliki. Če je ta pogoj izpolnjen, nadaljujemo s primerjavo elementov znotraj tabele. Z zanko for se sprehodimo po vseh elementih in na vsakem koraku primerjamo t1[0]!= t2[0], t1[1]!= t2[1], Če bi naleteli vsaj na en par neenakih števil, bi spremenljivko je_enaka nastavili na false, saj tabeli potem nista enaki. V našem primeru pa je ta pogoj vedno neresničen, saj so 1!= 1, 2!= 2, neresnične izjave, zato izpišemo Tabeli sta enaki. Če pa naletimo na tabeli, ki nista enako veliki ali pa je pogoj v 12. vrstici resničen vsaj enkrat, se izpiše Tabeli nista enaki.

37 37 Zgledi Dnevi v tednu Deklariraj tabelo sedmih nizov in jo inicializiraj tako, da bo vsebovala dneve v tednu. Tabelo nato še izpiši, vsak element tabele v svojo vrsto. string[] dnevivtednu = new string[7] "Ponedeljek", "Torek", "Sreda", "Četrtek", "Petek", "Sobota", "Nedelja" ; for (int i=0;i<7;i++) Console.WriteLine(dneviVTednu[i]); Mrzli meseci Preberi povprečne temperature v vseh mesecih leta in potem izpiši mrzle mesece, torej take, ki imajo temperaturo nižjo od povprečne. static void Main(string[] args) double[] meseci = new double[12]; double letnopovp = 0; for (int i = 0; i < 12; i++) Console.Write("Povprečna temperatura za " + (i + 1) + ". mesec : "); meseci[i] = double.parse(console.readline()); letnopovp = letnopovp + meseci[i]; letnopovp = Math.Round(letnoPovp / 12, 2); Console.WriteLine("Povprečna letna temperatura : " + letnopovp); Console.WriteLine("Mrzli meseci: "); for (int i = 0; i < 12; i++) if (meseci[i] <= letnopovp) Console.Write((i + 1) + ". mesec "); //main Delitev znakov v stavku Preberi poljuben stavek in izpiši, koliko znakov vsebuje, koliko je v njem samoglasnikov, koliko števk in koliko ostalih znakov static void Main(string[] args) string samogl = "AEIOU"; int stsam = 0, ststevk = 0; string stavek; Console.Write("Vnesi poljuben stavek: ");

38 38 stavek = Console.ReadLine(); Console.WriteLine(); for (int i = 0; i < stavek.length; i++) char znak = stavek[i]; if (samogl.indexof(znak) > -1) // znak je samoglasnik stsam = stsam + 1; if ('0' <= znak && znak <= '9') ststevk = ststevk + 1; Console.WriteLine("\nŠtevilo vseh znakov v stavku : " + stavek.length); Console.WriteLine("Število samoglasnikov : " + stsam); Console.WriteLine("Število cifer : " + ststevk); Console.WriteLine("Število ostalih znakov : " + (stavek.length - stsam - ststevk)); //main Zbiramo sličice Začeli smo zbirati sličice. V album moramo nalepiti 250 sličic. Zanima nas, koliko sličic bomo morali kupiti, da bomo napolnili album. Seveda ob nakupu ne vemo, katero sličico bomo dobili. Ker bi to radi vedeli še preden se bomo zares spustili po nakupih, bi radi polnjenje albuma simulirali s pomočjo računalniškega programa. In če bomo to simulacijo ponovili dovolj mnogokrat, bomo že dobili občutek o številu potrebnih nakupov. Pri tem seveda naredimo nekaj predpostavk: hkrati vedno kupimo le eno sličico. Vse sličice so enako pogoste. Torej je verjetnost, da bomo kupili i-to sličico ravno 1/250. Podvojenih sličic ne menjamo. Poglejmo, kako bi sestavili program. Naš album bo tabela. Če bo vrednost ustreznega elementa false, to pomeni da sličice še nimamo. Da nam ne bo po vsakem nakupu treba prečesati vsega albuma, da bi ugotovili, ali kakšna sličica še manjka, bomo vodili evidenco o tem, koliko sličic v albumu še manjka. V zanki, ki se bo odvijala toliko časa, dokler število manjkajočih sličic ne bo padlo na nič, bomo kupili sličico (naključno generirali število med 0 in 249). Če je še nimamo, bomo zmanjšali število manjkajočih sličic in si v albumu označili, da sličico imamo. static void Main(string[] args) int st_slicicvalbumu = 250; int st_zapolnjenih = 0; int st_kupljenihslic = 0; // boben nak. stevili Random bob = new Random(); // album bool[] album = new bool[st_slicicvalbumu]; // polnimo album while (st_zapolnjenih < st_slicicvalbumu) st_kupljenihslic = st_kupljenihslic + 1; int st_slikic= bob.next(st_slicicvalbumu); // jo damo v album if (!album[st_slikic]) album[st_slikic] = true; st_zapolnjenih = st_zapolnjenih + 1;

39 39 Console.WriteLine("Da smo napolnili album, smo kupili "+ + st_kupljenihslic + " slikic."); Program prevedemo in poženemo: Opis programa: V uvodu definiramo tri spremenljivke s katerimi nadzorujemo stanje album. V 9. vrstici začnemo polniti album, za to uporabili zanko while. Ob vsakem vstopu v zanko kupimo sličico, ki ji dodelimo naključno mesto v albumu (naključno generirali število med 0 in 249). Preverimo če že imamo to mesto zapolnjeno (!album[st_slikic] ). Če ne, jo vstavimo v album in povečamo število zapolnjenih mest v albumu. To ponavljamo toliko časa, da je pogoj v zanki resničen. Na koncu še izpišemo, koliko sličic smo morali kupiti, da smo napolnili album. Najdaljša beseda v nizu Napišimo program, ki bo našel in izpisal najdaljšo besedo prebranega niza. Predpostavimo, da so besede ločene z enim presledkom. Da bomo iz niza izluščili besede, si bomo pomagali z metodo Split, ki jo najdemo v razredu string. Metoda vrne tabelo nizov, v kateri vsak element predstavlja podniz niza, nad katerim smo metodo uporabili. V jeziku C# niz razmejimo na besede z razmejitvenim znakom oziroma znaki, ki jih ločimo z vejico (npr. Split('/')). Posamezen razmejitveni znak pišemo v enojnih narekovajih ('). V javi za razmejitev niza ne uporabljamo razmejitvenih znakov, temveč uporabimo razmejitveni niz (npr. split("/")), ki ga pišemo v navednicah ("). Metodo Split kot vedno v javi pišemo z malo začetnico. Primer: Denimo, da imamo string stavek = "a/b/c."; Če uporabimo string[] tab = stavek.split('/'); smo s tem ustvarili novo tabelo velikosti 3. V tabeli so shranjeni podnizi niza stavek, kot jih loči razmejitveni znak /. Prvi element tabele tab je niz "a", drugi element je niz "b" in tretji element niz "c.". C1: C2: C3: C4: C5: C6: C7: C8: C9: C10: C11: C12: C13: C14: public static void Main(string[] args) // Vnos niza Console.Write("Vnesi niz: "); string niz = Console.ReadLine(); // Pretvorba niza v tabelo nizov string[] tab = niz.split(' '); // Iskanje najdaljše besede string pomozni = ""; // Najdaljša beseda (oz. podniz) for (int i = 0; i < tab.length; i++) if (pomozni.length < tab[i].length)

40 40 C15: C16: C17: C18: C19: C20: C21: C22: pomozni = tab[i]; // Izpis najdaljše besede Console.WriteLine("Najdaljsa beseda: " + pomozni); Zapis na zaslonu: Razlaga Najprej določimo niz niz (C5). Nato s pomočjo klica metode Split() določimo tabelo tab (C8). V metodi za razmejitveni znak uporabimo presledek (' '). Če je med besedami niza niz več presledkov, se vsi presledki obravnavajo kot razmejitveni znaki. Nato določimo pomožni niz pomozni, ki predstavlja trenutno najdaljšo besedo (C11). Z zanko se sprehodimo po tabeli tab in poiščemo najdaljšo besedo. V vrstici C21 izpišemo najdaljšo besedo niza niz oziroma tabele tab. Če za spremenljivko niz določimo prazen niz (v konzoli pri vnosu niza stisnemo le tipko Enter), se program izvede in za najdaljši niz izpiše prazen niz. Tabela tab je ostala prazna, zato je niz v spremenljivki pomozni ostal "". Uredi elemente po velikosti Sestavimo program, ki bo uredil vrednosti v tabeli celih števil po naslednjem postopku: Poiščimo najmanjši element in ga zamenjajmo s prvim. Nato poiščimo najmanjši element od drugega dalje in ga zamenjajmo z drugim, itn. Tabelo velikosti n preberemo in jo po urejanju izpišemo na ekran. Sestavimo program po korakih: Najprej deklariramo spremenljivko n, katere prebrano vrednost uporabimo za velikost tabele. Console.Write("Velikost tabele: "); int n = int.parse(console.readline()); Nato deklariramo tabelo velikosti n. int[] tab = new int[n]; Z zanko, ki se bo izvedla n-krat, napolnimo tabelo s števili, dobljenimi pri branju iz konzole. Console.WriteLine(); for (int i = 0; i < n; i++) Console.Write("Vnesi " + (i + 1) + ". element: "); tab[i] = int.parse(console.readline()); Nato naredimo zanko, ki se izvede (n-1)-krat. Ko nam bo ostal le zadnji element, bo že urejen. V zanki: Deklariramo pomožni spremenljivki. V prvi spremenljivki hranimo kandidata za najmanjši element med tistimi z indeksi od indeksa določenega z zanko do konca tabele. V drugi spremenljivki pa hranimo indeks kandidata, shranjenega v prvi spremenljivki. Naredimo zanko for, ki se sprehodi po tabeli od elementa, katerega indeks je določen s prvo zanko, do zadnjega elementa tabele. o Če najdemo manjši element, si zapomnimo njegovo vrednost in indeks.

41 41 Izvedemo zamenjavo med trenutnim elementom in najdenim najmanjšim elementom. for (int i = 0; i < n - 1; i++) int min = tab[i]; // Kandidat za najmanjši element od indeksa i // do konca tabele int indeks = i; // Indeks najmanjšega kandidata for (int k = i + 1; k < n; k++) if (min > tab[k]) // Poiščimo najmanjši element v tem delu min = tab[k]; indeks = k; // Zamenjava elementov int t = tab[i]; tab[i] = tab[indeks]; tab[indeks] = t; Na koncu z zanko for, ki se sprehodi po urejeni tabeli tab, izpišemo elemente in jih pri izpisu ločimo s presledkom. Console.WriteLine(); for (int i = 0; i < n; i++) Console.Write(tab[i] + " "); // Prehod v novo vrstico Console.WriteLine(); Poglejmo še zapis celotnega programa. public static void Main(string[] args) // Vnos vrelikosti tabele Console.Write("Velikost tabele: "); int n = int.parse(console.readline()); // Deklaracija tabele int[] tab = new int[n]; // Napolnitev tabele Console.WriteLine(); for (int i = 0; i < n; i++) Console.Write("Vnesi " + (i + 1) + ". element: "); tab[i] = int.parse(console.readline()); // Uredimo tabelo for (int i = 0; i < n - 1; i++) int min = tab[i]; // Kandidat za najmanjši element od indeksa i // do konca tabele int indeks = i; // Indeks najmanjšega kandidata for (int k = i + 1; k < n; k++) // Poiščimo najmanjši element

42 42 // v tem delu if (min > tab[k]) min = tab[k]; indeks = k; // Zamenjava elementov int t = tab[i]; tab[i] = tab[indeks]; tab[indeks] = t; // Izpis urejene tabele Console.WriteLine(); for (int i = 0; i < n; i++) Console.Write(tab[i] + " "); // Prehod v novo vrstico Console.WriteLine(); Zapis na zaslonu: Vsota elementov Predpostavimo, da imamo tabelo z naslednjimi elementi: 2, 5, 7, 1, 6, 10, 3, 8, 0 in 11. Napišimo program, ki bo določil in izpisal vsoto vseh elementov. 1: public static void Main(string[] args) 2: 3: // Deklariramo tabelo in jo napolnimo z elementi 4: int[] tab = 2, 5, 7, 1, 6, 10, 3, 8, 0, 11 ; 5: 6: // Vsota elementov 7: int vsota = 0; 8: 9: // Ugotovitev vsote elementov tabele 10: for (int i = 0; i < tab.length; i++) 11: 12: int element = tab[i]; 13: vsota = vsota + element; 14: 15: 16: // Izpis vsote elementov tabele 17: Console.WriteLine("Vsota elementov je " + vsota + "."); 18: Zapis na zaslonu:

untitled

untitled 1 MSDN Library MSDN Library 量 例 參 列 [ 說 ] [] [ 索 ] [] 來 MSDN Library 了 類 類 利 F1 http://msdn.microsoft.com/library/ http://msdn.microsoft.com/library/cht/ Object object 參 類 都 object 參 object Boxing 參 boxing

More information

untitled

untitled 1 Outline ArrayList 類 列類 串類 類 類 例 理 MSDN Library MSDN Library 量 例 參 列 [ 說 ] [] [ 索 ] [] 來 MSDN Library 了 類 類 利 F1 http://msdn.microsoft.com/library/ http://msdn.microsoft.com/library/cht/ Object object

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

untitled

untitled 1 Outline 流 ( ) 流 ( ) 流 ( ) 流 ( ) 流 ( ) 狀 流 ( ) 利 來 行流 if () 立 行 ; else 不 立 行 ; 例 sample2-a1 (1) 列 // 料 Console.Write(""); string name = Console.ReadLine(); Console.WriteLine(" " + name + "!!"); 例 sample2-a1

More information

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

该 奈 自 受 PZ 多 透 soc i e B t h y. y t is NA YL OR exp os ed t h a t b e i n g wh o res or sa in t es s e s we r e m ad e n b ot om. M ean wh i l e NA YL

该 奈 自 受 PZ 多 透 soc i e B t h y. y t is NA YL OR exp os ed t h a t b e i n g wh o res or sa in t es s e s we r e m ad e n b ot om. M ean wh i l e NA YL 探 性 通 性 圣 重 ' 颠 并 格 洛 丽 亚 奈 勒 小 说 贝 雷 的 咖 啡 馆 对 圣 经 女 性 的 重 写 郭 晓 霞 内 容 提 要 雷 的 咖 啡 馆 中 权 社 会 支 配 的 女 性 形 象 美 国 当 代 著 名 黑 人 女 作 家 格 洛 丽 亚 过 对 6 个 圣 经 女 性 故 事 的 重 写 奈 勒 在 其 小 说 贝 覆 了 圣 经 中 被 父 揭 示 了 传 统

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

( ) 001 ( CIP ) /. :,2005 ISBN CIP (2005) : : ( 147 : ) : : 850mm 1168mm : 333 :

( ) 001 ( CIP ) /. :,2005 ISBN CIP (2005) : : ( 147 : ) : : 850mm 1168mm : 333 : ( ) 001 ( CIP ) /. :,2005 ISBN 7-224 - 07274-5.......... 222 CIP (2005) 045547 : : ( 147 : 710003 ) : : 850mm 1168mm 32 15. 375 : 333 : 2005 7 1 2005 7 1 : 1-1000 : ISBN 7-224 - 07274-5/ I 1182 : 29. 00

More information

sp046-091.pdf

sp046-091.pdf RESTAURANT + CAFE + IZAKAYA + BAR = TOKYO GOURMET 1603~1867 48 1868~1912 49 1 1895 i ma han be kan 20 P.344-B 4-B 2-2-5 03-3841-2690 11:00~15:00 16:30~21:30~ 11:00~21:30 5 2,000~3,000 www.asakusa-imahan.co.jp

More information

: ) khgit 31 ai 33 ni 33 khum 31 sa 33 sa 55!! ( ) gai 33 phgo 31 ai 33 pg 33 log 33 n 55 ga 31 n 31 gai 33 ( ) ai 33 1 gi 33 khai 31 ai 33 mau 31 mui

: ) khgit 31 ai 33 ni 33 khum 31 sa 33 sa 55!! ( ) gai 33 phgo 31 ai 33 pg 33 log 33 n 55 ga 31 n 31 gai 33 ( ) ai 33 1 gi 33 khai 31 ai 33 mau 31 mui 1998 4,,,,,,, ai 33 a 31 na 55,,,, ai 33 : ai 33 1 1. ai 33 1 :, : 4 : ) khgit 31 ai 33 ni 33 khum 31 sa 33 sa 55!! ( ) gai 33 phgo 31 ai 33 pg 33 log 33 n 55 ga 31 n 31 gai 33 ( ) ai 33 1 gi 33 khai 31

More information

一、注意事项

一、注意事项 2014 年 天 津 市 公 务 员 考 试 行 测 真 题 及 答 案 解 析 第 一 部 分 数 量 关 系 ( 共 15 题 参 考 时 限 15 分 钟 ) 1 6, 11, 17, ( ), 45 A.30 B.28 C.25 D.22 2 2, 3, 6, 15, ( ) A.25 B.36 C.42 D.64 3 1, 2, 9, 64, 625, ( ) A.1728 B.3456

More information

第3章.doc

第3章.doc 3 3 3 3.1 3 IT Trend C++ Java SAP Advantech ERPCRM C++ C++ Synopsys C++ NEC C C++PHP C++Java C++Java VIA C++ 3COM C++ SPSS C++ Sybase C++LinuxUNIX Motorola C++ IBM C++Java Oracle Java HP C++ C++ Yahoo

More information

五花八门宝典(一).doc

五花八门宝典(一).doc BBS...5... 11...23...26...31...46...49...54...55...57...59...62... 110... 114... 126... 132... 149 I "108" 1 2 3 4 BBS 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 M ( ) Kg S ( ) A ( ) K (

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

因 味 V 取 性 又 鸟 U 且 最 大 罗 海 惜 梅 理 春 并 贵 K a t h l ee n S c h w e r d t n er M f l e z S e b a s t i a n C A Fe rs e T 民 伊 ' 国 漳 尤 地 视 峰 州 至 周 期 甚 主 第 应

因 味 V 取 性 又 鸟 U 且 最 大 罗 海 惜 梅 理 春 并 贵 K a t h l ee n S c h w e r d t n er M f l e z S e b a s t i a n C A Fe rs e T 民 伊 ' 国 漳 尤 地 视 峰 州 至 周 期 甚 主 第 应 国 ' 东 极 也 直 前 增 东 道 台 商 才 R od e ric h P t ak 略 论 时 期 国 与 东 南 亚 的 窝 贸 易 * 冯 立 军 已 劳 痢 内 容 提 要 国 与 东 南 亚 的 窝 贸 易 始 于 元 代 代 大 规 模 开 展 的 功 效 被 广 为 颂 扬 了 国 国 内 市 场 窝 的 匮 乏 窝 补 虚 损 代 上 流 社 会 群 体 趋 之 若 鹜 食 窝

More information

Undangan Finalis

Undangan Finalis & 1 P E M E R I N T A H P R O V I N S I J A W A T E N G A H D 1N A S p E N D I D 1K A N Jl Pe A1d N o 134 Se r r c l p 35 1530 1 F x (024) 352 00 7 ] Se r A u s t u s 20 15 No o r : o o s Ke / 0 5 \ 2

More information

:,,,,,,,,,,,,, :,,,! ,, ( ) ;, ( ),,, ( tu n) ( ), ( ), ( ),,, ( ),,,, ( ), : ; 1993, 15 400,, 1973, 3 ; 1977, 1, ;,, 1 ; 1995 12 6 :,,,,,,,,,,, :,,, :??,, S (,, ), ( ) ( ),,, :,,,,,,, : ( ), ( ), ( ),

More information

542 33 1 20 20 6 435 15 311 48 1 4 3 2 0 8 18 200 4 1,888 305 62 2 2 3 61 42 1,346 47 390 40 12 2 2 6 41 8 7 3 3 1 18 301 1 19 24 14 3 3 12 335 110 1 1 1, 582 45 76 547 1 147 46 1,103 96 1 22 8 6,721 70

More information

javaexample-02.pdf

javaexample-02.pdf n e w. s t a t i c s t a t i c 3 1 3 2 p u b l i c p r i v a t e p r o t e c t e d j a v a. l a n g. O b j e c t O b j e c t Rect R e c t x 1 y 1 x 2 y 2 R e c t t o S t r i n g ( ) j a v a. l a n g. O

More information

Ps22Pdf

Ps22Pdf ( ) ( ) 2006 ( C I P ) /. - :, 2002. 6 ( ) ISBN7-80176 - 020-4... - -. I207. 62 CIP ( 2002 ) 035654 ( ) : : : ( 100089) 1 : : : 8501168 1 /32 : 2, 030 : 78. 125 : 2002 6 1 : 2006 5 3 : ISBN7-80176 - 020-4

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

(CIP) /.:, ISBN H173 CI P ( 2003 ) ( ) ( E mail: sdcb citiz.n et ) : * /

(CIP) /.:, ISBN H173 CI P ( 2003 ) ( ) ( E mail: sdcb citiz.n et ) : * / (CIP) /.:, 2003. 5 ISBN 7 81058 175 9..........H173 CI P ( 2003 )036047 ( 149 200072 ) ( E mail: sdcb s@ citiz.n et 56331131 ) : * 8901240 1/ 32 13.25 375 000 2003 5 1 2003 5 1 : 11050 ISBN 7 81058 175

More information

hú sh n y jù tuó qièjuàn m n h n t o lì, zh ng yín pàn yuán j bó yí zhì jié nuò w i ruí túmí du wù jì jiàn yuè qi n zh n t ng 21 yi l ni dàidàng y uè xué w i sì xì, g mà zé shè lú xiáng hé k ol

More information

Ps22Pdf

Ps22Pdf ( ) ( ) 2006 ( C I P ) /. - :, 2002. 6 ( ) ISBN7-80176 - 020-4... - -. I207. 62 CIP ( 2002 ) 035654 ( ) : : : ( 100089) 1 : : : 8501168 1 /32 : 2, 030 : 78. 125 : 2002 6 1 : 2006 5 3 : ISBN7-80176 - 020-4

More information

Ps22Pdf

Ps22Pdf ZHONGGUO GAI KUANG (CIP) /. :, ISBN 7 301 02479 0 1994 9.... K92 : : : : ISBN 7 301 02479 0/ G 0258 : : 100871 : 62752018 62752015 62752032 : : : 787 1092 16 12 225 1994 9 1998 3 1998 3 : 25 00 1 1 1 5

More information

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F 1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET 2.0 2.0.NET Framework.NET Framework 2.0 ( 3).NET Framework 2.0.NET Framework ( System ) o o o o o o Boxing UnBoxing() o

More information

R F I D R F I D C E P S R F I D 96 R F I D Metalib & SFX M U S E Sm a rt we a ve r

R F I D R F I D C E P S R F I D 96 R F I D Metalib & SFX M U S E Sm a rt we a ve r R F I D 96 50 R F I D C E P S R F I D 96 R F I D Metalib & SFX M U S E Sm a rt we a ve r 96 96 143 Metalib & SFX 96 R E A L 6 200 50 60 96 2007 Wi k i 96 1 2 3,524,345 Se a rch Box Ya h o o 96 3 Di re

More information

,,,,,,,, ( ) ; ( ) ;,,, ;, ;,, ;,,, 5,,,, 1 ,,!,! 2004 3 20 2 ( 4 ) ( 7 ) (10) (14) (18),, (21) (27) (31), (39) (44) (52) (57) (65) (68) (73) 1 ( 80 ) ( 85 ) ( 88 ) ( 95 ) ( 98 ) ( 106) ( 113) ( 117) (

More information

,,,,,,,,, (CIP) : /,,. 2. :, 2004 ISBN G CIP (2003) ( ) : : : 880mm 1230mm 1/ 32 : 7.125

,,,,,,,,, (CIP) : /,,. 2. :, 2004 ISBN G CIP (2003) ( ) : : : 880mm 1230mm 1/ 32 : 7.125 / / / 2003 ,,,,,,,,, (CIP) : /,,. 2. :, 2004 ISBN 7-313-03506-3................ G647.38 CIP (2003) 087156 ( 877 200030 ) :64071208 : : 880mm 1230mm 1/ 32 : 7.125 :168 2003 10 1 2004 10 2 2004 10 2 :20

More information

I 宋 出 认 V 司 秋 通 始 司 福 用 今 给 研 除 用 墓 本 发 共 柜 又 阙 杂 既 * *" * " 利 牙 激 I * 为 无 温 乃 炉 M S H I c c *c 传 统 国 古 代 建 筑 的 砺 灰 及 其 基 本 性 质 a 开 始 用 牡 壳 煅 烧 石 灰 南

I 宋 出 认 V 司 秋 通 始 司 福 用 今 给 研 除 用 墓 本 发 共 柜 又 阙 杂 既 * * *  利 牙 激 I * 为 无 温 乃 炉 M S H I c c *c 传 统 国 古 代 建 筑 的 砺 灰 及 其 基 本 性 质 a 开 始 用 牡 壳 煅 烧 石 灰 南 尽 对 古 证 K 避 不 B 要 尽 也 只 得 随 包 国 古 代 建 筑 的 砺 灰 及 其 基 本 性 质 传 统 国 古 代 建 筑 的 顿 灰 及 其 基 本 性 质 李 黎 张 俭 邵 明 申 提 要 灰 也 称 作 贝 壳 灰 蜊 灰 等 是 煅 烧 贝 壳 等 海 洋 生 物 得 的 氧 化 钙 为 主 要 成 分 的 材 料 灰 作 为 国 古 代 沿 海 地 区 常 用 的 建

More information

untitled

untitled [] [] [] 15.1 1 2 Cu 2+ 2e=Cu Zn 2+ 2e=Zn 2H + 2eH 2 Cu2e=Cu 2+ Ni2e=Ni 2+ 2OH 2e=H 2 O 1/2O 2 2Cl 2e=Cl 2 1 1. 2. 15.2 z+ ze l H 3 O + e 2 1 H 2 O 2a H 2 O e 2 1 OH 2b O 2 2H 2 O 4e4OH 3 z+ ze 4 z+ (zh)e

More information

99710b45zw.PDF

99710b45zw.PDF 1 2 1 4 C && Zn H H H H H Cl H O H N H H H CH C H C H 3 2 5 3 7 H H H H CH 3 C2H 5 H H H O H H O K K O NO 2 H O NO 2 NO O 2 C2H5 H O C2H5 C H O C2H3 2 5 H H H O H H O 1826 O

More information

C H A P T E R 7 Windows Vista Windows Vista Windows Vista FAT16 FAT32 NTFS NTFS New Technology File System NTFS

C H A P T E R 7 Windows Vista Windows Vista Windows Vista FAT16 FAT32 NTFS NTFS New Technology File System NTFS C H P T E R 7 Windows Vista Windows Vista Windows VistaFT16 FT32NTFS NTFSNew Technology File System NTFS 247 6 7-1 Windows VistaTransactional NTFS TxFTxF Windows Vista MicrosoftTxF CIDatomicity - Consistency

More information

a ia ua i u o i ei uei i a ii o yo ninu nyn aia ua i i u y iu y a A o

a ia ua i u o i ei uei i a ii o yo ninu nyn aia ua i i u y iu y a A o o t kua v z p pm f v t t l s z t t t t k k vu vuu z i iu y a ia ua i u o i ei uei i a ii o yo ninu nyn aia ua i i u y iu y a A o 214 214 21 214214214 21421 21421 21321 21421 33 1 2 3 4 5 s z t t i p p

More information

6 h h 3 h 3 ha 3 1 I 2 o o a 3 t y 3 t y 3 y t y 3 t y 3 y tsu 3 tsu 3 su 4 17

6 h h 3 h 3 ha 3 1 I 2 o o a 3 t y 3 t y 3 y t y 3 t y 3 y tsu 3 tsu 3 su 4 17 1o 2 n 3 ka t ia k t i x 3 3 a 3 ii 3 4 1n l n l n l 2 t t tstss t tss 3 4 i i a a ua ua ia ia 6 h h 3 h 3 ha 3 1 I 2 o o a 3 t y 3 t y 3 y t y 3 t y 3 y tsu 3 tsu 3 su 4 17 41 n 3 3 pin 3 3 ka xo 3 3

More information

i n i ho n n n n n ng

i n i ho n n n n n ng A i i i i i i i i n i ho n n n n n ng o o o o o o o b B b b p b b b b b b b p b b b b b b i b i b b i b b i b i b i b bn bn bn bn bn bn bn b bn bn bn bn bn bn bng bng bng b pn bng bng bng pn bng bo bo

More information

j n yín

j n yín ch n ài hóng zhuó, j n yín k n sù zh o fù r n xi o qì hái, y oti o sh hàn yàn yuán lí g ng z y ng b niè bì z n r n xi o qì xiè sì m6u yí yàng móu niè z u ch lì, x qu n léi xiè pì x u cu è qi n j qiú yìn

More information

UŽIVAJTE V LJUBEZENSKEM TRIKOTNIKU. Z novim mobilcem, razrezano ceno in privlačno dodatno opremo. 10 Razrezana cena obrokov EOM 0 % 10 Razrezana cena

UŽIVAJTE V LJUBEZENSKEM TRIKOTNIKU. Z novim mobilcem, razrezano ceno in privlačno dodatno opremo. 10 Razrezana cena obrokov EOM 0 % 10 Razrezana cena št. 23/XXI letnik 2016 8. december Izhajajo vsak drugi in četrti četrtek v mesecu Cena: 1,79 NOVICE AKTUALNO VODIČI PREDSTAVITVE TRIKI IZOBRAŽEVANJA Se splača Pametna tehnologija in zdravstvo 20 Najboljše

More information

TomTom GPS

TomTom GPS TomTom GPS Watch Uporabniški priročnik 2.0 Contents Pozdravljeni 5 Kaj je novega 6 Kaj je novega v tej izdaji... 6 Ura 8 O uri... 8 Nošenje ure... 9 Čiščenje ure... 9 Merilnik srčnega utripa... 9 Odstranitev

More information

HUDE novice HUDA zabava hudo.com

HUDE novice HUDA zabava hudo.com št. 1-2/XXII letnik 2017 26. januar Izhajajo vsak drugi in četrti četrtek v mesecu Cena: 1,79 NOVICE AKTUALNO VODIČI PREDSTAVITVE TRIKI IZOBRAŽEVANJA Se splača IT znanja za prihodnost 20 Najboljše kar

More information

New Doc 1

New Doc 1 U N I V E R SI T Y O F M A L ; 1ï i l i dvol 1 l 2 0 1 8 w 1a1 p&t«apa«ridia ti p E g s l am an Pt d1an h Ma @Mi u Ooam a1 ol am S1udl es} ]111 / 2 1 Dr Mo11an a Daw 11a mai amy 1 P r o f e s s o r D r

More information

zw.PDF

zw.PDF 20 30 15 16 15 67 12 12 12 11 1508 4 18 4 600 343 37 9 9 12 9 30 90 1503 50 23 20 400 2.65 2 19 15 20 15 16 17 19 6 23 1642 600 350 1500 19 20 30 7 1816 1830 7 23 1830 1874 4 1874 1863 14 11 20 20 20 1905

More information

Persuasive Techniques (motorcycle helmet)

Persuasive Techniques  (motorcycle helmet) M O D E A T H E E L E M E N T S O F A N A R G U M E N T 1n t h l s t e s t i m o n y g iv e n b e f o r e t h e M a ry l a n d Se n a t e t h e s p e a ke r m a ke s a s t r o n g c l a i m a b o u t t

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

三 练 四 ji 佟 n j 佾 n sh 俅 xi 佗 n 1. 坚 :( ) 决 ( ) 急 ( ) 立 ( ) 惠 b 侪 p 侪 2. 发 : 调 ( ) ( ) 水 丶 3. 友 b 佗 b 佗 : ( ) 出 ( ) 涉 zh 伽 i z 佗 q 侃 n ti 佗 o 4. 条 : 营

三 练 四 ji 佟 n j 佾 n sh 俅 xi 佗 n 1. 坚 :( ) 决 ( ) 急 ( ) 立 ( ) 惠 b 侪 p 侪 2. 发 : 调 ( ) ( ) 水 丶 3. 友 b 佗 b 佗 : ( ) 出 ( ) 涉 zh 伽 i z 佗 q 侃 n ti 佗 o 4. 条 : 营 一 单 元 草 船 借 箭 一 l 佴 i sh 佟 n 倮 y 佻 q 佻 w 侑 itu 侪 j 佾 nj 侏 ( ) 鼓 ( ) 兵 ( ) ( ) ( ) y 俅 zh 佟 od 伽 i t 伽 n q 侃 n 倮 y 佻 mi 伽 osu 伽 n ( ) 计 ( ) ( ) 听 ( ) 神 机 ( ) 草 船 借 箭 二 托 渊 拖 渊 预 渊 颗 渊 及 渊 急 渊 待 渊 侍 渊 匠

More information

2.181% 0.005%0.002%0.005% 2,160 74,180, ,000, ,500,000 1,000,000 1,000,000 1,000,000 2

2.181% 0.005%0.002%0.005% 2,160 74,180, ,000, ,500,000 1,000,000 1,000,000 1,000,000 2 90,000,000 9,000,000 81,000,000 2.18 0.10 3300 1 2.181% 0.005%0.002%0.005% 2,160 74,180,000 8.24 81,000,000 2.18 13,500,000 1,000,000 1,000,000 1,000,000 2 1,000,0001,000,000 1,000,000 2,000 2.18 1% 0.005%0.002%0.005%

More information

chp6.ppt

chp6.ppt Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行

More information

图 书 在 版 编 目 (CIP) 数 据 中 文 第 九 册 教 学 参 考 / 中 国 暨 南 大 学 华 文 学 院 编. 修 订 版. 广 州 : 暨 南 大 学 出 版 社,2007.9 ISBN 978-7-81029-811-7 Ⅰ. 中 Ⅱ. 中 Ⅲ. 对 外 汉 语 教 学 Ⅳ. H195 暨 南 大 学 出 版 社 出 版 发 行 ( 中 国 广 州 ) 电 话 / 传 真 :0086-20-85221583

More information

Microsoft Word - ch04三校.doc

Microsoft Word - ch04三校.doc 4-1 4-1-1 (Object) (State) (Behavior) ( ) ( ) ( method) ( properties) ( functions) 4-2 4-1-2 (Message) ( ) ( ) ( ) A B A ( ) ( ) ( YourCar) ( changegear) ( lowergear) 4-1-3 (Class) (Blueprint) 4-3 changegear

More information

HTC Desire 500 dual sim HTC Desire 500 Navodila

HTC Desire 500 dual sim HTC Desire 500 Navodila HTC Desire 500 dual sim HTC Desire 500 Navodila Prirocnik z varnostnimi informacijami in napotki SLO HTC Desire 500 dual sim HTC Desire 500 Navodila Opozorilo! Telefon in poraba interneta Telefon se dobavlja

More information

校园之星

校园之星 sh d sh ji sh d sh ji sh d sh ji sh d sh ji sh d sh ji sh d sh ji sh d sh ji NO NO sh d sh ji NO sh d sh ji sh d sh ji sh d sh ji sh d sh ji sh d sh ji sh d sh ji sh d sh ji sh d sh ji sh d sh ji sh d

More information

国信证券股份有限公司

国信证券股份有限公司 国 信 证 券 股 份 有 限 公 司 关 于 鹭 燕 ( 福 建 ) 药 业 股 份 有 限 公 司 股 票 上 市 保 荐 书 深 圳 证 券 交 易 所 : 经 中 国 证 券 监 督 管 理 委 员 会 证 监 许 可 2016 89 号 文 核 准, 鹭 燕 ( 福 建 ) 药 业 股 份 有 限 公 司 ( 以 下 简 称 鹭 燕 医 药 发 行 人 或 公 司 ) 不 超 过 3,205

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

CIP /. 2005. 12 ISBN 7-5062 - 7683-6 Ⅰ.... Ⅱ.... Ⅲ. Ⅳ. G624.203 CIP 2005 082803 櫶櫶櫶櫶櫶櫶櫶櫶櫶櫶櫶櫶櫶櫶櫶櫶櫶櫶櫶櫶櫶櫶 17 710001 029-87232980 87214941 029-87279675 87279676 880 1230 1/64 4.0 110 2006 2 1 2006 2 1 ISBN

More information

C/C++语言 - 分支结构

C/C++语言 - 分支结构 C/C++ Table of contents 1. if 2. if else 3. 4. 5. 6. continue break 7. switch 1 if if i // colddays.c: # include int main ( void ) { const int FREEZING = 0; float temperature ; int cold_ days

More information

nooog

nooog 1 ( ) 1 2 4 3 ( ) 6 4 8 12 5 12 6 14 7 16 8 19 22 9 22 10 24 11 26 12 28 31 13 31 14 33 15 35 16 39 17 41 18 43 46 19 46 20 48 1 5 9 13 17 21 25 ( ) 29 ( ) 39 1 ( ) 1. ( ) A. ( y ) ( ji ) ( b ) ( hu )

More information

日照县志0903-.FIT)

日照县志0903-.FIT) 据 清 光 绪 十 二 年 版 市 档 案 局 ( 馆 ) 重 印 编 辑 委 员 会 名 誉 主 任 毛 继 春 徐 清 主 任 梁 作 芹 副 主 任 朱 世 国 傅 海 军 郑 昭 伟 孙 玉 生 刘 克 平 吴 建 华 成 员 张 传 满 张 传 鹏 田 伟 刘 祥 云 徐 田 霞 宋 莉 媛 主 编 梁 作 芹 副 主 编 朱 世 国 吴 建 华 吴 建 华 范 莉 莉 李 宛 荫 孙 晓

More information

6寸PDF生成工具

6寸PDF生成工具 番 茄 的 生 长 发 育 需 要 什 么 样 的 环 境 条 件? 番 茄, 原 产 南 美 热 带 高 原 原 始 森 林 中, 为 多 年 生 草 本 植 物, 在 温 室 中 栽 培 其 寿 命 可 长 达 2-3 年 所 需 环 境 条 件 : 1 温 度 : 番 茄 喜 温, 其 最 适 宜 的 生 长 温 度 为 20-25, 低 于 15 时 不 能 开 花, 或 授 粉 受 精 不

More information

江 小 说 中 的 南 京 大 屠 杀 与 民 族 国 家 观 念 表 达 究 大 致 采 取 个 案 分 析 以 解 读 叙 述 策 略 等 角 度 切 人 讨 钗 和 哈 金 南 京 安 魂 曲 关 时 代 相 关 作 者 来 自 多 个 国 家 作 两 部 小 说 为 例 从 直 面 历 史

江 小 说 中 的 南 京 大 屠 杀 与 民 族 国 家 观 念 表 达 究 大 致 采 取 个 案 分 析 以 解 读 叙 述 策 略 等 角 度 切 人 讨 钗 和 哈 金 南 京 安 魂 曲 关 时 代 相 关 作 者 来 自 多 个 国 家 作 两 部 小 说 为 例 从 直 面 历 史 对 小 说 中 的 南 京 大 屠 杀 与 民 族 国 家 观 念 表 达 + 李 永 东 摘 要 南 京 大 屠 杀 是 中 外 战 争 史 上 骇 人 听 闻 的 暴 虐 事 件 作 为 创 作 题 材 然 目 前 关 于 南 京 大 屠 杀 的 文 学 研 究 却 相 当 薄 弱 还 不 少 作 家 以 之 停 留 单 个 作 品 分 析 的 阶 段 因 此 有 必 要 从 民 族 国 家 观

More information

Turg-Guade

Turg-Guade 7 Tenor1 Tenor 2 Bass 1 Bass 2 spe Adapted for recorders de flo re vir gi na li Ho no re que de flo re vir gi na li Ho no reque spe cia de flo re virgi na li Hono re que de flo re virgi na li Ho no re

More information

Microsoft Word - 会协_2011_54号-OK.doc

Microsoft Word - 会协_2011_54号-OK.doc k á}» st f ¼~ é~ºpíö ~ oø É zø { q³u c c g»â» { g»â»â yð Þ ì «ÃȻ u ¾ È nú u ¾ È n«¾s ۻ À Ä w fòw»â À Ä Ç xd É Ç Ç É Ç ä»d î cjì î c t È ]KSM#FLFSDRUJFQ Ò ù «g»â»~ œè»â À Ä Ç w»â À Ä Ç x f «g»â» Û Õ

More information

JAVA String常用APi

JAVA String常用APi JAVA String 常 用API 2015 年 5 月13 日 星 期 三 ------------------------------------------ String 类 的 特 点 : 字 符 串 对 象 一 旦 被 初 始 化 就 不 会 被 改 变 abc 存 储 在 字 符 串 常 量 池 中 Java 的 核 心 类 包 是 java.lang eclipse:ctrl+ 方

More information

M M M M M M M M M M M M M M M M S M M M M M M M M M M M M M hu n y zh gu k n y y n xi o qi ng g ng l i z n ju y u d ng l y n n o w t o ti ti n xi x ng q ng d d o q U ji

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Fortran Algol Pascal Modula-2 BCPL C Simula SmallTalk C++ Ada Java C# C Fortran 5.1 message A B 5.2 1 class Vehicle subclass Car object mycar public class Vehicle extends Object{ public int WheelNum

More information

关于公布第九届湖北省青少年遥控车辆模型竞赛(未来杯)

关于公布第九届湖北省青少年遥控车辆模型竞赛(未来杯) 第 24 届 湖 北 省 青 少 年 科 技 创 新 大 赛 青 少 年 科 技 创 新 成 果 获 奖 名 单 一 等 奖 项 目 编 号 项 目 标 题 项 目 成 员 学 校 名 称 BI09003 探 秘 温 度 对 维 生 素 C 的 影 响 黄 超 黄 石 市 下 陆 中 学 BO09006 水 分 亏 缺 下 春 小 麦 叶 片 光 合 色 素 含 量 与 能 量 转 化 的 关 系

More information

"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " " ! " % & ( ) *+, *+- *+. *+/ *+0 *+1 *+2 *+3 *+4 *+5 *6, *6- *6. *6/ *60 *61 *62 *63 *64 *65 % *7,

More information

C E P A 的 实 施 对 我 市 经 济 的 影 响 的 调 研 我 会 各 部 门 也 都 按 年 初 要 求, 完 成 了 1 ~2 篇 质 量 较 高 的 调 研 报 告 如 经 济 部 完 成 了 深 圳 市 总 商 会 开 展 会 员 科 技 服 务 工 作 情 况 报 告 关 于

C E P A 的 实 施 对 我 市 经 济 的 影 响 的 调 研 我 会 各 部 门 也 都 按 年 初 要 求, 完 成 了 1 ~2 篇 质 量 较 高 的 调 研 报 告 如 经 济 部 完 成 了 深 圳 市 总 商 会 开 展 会 员 科 技 服 务 工 作 情 况 报 告 关 于 深 圳 市 商 会 2 004 年, 深 圳 市 总 商 会 在 深 圳 市 委 的 领 导 下, 以 邓 小 平 理 论 和 三 个 代 表 重 要 思 想 为 指 导, 认 真 学 习 贯 彻 党 的 十 六 大 十 六 届 三 中 全 会 和 市 委 三 届 八 次 全 会 精 神, 贯 彻 执 行 市 委 市 政 府 关 于 加 快 民 营 经 济 发 展 意 见, 围 绕 我 市 建 设

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

标题

标题 淳 化 县 志 1 序 王 摇 刚 摇 闻 俊 辉 摇 摇 志, 即 一 方 之 全 史 也 淳 化, 历 史 悠 久 六 七 千 年 前, 先 民 居 此 ; 约 前 1600 年, 公 刘 居 豳 ; 约 前 1100 年, 兴 为 王 畿 秦 时 设 县, 至 汉 日 盛, 及 北 宋 以 淳 化 年 号 命 名, 迄 今 1017 年 矣 浩 浩 历 史 长 河, 荡 尽 了 多 少 名 人

More information

jiàn shí

jiàn shí jiàn shí hào x n càn w i huàng ji zhèn yù yàng chèn yù bì yuàn ji ng cóng (11) qiàn xué 1 yì bì èi zhé mó yù ù chái sè bá píng sh chài y l guàn ch n shì qí fú luè yáo d n zèn x yì yù jù zhèn

More information

《大话设计模式》第一章

《大话设计模式》第一章 第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜

More information

Vsem tistim, ki pričakujete zahvalo, pa je niste dobili in vsem tistim, ki dobivate zahvalo, pa je niste pričakovali. Hvala. 2 S t r a n

Vsem tistim, ki pričakujete zahvalo, pa je niste dobili in vsem tistim, ki dobivate zahvalo, pa je niste pričakovali. Hvala. 2 S t r a n UNIVERZA V LJUBLJANI FILOZOFSKA FAKULTETA ODDELEK ZA ETNOLOGIJO IN KULTURNO ANTROPOLOGIJO Borilna veščina taijiquan skozi optiko antropologije kognicije in telesa Doktorska disertacija Mentor: prof. dr.

More information

é SI 12g C = 6 12 = 1 H2( g) + O2( g) H2O( l) + 286kJ ( 1) 2 1 1 H 2( g) + O2( g) H2O( l) H = 286kJ mol ( 2) 2 1 N 2 ( g) + O2( g) NO 2 ( g) 34kJ 2 1 1 N 2 ( g) + O2( g) NO 2 ( g) H = + 34kJ mol 2 1 N

More information

št. 6/XXI letnik 2016 24. marec Izhajajo vsak drugi in četrti četrtek v mesecu Cena: 1,79 NOVICE AKTUALNO VODIČI PREDSTAVITVE TRIKI IZOBRAŽEVANJA Se splača Zakaj je poslovna tehnologija dražja? 22 5 najbolj

More information

2004 7 20 2004 7 20 2004 7 20 2004 7 20 500 2004 7 20 2004 7 20 1993 2004 7 23, ? CS 2004 7 23 : ! 7 20 , 6, ? OK ? ; ; ; ; 1991 16 1949 65

More information

ebook39-13

ebook39-13 1 3 13 ~ 17 13.1 optimizatio problem c o s t r a i t optimizatio fuctio feasible solutio optimal solutio 13-1 [ ] 1 i s i i a i i t i i= 1 x i x 1 i i s i x i x i =t 0 x i a i i=1 a i < t i= 1 406 / t

More information

JavaIO.PDF

JavaIO.PDF O u t p u t S t ream j a v a. i o. O u t p u t S t r e a m w r i t e () f l u s h () c l o s e () public abstract void write(int b) throws IOException public void write(byte[] data) throws IOException

More information

例 009 年高考 全国卷Ⅱ 理 8 如 图 直 三 棱 柱 ABC ABC 中 AB AC D E 分 别为 AA BC 的中点 DE 平面 BCC 证明 AB AC 设二面角 A BD C 为 0o 求 BC 与平面 BCD 所 成角的大小 图 - 略 证明 以 D 为坐标原点 DA DC DD

例 009 年高考 全国卷Ⅱ 理 8 如 图 直 三 棱 柱 ABC ABC 中 AB AC D E 分 别为 AA BC 的中点 DE 平面 BCC 证明 AB AC 设二面角 A BD C 为 0o 求 BC 与平面 BCD 所 成角的大小 图 - 略 证明 以 D 为坐标原点 DA DC DD Education Science 教育科学 平面法向量在解立体几何题中的应用探究 梁毅麟 恩平市华侨中学 广东江门 59400 摘 要 几何发展的根本出路是代数化 引入向量研究是几何代数化的需要 随着平面法向量这个概念在新教 材的引入 应用平面法向量解决立体几何中空间线面位置关系的证明 空间角和距离的求解等高考热点问题的方法 更具灵活性和可操作性 其主要特点是用代数方法解决几何问题 无需考虑如何添加辅助线

More information

<313033BDC6B8D5BA5DB3E62E786C73>

<313033BDC6B8D5BA5DB3E62E786C73> vw 103 Ô e } µu 111 u åž j s 3 ( u ) 1.1110003 Šöy 2.1110006 3.1110007 111 u åž j 3 1.1110009 hõg 2.1110008 É 3.1110005 Ž 103.03.21 1.s u 2. ž u h } e  http://exam.nctu.edu.tw/103/103mastercheckin.htm

More information

1 yáo zhuàn jué gu zài liè r sh ng xué yíng ch jié jù rèn g wù yú qiè yàng huán P9 líng luò jiàn sh ng y ku liàn r shàn dùn sì lièlièqièqiè rèn zhù yìj yíng guà dí yú bò chu n láng huán dù xià

More information

2 I OGLASI 50% POPUST na druga očala z enako dioptrijo, za isto osebo Pika logotip NEGATIV (Velja za očala z enako ali nižjo ceno. Drugi popusti in ak

2 I OGLASI 50% POPUST na druga očala z enako dioptrijo, za isto osebo Pika logotip NEGATIV (Velja za očala z enako ali nižjo ceno. Drugi popusti in ak 04 APRIL 2017 LETO XX / ISSN 1408-7103 PRILOGA GORENJSKEGA GLASA ZA MESTNO OBČINO KRANJ Kranjčanka Gimnazijke pozlatele v Pragi Maja najlepša Gorenjka Grafit miru Priloga: Gradimo, obnavljamo, opremljamo

More information

1,569 12, 931, ,388 2, , ,129 87,522 1, , ,

1,569 12, 931, ,388 2, , ,129 87,522 1, , , 3 4 5 95 1 2 4 2 5 10,186 40 497 33 1 13 95 1 20 8 8 406 9 223 55 2 1 2 6 1 6 1 8 132 11 16 1,563 234 62 23 14 4 5 28 16 1,1 70 8 264 20 339 115 4 3 11 1 562 1 1 4 8 211 1 1 4 19 3 2 3 11 2 27 1,569 12,

More information

NethersoleJO89(8).indd

NethersoleJO89(8).indd 2 3 4 5 6 7 8 9 10 雅風四十六期 二零零八年九月 婆婆的愛心感動了我 陳姑娘在災區認識了白婆婆 她的家人全都在外地工 作 婆婆表示地震當日 她急忙地救了兩戶鄰舍的兩名小 孩 拖著六歲的男孩和揹著四個月大的嬰孩從災區步行兩 日後到達救援區 獲救的男孩每天都前往帳篷探望婆婆 因此她面上常帶笑容 每當白婆婆看見義工隊到災區時 都會送上暖暖的問候 更將獲配給的涼水贈予義工們 她 那真誠和熱切的關懷深深感動了義工隊

More information

ZUOWENGUSHI 500 1 2 3 4 7 8 9 12 13 14 17 17 18 19 22 23 24 1 500 28 29 30 40 41 42 45 46 47 55 56 51 52 53 33 34 35 37 2 ZUOWENGUSHI 500 60 61 62 57 58 2008 69 70 71 74 75 76 78 80 82 83 65 66 67 3 500

More information

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 语 言 程 序 设 计 郑 莉 胡 家 威 编 著 清 华 大 学 逸 夫 图 书 馆 北 京 内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 握 语

More information

Ps22Pdf

Ps22Pdf xi n j xi ng ni n w n d ng w x y sh n z f ng w i s m h xi n w i chu n w i w i sh y u x n s h u xi ng y ng z ng g ji m c u xi n r x n p ng q h w b ch ng sh w li xi n sh ng b ch y n bu sh b y n r n r

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

Ps22Pdf

Ps22Pdf ) ,,, :,,,,,,, ( CIP) /. :, 2001. 9 ISBN 7-5624-2368-7.......... TU311 CIP ( 2001) 061075 ( ) : : : : * : : 174 ( A ) : 400030 : ( 023) 65102378 65105781 : ( 023) 65103686 65105565 : http: / / www. cqup.

More information

untitled

untitled - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - - 12 - - 13 - - 14 - - 15 - - 16 - - 17 - - 18 - - 19 - - 20 - - 21 - - 22 - - 23 - - 24 - Male - 25 - - 26 - - 27 - - 28 - - 29 - -

More information

é é

é é é é gu chài < > gòu y n zh n y yì z ng d n ruì z hóu d n chán bìn jiu c n z n shuò, chún kòu sh qi n liè sè sh n zhì sb n j ng máo í g bèi q í lì, u ì í ng chàng yào g ng zhèn zhuàn sh hu ti n j,

More information

Microsoft Word - Chord_chart_-_Song_of_Spiritual_Warfare_CN.docx

Microsoft Word - Chord_chart_-_Song_of_Spiritual_Warfare_CN.docx 4:12 : ( ) D G/D Shang di de dao shi huo po de D G/D A/D Shi you gong xiao de D G/D Shang di de dao shi huo po de D D7 Shi you gong xiao de G A/G Bi yi qie liang ren de jian geng kuai F#m Bm Shen zhi hun

More information

Microsoft Word - 大事记.doc

Microsoft Word - 大事记.doc 大 事 记 目 录 前 言...3 1945 年...4 1946 年...4 1947 年...9 1948 年...11 1949 年...14 1950 年...18 1951 年...21 1952 年...24 1953 年...26 1954 年...28 1955 年...32 1956 年...34 1957 年...37 1958 年...40 1959 年...43 1960 年...47

More information

( ) ( ( ( ( , ) 13 ( ) ( (2012 ) ( ( 16 ( ( ( ( 292 ( ( (1

( ) ( ( ( ( , ) 13 ( ) ( (2012 ) ( ( 16 ( ( ( ( 292 ( ( (1 ( 155 1 ( 2014 11 2 ( 2005 29 3 ( 2012 13 4 ( 2014 12 5 ( 2014 9 6 ( 2014 9 7 ( 2014 1431 8 ( ( 2003 4 2003 54 9 ( 2008 7 ( 2013 1890 3 ( ) ( 10 2004 16 ( 2000 2433 ( 11 2014 5 12 (1990 2 20, 1990 11 )

More information

1955 1 1979 1982 3 1985 7 1400 28 1939 700 525 15 300 1956 15000 15000 5000 775 31 992 1980 1982 100 1959 1000 1130 1981 1985 1982 1985 1958 1985 1957

1955 1 1979 1982 3 1985 7 1400 28 1939 700 525 15 300 1956 15000 15000 5000 775 31 992 1980 1982 100 1959 1000 1130 1981 1985 1982 1985 1958 1985 1957 24 193 5 26 1950 5 1952 1954 1952 1956 9 1957 5 3 1963 1975 12 1200 1983 4 1984 81 1985 26 136 1952 1954 1964 86 1979 1981 198 9 87 20 80 1985 768 1955 1 1979 1982 3 1985 7 1400 28 1939 700 525 15 300

More information

Mac Java import com.apple.mrj.*;... public class MyFirstApp extends JFrame implements ActionListener, MRJAboutHandler, MRJQuitHandler {... public MyFirstApp() {... MRJApplicationUtils.registerAboutHandler(this);

More information