HTML

Programozó Páternoszter

Ez a Programozó Páternoszter (PP) blogja, a programozásról szól. Aktualitása, hogy a Debreceni Egyetem Informatikai Kara Magasszintű programozási nyelvek 1-2, C++ esattanulmányok, Java esettanulmányok című kurzusainak blogja is egyben.

A vadászat

A Debreceni Egyetem Programozói Évkönyve: az UDPROG projekt. A szakmai fórumunk a Facebook-en. Az új előadások a prezin.
A régi előadások:
Prog1:
1. C bevezetés
2. C tárgyalás
3. C befejezés
4. C a gyakorlatban
5. C++ bevezetés
6. C++ tárgyalás
7. C++ befejezés
8. C++ a gyakorlatban
9. Java platform bevezetés
10. Kvantuminformatikai alg. bev.
Prog2:
1. Java bevezetés
2. Java tárgyalás
3. Java befejezés
4. Java a gyakorlatban
5. Software Engineering bev.
6. Java EE bevezetés
7. AspectJ bevezetés
8. BPMN-BPEL SOA programozás
9. C++ haladó
10. Tensorflow

Kövess engem!

Friss topikok

Linkblog

Az ötödik labor

2011.03.06. 11:16 nb

Laborvezetőknek

A 3. előadás laborkártyáit kérdezzük végig a hallgatóktól (és persze a korábbiakból is osszunk ki, amelyeket fontosnak érezünk). Ha indokolt, akkor bevezethető a több sebességes labor, ahol az előre készülő hallgatók későbbi feladatokkal dolgoznak, vagy kapcsolódó mélyebb feladatot kapnak. A "tömeg", azaz a labor main stream-je pedig szorosabban együtt dolgozik a laborvezetővel.

Hallgatóknak

Sosem árt előre készülni a laborra, nálam szereztek így kisbajnokság trófeát. Ha többen is elkészítik, akkor holtversenyben mindannyian megkapják a "trófeákat".

Tematika

Az alábbi témák legtöbbjét próbáljuk lefedni a második gyakorlaton:

  • Beszéljük meg és teszteljük a g.c-t, itt azt kell kiemelni, hogy hármasával olvassuk a betűket a fájlból, de nagyon rossz gyakorlat, ha a ciklusban ciklusolgatni kezdünk... e helyett egyetlen ciklust használunk:
    // a betűket 3-asával "olvasom": nem kell cifrázni! egy ciklus
    // elvégzi, amiben megjegyzem, hogy melyik hányadik betű volt
    // aki ciklusban ciklusolgat, az már bénázik :)
    int
    main (void)
    {
      // hányadik betűn állok?
      int hanyadik_betu = -1;
      // azon a helyen mit olvastam?
      int elso = 0, masodik = 0, harmadik = 0, i = 0, jegy = 0;
    
      while ((i = getchar ()) != EOF)
        {
    
          switch (i)
    	{
    
    	case 'T':
    	  jegy = 0;
    	  break;
    	case 'C':
    	  jegy = 1;
    	  break;
    	case 'A':
    	  jegy = 2;
    	  break;
    	case 'G':
    	  jegy = 3;
    	  break;
    	}
    
          hanyadik_betu = (hanyadik_betu + 1) % 3;
    
          if (!hanyadik_betu)
    	elso = jegy;
          else if (!(hanyadik_betu - 1))
    	masodik = jegy;
          else
    	{
    	  harmadik = jegy;
    	  printf ("%s", genetikai_kod (elso * 16 + masodik * 4 + harmadik));
    	}
        }
    }
    
    vedd észre, hogy a kód pici továbbfejlesztése a progpater.blog.hu/2011/02/27/a_human_genom_projekt poszt bevezető progijának, csak ott kettesével olvasunk és két betűből készítettünk egy hexadecimális jegyet.
  • Feladat (kisebb sebességű): készíts "aminosav-hisztogramot", azaz a progi továbbfejlesztésével mond meg, melyik aminosav hányszor szerepel? (egy trófea, jöhet kommentben előre is)
  • Hogy változik ez a szám, ha az első kódoló betűt törlöd a bemenő fájlból (azaz a 2. betűtől méred fel a 3 betűket) (egy trófea, jöhet kommentben előre is)
  • Hogy változik ez a szám, ha az első két kódoló betűt törlöd a bemenő fájlból (azaz a 3. betűtől méred fel a 3 betűket) (egy trófea, jöhet kommentben előre is)
  • Feladat (nagyobb sebességű): módosítsd a z.c-t, hogy ne 0, 1 betűkre menjen, hanem a 4 T, C, A, G betűre és így építs fát (ez már nem bináris fa lesz persze), mennyi a 2. kromóra az LZW fa ághosszainak átlaga és sztenderd hibája? (ez 5 trófeát ér, jöhet kommentben is)
  • További két kisbajnokság, aki gyorsabbat ír:
    [norbi@sgu tcag]$ time ./g <hs_alt_Hs_Celera_chr2.fa >aminosavak

    real    0m17.428s
    user    0m16.593s
    sys     0m0.714s

     

BN laborján

 Tekerj tovább, itt jön a g.c teljes kódja is:

26 komment

Címkék: pro met stop his tyr lys ser ala aminosav val phe lzw humán nenom leu ile thr gln asn

There is no spoon*

2011.03.05. 17:20 nb

Három kisbajnokság annak, aki először megírja külső változó(k) nélkül az előző poszt alábbi függvényét: 

void
kiir (BINFA_PTR elem)
{
  if (elem != NULL)
    {
      ++melyseg;
      if (melyseg > max_melyseg)
	max_melyseg = melyseg;
      kiir (elem->jobb_egy);
      // ez a postorder bejáráshoz képest
      // 1-el nagyobb mélység, ezért -1
      for (int i = 0; i < melyseg; ++i)
	printf ("---");
      printf ("%c(%d)\n", elem->ertek < 2 ? '0' + elem->ertek : elem->ertek,
	      melyseg-1);
      kiir (elem->bal_nulla);
      --melyseg;
    }
} 

(Itt ugye külső a melyseg és a max_melyseg.) Az új fgv. ez legyen: int kiir_r(BINFA_PTR elem, int melyseg) többet nem segítek :) A két függvénynek (kiir, kiir_r) természetesen ugyanazt kell adnia ugyanazon mintákra: maximális mélységre és ugyanazt a fát kell kiprintelniük!

*: http://www.imsdb.com/scripts/Matrix,-The.html

23 komment

süti beállítások módosítása