# A hashmark jel után lévő rész megjegyzésnek számít # A bc programot alapjában véve 2 féleképpen lehet használni. # Első mód: elindítjuk a programot egy terminálból, és # a futtatni kívánt kódot beírjuk. # Második mód: gedit filenév.txt # paranccsal nyitunk egy fájlt, beleírjuk a kódot, majd # bc filenév.txt # paranccsal egy másik terminálból futtatjuk. # Ekkor a kód lefutása után még van lehetőségünk # használni a bc-t. Az igazi előny az, hogy sokkal könnyebb # kijavítani a hibát gedit-ben. # A bc ablak gyorsan bezárható CTRL-D billentyűvel, illetve # ha végtelen ciklusba kerül, akkor CTRL-C paranccsal leállítható. # Pár eltérés a Maple-lel kapcsolatban: # MAPLE BC # függvény létrehozása: proc define (és más a sorrend is, a define előre kerül) # értékadás: i:=3 i=3 # egyenlőség vizsgálat: i=3 i==3 # feltételre példa: if i=3 then if (i=3) { ... } # parancsok szerkezete: do ... end do { ... } # Modulo: 5 mod 2 5 % 2 # Értéknövelés: i:=i+1 i++ VAGY ++i is jó, a két megoldás között eltérés most nem lényeges # Ha egy if után csak 1 parancs jön, akkor a kapcsos zárójelet # nem kötelező kirakni, de a példákban végig ki lesz rakva # mindenhol a könnyebb érthetőség kedvéért. # Nem mindegy, hogy hova teszünk enter-t. A parancsok végére # nem kötelező pontosvesszőt rakni, elegendő új sort kezdeni # Az else előtt viszont nem állhat sortörés, a } jellel egy # sorban kell lennie. define sajatgcd(a,b) { if (b==0) { return a; } else { return sajatgcd(b,a % b); } } print "A legnagyobb közös osztója 80-nak és 20-nak:\n"; sajatgcd(80,20); print "\n"; print "Kétféleképpen tudunk kiíratni eredményt. \n" print "Vagy a print paranccsal így:\n"; print 6; print "\n"; print "Hátránya, hogy nem kezd új sort,\n" print "vagy értékadás nélkül leírjuk az értéket:\n"; 6 print "Számoljunk el 11-ig!\n" i=0; while(i<10) { i=i+1; i; } print "\n"; print "Azon 100-nál kisebb páratlan számok listája,\n" print "amik 7-tel osztva 4-et adnak maradékul:\n"; i=0; while(i<100) { if (i % 7 == 4 && i % 2 == 1) { i; } i=i+1; } print "\n"; define fact(n) { if (n==1) { return 1; } else { return n*fact(n-1); } } print "Melyik az a legkisebb n szám, amire 11^n>n! ?\n"; n=1; while(fact(n)<11^n) { n=n+1; } n print "\n"; print "Játék a scale változóval:\n" print "Ezen változó segítségével állíthatjuk be,\n" print "hogy mennyi tizedesjegy pontosan számoljon.\n" scale=0; 5/6; scale=1; 5/6; scale=100; 5/6; print "\n" # Fibonacci nem rekurzívan define fi(n){ auto a,b,c,i; if (n == 1){ return 1; } if (n == 2){ return 1; } a=1;b=1 for(i = 3; i <= n; i++){ c=a+b; a=b; b=c; } return c; } print "Példa for ciklusra bc-ben:\n" for(i=0;i<10;i++) { i; } # A működése egyszerű. Képzeljük el a for ciklust # a következőképpen: # for(1.rész; 2.rész; 3.rész) # { # 4.rész # } # # Ugyanez a kód while ciklussal: # # 1.rész # while(2.rész) # { # 4.rész # 3.rész # } # # Azaz a for első paramétere egy kezdeti beállítás # a második paraméter a feltétel, amely teljesülése # esetén a ciklus lefut. A 3. paraméter pedig a léptetés # amely általában egy változó értékét növeli eggyel.