Changes between Version 12 and Version 13 of python
- Timestamp:
- Nov 28, 2011, 10:55:46 PM (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
python
v12 v13 223 223 224 224 225 226 227 {{{228 #!comment229 /// TODO230 231 1. Kakšna je razlika med ''prefix'' in ''postfix'' operatorjem ++. Kakšna je razlika med naslednjima izrazoma:232 {{{233 #!c234 r = i++;235 r = ++i;236 }}}237 1. Kaj je narobe z naslednjim predprocesorskim izrazom?238 {{{239 #!c240 #define N 10;241 }}}242 1. Če smo na primer definirali makro243 {{{244 #!rst245 .. code-block:: c246 247 #define SQR(x) x*x248 249 Zakaj nam potem izraz250 251 .. code-block:: c252 253 y = 1/SQR(x);254 255 ne deluje pravilno? Kako bi morali pravilno napisati makro SQR(x), da bi delal tudi za izraze256 257 .. code-block:: c258 259 y = 1/SQR(1-x);260 261 }}}262 1. Kakšna je razlika v uporabnosti med '''i''' in '''J''', ki sta napisana kot263 {{{264 #!rst265 .. code-block:: c266 267 int i = 10;268 #define J 10269 270 Napotek: Poskusi napisati ``J = 2`` ali ``int a[i]``.271 272 }}}273 1. Zakaj je potrebno v {{{scanf()}}} argumente za formatnim stavkom pisati z &, pri {{{printf()}}} pa tega ne smemo?274 1. Koliko spomina klic275 {{{276 #!rst277 .. code-block:: c278 279 malloc(10)280 281 alocira?282 283 Kaj moramo napisati če želimo alocirati spomin za 10 spremenljivk tipa float?284 }}}285 1. Kaj mislimo z ''enakostjo med polji in kazalci'' v C-ju?286 1. Če je {{{p}}} kazalec, kaj potem pomeni {{{p[i]}}}?287 1. Kako odpiramo datoteko za branje podatkov iz nje? Kaj se spremeni, če bi datoteko želeli odpreti za pisanje?288 289 290 = Uporaba zank in izpis =291 {{{292 #!comment293 http://www.eskimo.com/~scs/cclass/asgn.beg/PS1.html294 }}}295 296 297 }}}298 299 300 225 = Naloge = 301 226 … … 304 229 305 230 == vaja2 == 306 Gaussovo kvadraturanaj vpraša za meji integriranja funkcije f(x) = 2x^4^- x^3^ +1307 in rezultat izpiše na zaslon. 231 [http://en.wikipedia.org/wiki/Gaussian_quadrature Gaussovo kvadratura] naj vpraša za meji integriranja funkcije f(x) = 2x^4^- x^3^ +1 232 in rezultat izpiše na zaslon. Uporabite 4 točkovno kvadraturo. 308 233 309 234 … … 311 236 Izdelaj program ki izpiše naslednje zanke: 312 237 {{{ 313 #!c 314 for(i = 0; i < 10; i = i + 2) 315 printf("%d\n", i); 316 317 for(i = 100; i >= 0; i = i - 7) 318 printf("%d\n", i); 319 320 for(i = 1; i <= 10; i = i + 1) 321 printf("%d\n", i); 322 323 for(i = 2; i < 100; i = i * 2) 324 printf("%d\n", i); 238 #!python 239 for i in range(0, 10, 2): 240 print i 241 242 for i in range(100, 0, -7): 243 print i 244 245 for i in range(1, 10) 246 print i 247 248 i=2 249 while i<100: 250 i = i*2 251 print i 325 252 }}} 326 253 Razjasni si, kako te zanke delujejo in program popravi tako, da 327 bodo v zanki uporabljeni operatorji +=, -=, *=254 bodo v zanki uporabljeni while z operatorji +=, -=, *= 328 255 329 256 == vaja4 == … … 341 268 ********** 342 269 }}} 343 Ne uporabi desetih printf() ampak uporabi zanko. 344 {{{ 345 #!c 346 for(i = 0; i < 10; i = i + 1) 347 { 348 /* Več stavkov */ 349 /* gre lahko tukaj */ 350 } 270 Ne uporabi desetih print ampak uporabi zanko. 271 {{{ 272 #!python 273 for i in range(10): 274 # Več stavkov 275 # gre lahko tukaj 351 276 }}} 352 277 … … 366 291 Predelaj program, ki izpiše naslednjo zanko: 367 292 {{{ 368 #! c369 for(i = 0; i < 10; i = i + 1) 370 printf("i je %d\n", i);293 #!python 294 for i in range(10): 295 print "i je %d" % i 371 296 }}} 372 297 z uporabo stavka '''while''', ki ima naslednjo obliko 373 298 {{{ 374 #!c 375 while(pogoj) 376 { 377 /* vpiši stavek za povečanje števca in izpis */ 378 } 299 #!python 300 while(pogoj): 301 # vpiši stavek za povečanje števca in izpis 379 302 }}} 380 303 Napotek: V primeru da se nam program ''obesi'' v neskončni zanki, … … 385 308 Pretipkaj in poženi naslednji program: 386 309 {{{ 387 #!c 388 #include <stdio.h> 389 390 int main() 391 { 392 int i; 393 394 printf("stavek 1\n"); 395 printf("stavek 2\n"); 396 for(i = 0; i < 10; i = i + 1) 397 { 398 printf("stavek 3\n"); 399 printf("stavek 4\n"); 400 } 401 printf("stavek 5\n"); 402 403 return 0; 404 } 310 #!python 311 312 print "stavek 1" 313 printf "stavek 2" 314 for i in range(10): 315 print "stavek 3" 316 print "stavek 4" 317 print "stavek 5" 405 318 }}} 406 319 Program ne naredi nič posebnega. Z njim želimo le pojasniti vpliv … … 411 324 Pretipkaj in poženi naslednji program: 412 325 {{{ 413 #!c 414 #include <stdio.h> 415 416 int main() 417 { 418 int i, j; 419 420 printf("začetek programa\n"); 421 422 for(i = 0; i < 3; ++i) 423 { 424 printf("i je %d\n", i); 425 for(j = 0; j < 5; j++) 426 printf("i je %d, j je %d\n", i, j); 427 printf("konec v zanki i = %d\n", i); 428 } 429 430 printf("konec programa\n"); 431 432 return 0; 433 } 326 #!python 327 print "zacetek programa" 328 329 for i in range(3): 330 print "i je %d" % i 331 for j in range(5): 332 print "i je %d, j je %d" % (i, j) 333 print "konec v zanki i = %d" % i 334 335 print "konec programa" 434 336 }}} 435 337 Tudi ta program ne naredi kaj dosti koristnega. Želi pokazati, kako zanke … … 458 360 {{{ 459 361 #!rst 460 .. code-block:: c362 .. code-block:: python 461 363 462 364 1 je liha … … 519 421 na zaslon po vrsticah od najmanjšega do največjega. 520 422 {{{ 521 float B[7] = {3.3, -23.2, -4.5, 56.0, 45.5, 69.9, 40.5}; 423 #!python 424 B = [3.3, -23.2, -4.5, 56.0, 45.5, 69.9, 40.5] 522 425 }}} 523 426 … … 552 455 #!rst 553 456 554 .. code-block:: c555 556 int a[100];457 .. code-block:: python 458 459 a[] 557 460 558 461 in nato naj program vpraša za dve števili, ter izpiše rezultat, ki ga vzame iz polja ``a[]``. … … 565 468 {{{ 566 469 #!c 567 int a[] = {1, 2, 9, 33, 22, 11, 3, 4, 3, 55,470 a = [1, 2, 9, 33, 22, 11, 3, 4, 3, 55, 568 471 66, 33, 22, 22, 33, 54, 5, 6, 7, 569 8, 223, 34 };472 8, 223, 34] 570 473 }}} 571 474 … … 575 478 {{{ 576 479 #!rst 577 .. code-block:: c578 579 float a[16] = {1, 2, 3, 4,480 .. code-block:: python 481 482 a = [1, 2, 3, 4, 580 483 0, 1, 2, 3, 581 484 2, 3, 4, 5, 582 3, 2, 2, 1}; 583 float x[4], b[4]; 485 3, 2, 2, 1] 584 486 585 487 napiši program, ki prebere štiri vrednosti in izpiše zmnožek matrike 586 488 in vektorja s stavkom 587 489 588 .. code-block:: c589 590 print f("%.1f %.1f %.1f %.1f\n", b[0], b[1], b[2], b[3]);490 .. code-block:: python 491 492 print "%.1f %.1f %.1f %.1f\n" % (b[0], b[1], b[2], b[3]) 591 493 592 494 }}} … … 611 513 Datoteko preberite v spremenljivke 612 514 {{{ 613 #! c614 #define MAXN 100 615 float p0[MAXN*2], p1[MAXN*2], q[MAXN]; 616 int n, div; 515 #!python 516 517 p0[], p1[], q[] 518 n, div 617 519 }}} 618 520 in vsako vrstico v zanki izpišite z naslednjim formatnim stavkom: 619 521 620 522 {{{ 621 #! c622 print f("%4.1f %4.1f %4.1f %4.1f %4.1f\n", ...523 #!python 524 print "%4.1f %4.1f %4.1f %4.1f %4.1f " % ( p0[2*i], p0[2*i+], p1[2*i], p1[2*i+1], q[i] ) 623 525 }}} 624 526 prve in druge točke elementa ter q. … … 628 530 spremenjene diagonalne elemente matrike {{{A}}} s pomočjo for zanke izpiši na zaslon . 629 531 {{{ 630 #!c 631 float A[25] = {3, 5, 90, 2 ,1, 632 1, 71, 59, 5, 5, 633 1, 2, 3, 54, 2, 634 12, 56, 32, 11, 1, 635 34, 56, 78, 45, 12 636 }; 532 #!python 533 A = [3, 5, 90, 2 ,1, 534 1, 71, 59, 5, 5, 535 1, 2, 3, 54, 2, 536 12, 56, 32, 11, 1, 537 34, 56, 78, 45, 12] 637 538 }}} 638 539 == vaja45 == 639 Polje {{{a[]}}} iz vaje 41 prepišite v matriko {{{ floatb[]}}}540 Polje {{{a[]}}} iz vaje 41 prepišite v matriko {{{b[]}}} 640 541 velikost 8x3. S tem sa so elementi, ki manjkajo postavljeni na 0. 641 542 Vrstice izpišite na eno decimalko natančno. 642 543 643 544 == vaja46 == 644 Za podano kvadratno matriko {{{A [25]}}} zmanjšaj diagonalne elemente za vrednost 1.1, prepiši545 Za podano kvadratno matriko {{{A}}} zmanjšaj diagonalne elemente za vrednost 1.1, prepiši 645 546 enodimenzionalno polje A v dvodimenzionalno polje B, ki ga računamo kot matriko 5x5 646 547 izpišemo z dvojno zanko na zaslon. 647 548 {{{ 648 float A[25] = {3.3, 5.2, 90.5, 2.3 ,1.1,649 650 651 652 653 };549 A = [3.3, 5.2, 90.5, 2.3 ,1.1, 550 1.9, 71.0, 59.5, 5.3, 5.5, 551 1.0, 2.2, 3.5, 54.3, 2.2, 552 12.4, 56.1, 32.2, 11.4, 1.6, 553 34.8, 56.4, 78.9, 45.3, 12.3 554 ] 654 555 }}} 655 556 … … 660 561 Primer izgleda izpisa ene vrstice: 661 562 {{{ 662 printf("%d %d %d %d %d %d %d %d\n", P[0], P[1], P[2], P[3], P[4], P[5], P[6], P[7], P[8]); 563 #!python 564 print "%d %d %d %d %d %d %d %d" % (P[0], P[1], P[2], P[3], P[4], P[5], P[6], P[7], P[8]) 663 565 }}} 664 566 … … 669 571 pred izpisom uporabili klic podprograma s stavkom 670 572 {{{ 671 #! c672 mat_vec4(b, a, x); 673 printf("%.1f %.1f %.1f %.1f\n", b[0], b[1], b[2], b[3]); 573 #!python 574 b = mat_vec4(a, x) 575 print "%.1f %.1f %.1f %.1f" % (b[0], b[1], b[2], b[3]) 674 576 }}} 675 577 … … 678 580 v naslednji zanki 679 581 {{{ 680 #! c681 for(i = 0; i < 10; i++) 682 print_stars(i) ;582 #!python 583 for i in range(10): 584 print_stars(i) 683 585 }}} 684 586 … … 730 632 Podprogram naj ima naslednji prototip: 731 633 {{{ 732 #!c 733 float linear_interpolation(float x, float p0[2], float p1[2]) 734 }}} 634 #!python 635 def linear_interpolation(x, p0, p1): 636 }}} 637 s tem da sta točki p0 in p1 seznama 2D 735 638 736 639 … … 740 643 točki (x,,0,,,y,,0,,) in (x,,1,,,y,,1,,) in parameter ''t''. Prototip 741 644 {{{ 742 #! c743 void linear_interpolation(float t, float p0[2], float p1[2])645 #!python 646 linear_interpolation(t, p0, p1) 744 647 }}} 745 648 naj izpiše točko s formatom "%.1f %.1f". Prednost parametrične interpolacije … … 776 679 777 680 778 = D inamična alokacija spomina in delo z datotekami =681 = Delo z datotekami = 779 682 780 683 == vaja80 == … … 792 695 793 696 == vaja81 == 794 Podobno kot v vaji 80 preberite datoteko '''vaja81.dat''' s tem da števila niso več omejena 795 z velikostjo polja ampak ga dinamično alocirajte z {{{malloc()}}} po tem, ko bo prebrana prva vrstica. 697 Podobno kot v vaji 80 preberite datoteko '''vaja81.dat''' s tem da seštevek sproti izpisujemo. 796 698 797 699 == vaja82 == … … 835 737 formatu celih števil. 836 738 837 = Aplikacije =838 == vaja100 ==839 Izračunaj faktor Učinkovite Rabe Energije, tako kot ga podaja [http://www.elektro-ljubljana.si/slo/Ceniki Elektro Ljubljana].840 Dobavitelj v ceniku za vsak '''razred porabe''' določi '''faktor cene energije''', ki je osnova za izračun841 faktorja URE po naslednji enačbi:842 843 URE = ∑(E,,i,, F,,CE i,,)/E,,povprečna dnevna poraba,,844 845 Tabela razredov porabe in pripadajočimi faktorji cene električne energije] ima 5 razredov s progresivno stopnjo F,,CE,,846 847 ||Razred porabe||Povprečna dnevna poraba energije (E,,i,,)||Faktor cene energije (F,,CE,,)||848 ||1.razred||do 6 kWh dnevne porabe||1.0||849 ||2.razred||nad 6 do vključno 12 kWh dnevne porabe||1.1||850 ||3.razred||nad 12 do vključno 18 kWh dnevne porabe||1.3||851 ||4.razred||nad 18 do vključno 24 kWh dnevne porabe||1.5||852 ||5.razred||nad 24 kWh dnevne porabe||2.0||853 854 Na primer URE za 8kWh dnevne porabe izračunamo kot URE=(6*1.0-(8-6)*1.1)/8855 856 Tabela[http://www.elektro-ljubljana.si/_services/document.php?name=ure__faktorji_uinkovite_rabe_energije_za_posamezno_povpreno_dnevno_porabo.pdf&langId=Slo&pageId=89 URE Faktorjev učinkovite rabe energije za posamezno povprečno dnevno porabo], se računajo samo za857 celoštevilčni del povprečne dnevne porabe. Izdelaj program, ki za vnešeno realno povprečno porabo izpiše858 faktor URE v formatu, kot je v pred izračunani tabeli.859 860 Napotek: Za izračun celega dela realnega števila uporabite funkcijo '''floor'''.861 862 == vaja101 ==863 864 Ceno za uporabo omrežij določa Akt o določitvi metodologije za obračunavanje omrežnine in metodologije za določitev omrežnine in kriterijih za ugotavljanje upravičenih stroškov za elektroenergetska omrežja, (Ur.l. RS 121/2005) in je sestavljena iz:865 866 - stalnega mesečnega prispevka za moč, ki zanaša 0,66179 €/kW/mesec867 - cene za prenešeno delovno energijo, ki znaša:868 * v primeru dvotarifnega načina merjenja porabe električne energije:869 {{{870 VT: 0,03731 €/kWh871 MT: 0,02924 €/kWh872 }}}873 * v primeru enotarifnega načina merjenja porabe električne energije:874 {{{875 ET: 0,03462 €/kWh876 }}}877 878 Izdelaj program, ki uporabnik vpraša po predvidenem mesečnem številu kWh VT in NT in izpiše ceno879 za prenešeno delovno energijo v primeru dvotarifnega in v primeru enotarfnega načina merjenja porabe880 električne energije. Uporabniku naj glede na vnešena podatka program svetuje, kateri način881 je zanj najbolj primeren.882 883 884 == vaja102 ==885 Če ste izdelali vajo 100 in 101, potem združite programa v vaji 102 tako, da izračunate kako bo z elektriko886 po novem sistemu z URE faktorjem.887 888 Obračun porabljene električne energije na podlagi izračunanega faktorja URE se izvede tako,889 da se pomnoži količina električne energije v posamezni tarifi, s ceno električne energije v890 tej tarifi in z izračunanim odjemalčefim faktorjem URE. Upoštevajte, da ima mesec 31 dni.891 Program pa naj tako kot v vaji 11 vpraša za število kWh v visoki in nizki tarifi, izpiše892 posamezne cene ter svetuje najprimernejši način tarifiranja.893