| ELTE-OTK-IT jegyzetek

Programozási alapismeretek

Megszámolás (DARAB)

Tartalom

Megszámolás tétel

Specifikáció

Visszavezetés

Algoritmus

Példa feladatok

További linkek

Források

Megszámolás tétel

Feltétel(ek)nek eleget tevő elemek darabszáma.

Specifikáció


                    Be: elemszám ∈ N, elemek ∈ H[1..elemszám], T: H->L
                    Ki: db ∈ N
                    Ef: -
                    Uf: db = DARAB(i=1..elemszám, T(elemek[i]))
                

Visszavezetés


                    db ~
                    1..elemszám ~
                    T(elemek[i]) ~
                

Algoritmus


                    Változó
                        i: Egész
                    db := 0
                    Ciklus i=1-től elemszám-ig
                        Ha T(elemek[i]) akkor db := db + 1
                    Ciklus vége
                

Példa feladatok

Forrás: 3. előadás 70. o.


                        // SPECIFIKÁCIÓ //

                        Be: honapdb ∈ N, jov ∈ Jovedelem[1..honapdb], Jovedelem=(bevetel:N x kiadas:N)
                        Ki: nott ∈ N
                        Ef: -
                        Uf: nott = DARAB(i=1..honapdb, jov[i].bevetel-jov[i].kiadas > 0)


                        // VISSZAVEZETÉS //
                        
                        db ~ nott
                        1..elemszám ~ 1..honapdb
                        T(elemek[i]) ~ jov[i].bevetel-jov[i].kiadas > 0


                        //ALGORITMUS //
                        
                        Változó
                            i: Egész
                        nott := 0
                        Ciklus i=1-től honapdb-ig
                            Ha jov[i].bevetel-jov[i].kiadas > 0 akkor db := db + 1
                        Ciklus vége
                    

                        // SPECIFIKÁCIÓ //

                        Be: nev ∈ S
                        Ki: db ∈ N
                        Ef: -
                        Uf: db = DARAB(i=1..hossz(nev), nev[i] = "a")


                        // VISSZAVEZETÉS //
                        
                        1..elemszám ~ 1..hossz(nev) 
                        T(elemek[i]) ~ nev[i] = "a"


                        //ALGORITMUS //
                        
                        Változó
                            i: Egész
                        db := 0
                        Ciklus i=1-től hossz(nev)-ig
                            Ha nev[i] = "a" akkor db := db + 1
                        Ciklus vége
                    

                        // SPECIFIKÁCIÓ //

                        Be: napdb ∈ N, homersekletek ∈ Z[1..napdb]
                        Ki: fagyott ∈ N
                        Ef: -
                        Uf: fagyott = DARAB(i=1..napdb, homersekletek[i] <= 0)


                        // VISSZAVEZETÉS //
                        
                        db ~ fagyott
                        1..elemszám ~ 1..napdb
                        T(elemek[i]) ~ homersekletek[i] <= 0
                        
                        
                        //ALGORITMUS //
                        
                        Változó
                            i: Egész
                        fagyott := 0
                        Ciklus i=1-től napdb-ig
                            Ha homersekletek[i] <= 0 akkor fagyott := fagyott + 1
                        Ciklus vége
                    

                        // SPECIFIKÁCIÓ //

                        Be: szuldb ∈ N, szulho ∈ N[1..szuldb]
                        Ki: db ∈ N
                        Ef: ∀i ∈ [1..szuldb]: (1 <= szulho[i] <= 12)
                        Uf: db = DARAB(i=1..szuldb, szulho[i] < 3 vagy szulho[i] = 12)


                        // VISSZAVEZETÉS //
                        
                        1..elemszám ~ 1..szuldb
                        T(elemek[i]) ~ szulho[i] < 3 vagy szulho[i] = 12


                        //ALGORITMUS //
                        
                        Változó
                            i: Egész
                        db := 0
                        Ciklus i=1-től szuldb-ig
                            Ha szulho[i] < 3 vagy szulho[i] = 12 akkor db := db + 1
                        Ciklus vége
                    

További linkek

Programozási tételek (áttekintés) Gyakorló feladatok programozási tételekkel ELTE specifikáció szerkesztője

Források

Horváth Győző, Horváth Gyula, Szlávi Péter, Törley Gábor: Programozási alapismeretek 3. előadás (Törley Gábor)