BEVEZETÉS A WEBALKALMAZÁSOK KÉSZÍTÉSÉBE



Hasonló dokumentumok
PHP-MySQL. Adatbázisok gyakorlat

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

1. Olvassuk be két pont koordinátáit: (x1, y1) és (x2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki.

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

PHP. Adatbázisok gyakorlat

S z á m í t ó g é p e s a l a p i s m e r e t e k

BEVEZETÉS A PYTHON TKINTER PROGRAMOZÁSÁBA (Informatikai szakközépiskola 10. évfolyam)

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Programozás I. gyakorlat

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Adatbázis Rendszerek II. 2. Gyakorló környezet

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

Programozás és adatbázis kezelés PHP ben

Java és web programozás

Számológép. Bármilyen számítógépen működik, amin található böngésző és Java alkalmazás. Indító képernyő

BEVEZETÉS A FÁJL- ÉS ADATBÁZIS- KEZELÉSBE PYTHON NYELVEN (Informatikai szakközépiskola 11. évfolyam)

{simplecaddy code=1005}

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet

1. Egészítsük ki az alábbi Python függvényt úgy, hogy a függvény meghatározza, egy listába, az első n szám faktoriális értékét:

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

Szkriptnyelvek. 1. UNIX shell

Tájékoztató. Használható segédeszköz: -

HTML. Ismerkedés a JavaScripttel. A JavaScript lehet ségei. A JavaScript kód helye. Önálló JavaScript fájlok

PHP MySQL, Java JDBC MySQL. Adatbázisok az iskolában 2012 Dr. Balázs Péter Palatinus Endre és Erdőhelyi Balázs diái alapján

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét, amely februári keltezésű (bármely év).

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt

INFORMATIKAI ALAPISMERETEK

Informatikus informatikus Térinformatikus Informatikus É 1/6

A Tervezzen egytáblás adatbázist tanulók hiányzásának nyilvántartására! Az adattábla a következ k rögzítésére legyen alkalmas:

Felhasználói leírás a DimNAV Server segédprogramhoz ( )

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

BASH SCRIPT SHELL JEGYZETEK

Bevezetés a programozásba I.

HTML alapok. A HTML az Internetes oldalak nyelve.

Gyakorló feladatok az 1. nagy zárthelyire

Java és web programozás

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

HTML alapok 1. Minimális HTML file: <HTML> <HEAD> <TITLE> cím </TITLE> </HEAD> <BODY>... </BODY> </HTML> Formátum parancsok:

2018, Diszkre t matematika. 10. elo ada s

Szabadkai Műszaki Szakfőiskola. Web programozás. dr Zlatko Čović

Python tanfolyam Python bevezető I. rész

1. Alapok. #!/bin/bash

Algoritmizálási feladatok

OOP: Java 4.Gy: Java osztályok

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

Készítette: Gál Tamás. A tananyag programozott változata itt érhető el: Webfejlesztés

PYTHON. Avagy hosszú az út a BioPythonig

7. gyakorlat Sorozatok, Fájlkezelés

INFORMATIKAI ALAPISMERETEK

Python I. Vincze Dávid Miskolci Egyetem, IIT

2016, Diszkrét matematika

Adatbázisok elleni fenyegetések rendszerezése. Fleiner Rita BMF/NIK Robothadviselés 2009

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

Tájékoztató. Használható segédeszköz: -

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

BEKÉRT ADAT KÉPERNYŐRE ÍRÁSA KÖRNYEZETI VÁLTOZÓK FÁJL REDEZETT KIÍRÁSA KÖNYVTÁRBAN BEJEGYZÉSEK SZÁMA FÁJLBAN SZÁM NÖVELÉSE. #!

Az SQL*Plus használata

Apache, MySQL, PHP/Perl NetWare-n

AWK programozás, minták, vezérlési szerkezetek

INFORMATIKAI ALAPISMERETEK

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Web programozás. 3. előadás

Programozás I. házi feladat

Adatbázis Rendszerek II. 8. Gyakorló környezet

Mi a Python? A Python alapjainak áttekintése. Példaprogram feladatkit zés. Példaprogram megvalósítás

OOP: Java 8.Gy: Abstract osztályok, interfészek

Bevezető. Servlet alapgondolatok

Python bevezető foglalkozás Python bevezető foglalkozás

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

COMET webalkalmazás fejlesztés. Tóth Ádám Jasmin Media Group

Memória játék. Felhasználói dokumentáció

Tájékoztató. Használható segédeszköz: -

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

JavaServer Pages (JSP) (folytatás)

Bevezetés a programozásba I.

Könyvtári címkéző munkahely

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

BME MOGI Gépészeti informatika 1.

C# nyelvhez kapcsolódó programozási feladatok

Megtanuljuk, hogyan lehet egy web-alkalmazással adatbázishoz csatlakozni Pontosan megnézzük a PHP lehetőségeit o MySQL-hez o Oracle-höz

ELEKTRONIKUS MUNKABÉRJEGYZÉK MODUL

MAGYAR POSTA BEFEKTETÉSI ZRT. e-befektetés. Felhasználói kézikönyv

2015, Diszkrét matematika

Információs technológiák 2. Gy: CSS, JS alapok

Természetesen készíts egy csempe nevű könyvtárat és ide mentsd az index.html állományt.

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

INFORMATIKAI ALAPISMERETEK

TestLine - GINOP teszt Minta feladatsor

MATEMATIKA ÉRETTSÉGI május 10. KÖZÉP SZINT I.

INFORMATIKAI ALAPISMERETEK

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Elektronikus levelek. Az informatikai biztonság alapjai II.

N Y I L A T K O Z A T

Átírás:

BEVEZETÉS A WEBALKALMAZÁSOK KÉSZÍTÉSÉBE

2

A weblapok HTML formátumú dokumentumok, amiket egy hálózaton (intraneten vagy interneten) böngész nek nevezett programokkal (Mozilla Firefox, Opera, Internet Explorer,...) lehet megnézni. A HTML lapok egy másik számítógép - amin állandóan fut egy Web servernek (Apache, IIS, Zope,...) nevezett alkalmazás - public könyvtárába vannak telepítve. Amikor létrejött egy kapcsolat a mi számítógépünk és e között a számítógép között, akkor a böngész programunk párbeszédet folytathat a szerverprogrammal (egy sor hardvereszköz és program közvetítésével, amikr l most nem fogunk beszélni : telefonvonalak, routerek, cache-ek, kommunikációs protokolok...). A weblapok átvitelét kezel HTTP protokoll kétirányú adatcserét engedélyez. Azonban az esetek nagy többségében az információ átvitel gyakorlatilag csak egyirányú, a szerver fel l a böngész felé : szövegeket, képeket, különféle fájlokat küld neki nagy számban (ezek a weblapok, amiket megnézünk); ezzel szemben a böngész a szervernek csak kevés információt küld : lényegében azoknak a lapoknak az URL-jét, amiket a szörföz meg akar nézni. Interaktív weblapok Tudjuk viszont, hogy vannak olyan weblapok, amik arra szólítanak fel, hogy szolgáltassunk nagyobb mennyiség információt : adjunk meg személyünkre vonatkozó adatokat egy klubba való beiratkozáskor, vagy egy szállodai szobafoglaláskor, a hitelkártyaszámunkat egy e-kereskedelmi oldalon egy termék megrendelésekor, véleményünket vagy javaslatainkat, stb. Sejtjük, hogy egy ilyen esetben, mint az említettek egyike, az átvitt információt a szerveroldalon egy speciális programnak kell kezelni. Tehát az ilyen, információ fogadására szánt weblapok el kell legyenek látva egy olyan mechanizmussal, ami biztosítja az adatok átvitelét az információ kezelésére szánt program felé. Arra is szükség van, hogy ez a program információt tudjon átadni a szervernek, hogy az a m velet eredményét egy új weblap formájában tudja prezentálni a szörföl nek. Ennek a fejezetnek az a célja, hogy megmagyarázza, hogyan használhatjuk fel Python programozási tudásunkat arra, hogy egy weblaphoz - valódi alkalmazások beillesztésével - ilyen interaktivitást adjunk. A CGI interfész A CGI (Common Gateway Interface) interfész a legtöbb webszervernek az egyik komponense. Ez egy átjáró, ami lehet vé teszi a kommunikációt az ugyanazon a számítógépen futó más programokkal. CGI-vel más nyelveken (Perl, C, Tcl, Python...) írhatunk scripteket. Ahelyett, hogy a webet el re megírt dokumentumokra korlátoznánk, a CGI lehet vé teszi, hogy a szörföl böngész je segítségével megadott adatoktól függ en hozzunk létre weblapokat. A CGI scriptekkel az alkalmazások széles skálája hozható létre : online regisztrációs szolgáltatások, adatbázis keres eszközök, közvélemény kutatások, játékok, stb. Feladat Szöveg kiíratása Készítsünk olyan weblapot, ahol egy gomb lenyomására egy Python script kiír valamilyen szöveget! 3

RLAP <HTML> <HEAD> <TITLE>Szöveg kiírása</title> </HEAD> <BODY> <H2>Szöveg kiírása</h2> <FORM ACTION="szoveg.py" METHOD="post"> <INPUT TYPE="submit" NAME="send" VALUE="A script végrehajtása"> </FORM> </BODY> </HTML> SCRIPT #!/Python25/python # -*- coding: ISO-8859-2 -*- 4

print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">Python scripttel irt weblap</font></h3>" print "</BODY>" print "</HTML>" A script els sorában a python értelmez elérési útját kell megadni, ez linux esetében általában #!/usr/bin/python. A fenti példa windowsra vonatkozik, itt az elérési út a c:\python25\python Az rlapon lév gomb lenyomása egy üzenetet küld a webszervernek, amely lefuttatja a paraméterben szerepl szoveg.py scriptet. A sikeres futtatáshoz néhány beállítás szükséges. El ször is telepíteni kell a mod_python csomagot, amely az adott webszervert (a mi esetünkben Apache) teszi képessé python scriptek futtatására. A szerver konfigurációs állományában pedig szerepelnie kell a következ bejegyzéseknek: LoadModule python_module modules/mod_python.so AddHandler cgi-script.cgi.py (ez utóbbi a <IfModule mime_module> szakaszban) Options Indexes FollowSymLinks Includes ExecCGI (ez utóbbi a <Directory "C:/ /htdocs" szakaszban> Optimális esetben ezek a bejegyzések telepítéskor automatikusan is bekerülhetnek. Amint látható a kiírásra itt is a print parancsot használjuk, csupán annyi az érdekesség, hogy a paraméterben megadott string részei HTML formázó utasítások is lehetnek. Feladat Szöveg beolvasása, változó értékének átadása Készítsünk olyan weblapot, amely bekér egy nevet, majd egy gomb megnyomására olyan script fut le, amely köszön! 5

RLAP <HTML> <HEAD> <TITLE>Köszönés</TITLE> </HEAD> <BODY> <H2>Írd be a neved!</h2> <FORM ACTION="koszon.py" METHOD="post"> <INPUT TYPE="text" NAME="nev"><BR> <INPUT TYPE="submit" NAME="send" VALUE="A script végrehajtása"> </FORM> </BODY> </HTML> SCRIPT #!/Python25/python # -*- coding: ISO-8859-2 -*- # interfész modul a webserverrel import cgi # A felhasználói kérés fogadása form = cgi.fieldstorage() #Az érték átadása (a nev az rlapnál alkalmazott elnevezése a beviteli mez nek) x = form["nev"].value print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" 6

print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">" #Az átadott érték kiírása print "Szia ", x, "!" print "</FONT></H3>" print "</BODY>" print "</HTML>" Feladat Számológép Készítsünk olyan weblapot, amely bekér két számot és a négy alapm velet egyikét majd egy gomb megnyomására olyan script fut le, amely kiszámítja az eredményt! 7

RLAP <HTML> <HEAD> <TITLE>Számológép</TITLE> </HEAD> <BODY> <H2>Számológép</H2> <FORM ACTION="szamolo.py" METHOD="post"> <INPUT TYPE="text" NAME="szam1"><BR> <INPUT TYPE="text" NAME="szam2"><BR> <INPUT TYPE="radio" NAME="muvelet" VALUE="+">+<BR> <INPUT TYPE="radio" NAME="muvelet" VALUE="-">-<BR> <INPUT TYPE="radio" NAME="muvelet" VALUE="*">*<BR> <INPUT TYPE="radio" NAME="muvelet" VALUE="/">/<BR> <INPUT TYPE="submit" NAME="send" VALUE="Kiszámít"> </FORM> </BODY> </HTML> SCRIPT # interface modul a webserverrel import cgi # A felhasználói kérés fogadása form = cgi.fieldstorage() #Az érték átadása x = float(form["szam1"].value) y = float(form["szam2"].value) m = form["muvelet"].value if m == '+': eredmeny = x + y if m == '-': eredmeny = x - y if m == '*': eredmeny = x * y if m == '/': eredmeny = x / y print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" 8

print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">" #Az átadott érték kiírása print x, " ", m, " ", y, " = ", eredmeny print "</FONT></H3>" print "</BODY>" print "</HTML>" A programnak egyetlen hibája, hogy amennyiben nem írunk be a beviteli mez kbe adatokat, hanem azonnal a nyomógombra kattintunk, egy hibaüzenetet kapunk. Ez a hibaüzenet adódik egyébként minden olyan esetben, amikor a webszerver nem tud megfelel kimenetet produkálni. Feladat Számológép2 Egészítsük ki az el programunkat úgy, hogy ellen rizzük azt, hogy a beviteli mez k ki vannak-e töltve, ha nincsenek, akkor alapértelmezett értékekkel dolgozzunk! SCRIPT #!/Python25/python # -*- coding: ISO-8859-2 -*- # interface modul a webserverrel 9

import cgi # A felhasználói kérés fogadása form = cgi.fieldstorage() #Az érték átadása if form.has_key("szam1"): x = float(form["szam1"].value) x = 0 if form.has_key("szam2"): y = float(form["szam2"].value) y = 0 if form.has_key("muvelet"): m = form["muvelet"].value m = '+' if m == '+': eredmeny = x + y if m == '-': eredmeny = x - y if m == '*': eredmeny = x * y if m == '/': eredmeny = x / y print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">" #Az átadott érték kiírása print x, " ", m, " ", y, " = ", eredmeny print "</FONT></H3>" print "</BODY>" print "</HTML>" Az importált cgi modul biztosítja a Python script kapcsolatát a CGI interfésszel, ami 10

lehet vé teszi a párbeszédet a webszerverrel. A modul FieldStorage() függvénye visszatérési értékként egy objektumot ad, ami a HTML formmal átadott adatokat tartalmazza. A form nev változóba tesszük ezt a szótárra nagyon hasonlító objektumot. Egy valódi szótár és a form nev változóba tett objektum között az a lényeges különbség, hogy az utóbbiból a value() metódussal kell kiszedni az értékeket. A szótárakra alkalmazható többi metódust, mint amilyen például a has_key(), a szokásos módon használhatjuk. A FieldStorage() visszatérési értékeként megadott szótárobjektum fontos jellemz je, hogy a megfelel HTML formban üresen hagyott mez k számára nincs kulcsa. Példánkban a formnak két adatbeviteli mez je van, amikhez a szam1 és szam2 neveket rendeltük. Ha a felhasználó kitöltötte ket, akkor a tartalmukat a szótárobjektumban a szam1 és a szam2 indexeken fogjuk megtalálni. Viszont, ha valamelyik mez t nem töltöttük ki, akkor az annak megfelel index nem fog létezni. Tehát az értékek bármiféle kezelése el tt feltétlenül meg kell bizonyosodni a várt indexek létezésér l. Feladat Krumpli Egy cserkésztáborban készül a vacsora, de a konyhaf nök nem tudja, mennyi krumplit vegyen. A fejadagot ismeri az 0,4 kg, de a szükséges mennyiséget számítógép segítségével szeretné kiszámolni az aktuális létszámtól függ en. Írjuk meg a programot a konyhaf nöknek! A program kérje be a létszámot, majd írja ki a szükséges mennyiséget a következ képpen! 11

RLAP <HTML> <HEAD> <TITLE>Krumpli</TITLE> </HEAD> <BODY> <H2>Krumpli</H2> <FORM ACTION="krumpli.py" METHOD="post"> Létszám: <INPUT TYPE="text" NAME="letszam"><BR> <INPUT TYPE="submit" NAME="send" VALUE="Kiszámít"> </FORM> </BODY> </HTML> SCRIPT #!/Python25/python # -*- coding: ISO-8859-2 -*- # interface modul a webserverrel import cgi # A felhasználói kérés fogadása form = cgi.fieldstorage() #Az érték átadása if form.has_key("letszam"): x = float(form["letszam"].value) x = 0 #Az eredmény kiszámítása eredmeny = x * 0.4 #A HTML kód elkészítése print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">" #Az átadott érték kiírása print "A szükséges mennyiség: ", x, " * 0,4 kg = ", eredmeny, " kg" print "</FONT></H3>" print "</BODY>" 12

print "</HTML>" Feladat Henger Kérjük be egy henger sugarát és magasságát cm-ben, majd - írjuk ki a henger térfogatát! - Írjuk ki a henger súlyát, ha ez tömör vashenger, és ha fahenger! A kiírásokban a számokat kerekítsük 2 tizedesre! RLAP <HTML> <HEAD> <TITLE>Henger</TITLE> </HEAD> <BODY> <H2>Henger</H2> <FORM ACTION="henger.py" METHOD="post"> 13

Sugár (cm): <INPUT TYPE="text" NAME="sugar"><BR> Magasság (cm): <INPUT TYPE="text" NAME="magassag"><BR> <INPUT TYPE="submit" NAME="send" VALUE="Kiszámít"> </FORM> </BODY> </HTML> SCRIPT #!/Python25/python # -*- coding: ISO-8859-2 -*- from math import * # interface modul a webserverrel import cgi # A felhasználói kérés fogadása form = cgi.fieldstorage() #Az érték átadása if form.has_key("sugar"): r = float(form["sugar"].value) r = 0 if form.has_key("magassag"): m = float(form["magassag"].value) m = 0 #Az eredmény kiszámítása terf = r * r * pi * m vas = terf * 7.8 fa = terf * 0.7 #A HTML kód elkészítése print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">" #Az átadott érték kiírása print "A henger térfogata: ", round(terf,2), " cm<sup>3</sup><br>" print "A vashenger tömege: ", round(vas,2), " g<br>" print "A fahenger tömege: ", round(fa,2), " g" 14

print "</FONT></H3>" print "</BODY>" print "</HTML>" Feladat Bank Ha beteszünk a bankba egy adott összeget, adott éves kamatszázalékra, adott hónapra, mennyi pénzt vehetünk majd fel az id lejártakor? RLAP <HTML> <HEAD> <TITLE>Bank</TITLE> </HEAD> <BODY> <H2>Bank</H2> <FORM ACTION="bank.py" METHOD="post"> 15

Összeg (Ft): <INPUT TYPE="text" NAME="osszeg"><BR> Hónap: <INPUT TYPE="text" NAME="honap"><BR> Kamat%: <INPUT TYPE="text" NAME="kamat"><BR> <INPUT TYPE="submit" NAME="send" VALUE="Kiszámít"> </FORM> </BODY> </HTML> SCRIPT #!/Python25/python # -*- coding: ISO-8859-2 -*- from math import * # interface modul a webserverrel import cgi # A felhasználói kérés fogadása form = cgi.fieldstorage() #Az érték átadása if form.has_key("osszeg"): ossz = float(form["osszeg"].value) ossz = 0 if form.has_key("honap"): ho = float(form["honap"].value) ho = 0 if form.has_key("kamat"): k = float(form["kamat"].value) k = 0 #Az eredmény kiszámítása eredmeny = ossz * pow(1+k/100,ho/12) #A HTML kód elkészítése print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">" 16

#Az átadott érték kiírása print ho, "hónap múlva ", round(eredmeny,0), " Ft-ot vehet ki." print "</FONT></H3>" print "</BODY>" print "</HTML>" FELADATOK: 1. Kérd be a felhasználó nevét, majd írd ki a következ jókívánságot: Kedves <<X>>! Sikeres webprogramozást! 2. Kérd be egy téglatest három élének hosszúságát, majd írd ki a hasáb felszínét és térfogatát! 3. Tárold konstansokban a krumpli, a hagyma és a padlizsán egységárát! Írj olyan programot, amely bekéri, hogy mib l mennyit óhajt a vásárló, majd készítsen egy számlát a következ formában: Krumpli : 2.5 kg * 70 Ft/kg = 175 Ft Hagyma : 3.0 kg * 98 Ft/kg = 294 Ft Padlizsán : 10.0 kg * 200 Ft/kg = 2000 Ft ----------------------------------------------------------------------------------- Összesen 2469 Ft 4. Kérd be a gömb sugarát, majd írd ki a gömb felszínét és térfogatát! 5. Ha a számla ÁFA összege a számla nettó értékének egy adott százaléka, akkor hány százalék ÁFÁ-t tartalmaz a számla bruttó összege? Készíts a problémára egy kisegít programot! Például 25%-os ÁFA esetén a számla 20% ÁFÁ-t tartalmaz, 12%-os ÁFA esetén a számla ÁFA tartalma 10,71%. 6. Feri pénzt kap. Hogy mennyit, azt kérje be a program. A kifizetéshez 5000, 1000, 500 és 100 Ft-os címletek állnak rendelkezésre a maradékot Feri nem kapja meg. Feltételezzük, hogy minden címletb l van elég, és a lehet legkevesebb számú pénz kerül kiosztásra. Milyen címletb l hányat kapott Feri, és mennyit hagyott ott ajándékba. Feladat Fizetés Kérjük be egy alkalmazott fizetését! Ha ez a fizetés 100 000 forintnál nem nagyobb, akkor emeljük meg 25%-kal! Végül írjuk ki az alkalmazott fizetését! 17

RLAP <HTML> <HEAD> <TITLE>Fizetés</TITLE> </HEAD> <BODY> <H2>Fizetés</H2> <FORM ACTION="fizetes.py" METHOD="post"> Fizetés (Ft): <INPUT TYPE="text" NAME="fizetes"><BR> <INPUT TYPE="submit" NAME="send" VALUE="Kiszámít"> </FORM> </BODY> </HTML> SCRIPT #!/Python25/python # -*- coding: ISO-8859-2 -*- # interface modul a webserverrel 18

import cgi # A felhasználói kérés fogadása form = cgi.fieldstorage() #Az érték átadása if form.has_key("fizetes"): fiz = float(form["fizetes"].value) fiz = 0 #Az eredmény kiszámítása if (fiz < 100000) : fiz = fiz * 1.25 #A HTML kód elkészítése print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">" #Az átadott érték kiírása print "Az új fizetés ", fiz, " Ft." print "</FONT></H3>" print "</BODY>" print "</HTML>" Feladat Jó szám Kérjünk be egy valós számot! A szám akkor jó, ha 1000 és 2000 közötti páros egész (a határokat is beleértve). Írjuk ki, hogy a szám jó, vagy nem jó! 19

RLAP <HTML> <HEAD> <TITLE>Jó szám</title> </HEAD> <BODY> <H2>Jó szám</h2> <FORM ACTION="joszam.py" METHOD="post"> Szám : <INPUT TYPE="text" NAME="szam"><BR> <INPUT TYPE="submit" NAME="send" VALUE="Eldönt"> </FORM> </BODY> </HTML> SCRIPT #!/Python25/python # -*- coding: ISO-8859-2 -*- # interface modul a webserverrel import cgi # A felhasználói kérés fogadása form = cgi.fieldstorage() #Az érték átadása if form.has_key("szam"): sz = float(form["szam"].value) sz = 0 #Az eredmény kiszámítása if (sz >= 1000) and (sz <= 2000) and (sz % 2 == 0): valasz = "A szám jó." 20

valasz = "A szám nem jó." #A HTML kód elkészítése print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">" #A kiszámított érték kiírása print valasz print "</FONT></H3>" print "</BODY>" print "</HTML>" Feladat Kor Olvassunk be egy nem negatív egész számot, valakinek az életkorát! Kortól függ en írjuk ki a megfelel szöveget: 0 13 évig: Gyermek 14 17 évig: Fiatalkorú 18 23 évig: Ifjú 24 59 évig: Feln tt 60 évt l Id s! 21

RLAP <HTML> <HEAD> <TITLE>Életkor</TITLE> </HEAD> <BODY> <H2>Életkor</H2> <FORM ACTION="eletkor.py" METHOD="post"> Életkor : <INPUT TYPE="text" NAME="eletkor"><BR> <INPUT TYPE="submit" NAME="send" VALUE="Eldönt"> </FORM> </BODY> </HTML> SCRIPT #!/Python25/python # -*- coding: ISO-8859-2 -*- # interface modul a webserverrel import cgi # A felhasználói kérés fogadása form = cgi.fieldstorage() #Az érték átadása if form.has_key("eletkor"): kor = float(form["eletkor"].value) kor = 0 #Az eredmény kiszámítása if (kor <= 13): valasz = "Gyermek" elif (kor <= 17): valasz = "Fiatalkorú" 22

elif (kor <= 23): valasz = "Ifjú" elif (kor <= 59): valasz = "Feln tt" valasz = "Id s" #A HTML kód elkészítése print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">" #A kiszámított érték kiírása print valasz print "</FONT></H3>" print "</BODY>" print "</HTML>" FELADATOK: 1. Kérd be egy telek oldalait méterben! Írd ki a telek területét négyszögölben! (1 négyszögöl = 3,6 m 2 ). Ha a telek 100 négyszögölnél kisebb, akkor írja ki, hogy túl kicsi! 2. Van egy henger alakú hordónk, melybe nem tudjuk, hogy belefér-e a rendelkezésre álló bor. Kérd be a bor mennyiségét literben, majd a hordó összes szükséges adatát cmben. Adj tájékoztatást, hogy hány literes a hordó, és hogy belefér-e a hordóba a bor! Ha belefér, akkor add meg, hogy mennyi férne még bele! Írd ki százalékosan is a telítettséget! Az adatokat egészre kerekítve írd ki! 3. Kérj be egy évszámot! Ha a beütött szám negatív, akkor adj hibajelzést, ha nem, akkor állapítsd meg, hogy az évszám osztható-e 17-tel, vagy nem! 4. Kérd be Zsófi, Kati és Juli születési évét. Írd ki a neveket udvariassági sorrendben (el re az id sebbeket )! 5. Kérj be egy egyjegy, nem negatív számot! Írd ki a szám szöveges formáját (1=egy, 2=kett stb.) 6. Kérj be egy egész óra értéket. Ha a szám nem 0 és 24 óra között van, akkor adjon hibaüzenetet, egyébként köszönjön el a program a napszaknak megfelel en! 4-9: Jó reggelt!, 10-17: Jó napot!, 18-21: Jó estét!, 22-3: Jó éjszakát! 7. Egy dolgozatra annak pontszámától függ en a következ osztályzatot adják: elégtelen (1): 0 29 23

elégséges (2): 30 37 közepes (3): 38 43 jó (4): 44 49 jeles (5): 50 55 Kérd be a dolgozat pontszámát, majd írja ki az osztályzatot számmal és bet vel! Feladat Bank Van egy kis megtakarított pénzem. Arra vagyok kíváncsi, hogy hány hónap múlva éri el ez az összeg a bankban a 100 000 Ft-ot, ha havi 2%-os kamattal számolhatok? RLAP <HTML> <HEAD> <TITLE>Bank</TITLE> </HEAD> <BODY> <H2>Bank</H2> <FORM ACTION="bank2.py" METHOD="post"> Alapt ke : <INPUT TYPE="text" NAME="penz"><BR> 24

<INPUT TYPE="submit" NAME="send" VALUE="Kiszámít"> </FORM> </BODY> </HTML> SCRIPT #!/Python25/python # -*- coding: ISO-8859-2 -*- # interface modul a webserverrel import cgi # A felhasználói kérés fogadása form = cgi.fieldstorage() #Az érték átadása if form.has_key("penz"): p = float(form["penz"].value) p = 0 #Az eredmény kiszámítása honap = 0 while (p < 100000): p = p * 1.02 honap = honap + 1 #A HTML kód elkészítése print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">" #A kiszámított érték kiírása print honap, " hónap múlva felvehetsz ", round(p,0), " Ft-ot." print "</FONT></H3>" print "</BODY>" print "</HTML>" Feladat Jegyek száma Kérjünk be egy számot! Írjuk ki a jegyeinek a számát! 25

RLAP <HTML> <HEAD> <TITLE>Jegyek száma</title> </HEAD> <BODY> <H2>Jegyek száma</h2> <FORM ACTION="jegyekszama.py" METHOD="post"> Szám : <INPUT TYPE="text" NAME="szam"><BR> <INPUT TYPE="submit" NAME="send" VALUE="Kiszámít"> </FORM> </BODY> </HTML> SCRIPT #!/Python25/python # -*- coding: ISO-8859-2 -*- # interface modul a webserverrel 26

import cgi # A felhasználói kérés fogadása form = cgi.fieldstorage() #Az érték átadása if form.has_key("szam"): x = int(form["szam"].value) x = 0 #Az eredmény kiszámítása seged = x jegyszam = 0 while (seged!= 0): seged = seged / 10 jegyszam = jegyszam + 1 #A HTML kód elkészítése print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">" #A kiszámított érték kiírása print x, " jegyeinek száma: ", jegyszam print "</FONT></H3>" print "</BODY>" print "</HTML>" Feladat Oszthatóság Két szám között határozzuk meg az els olyan számot, amelyik osztható egy megadott számmal! 27

RLAP <HTML> <HEAD> <TITLE>Oszthatóság</TITLE> </HEAD> <BODY> <H2>Oszthatóság</H2> <FORM ACTION="oszthatosag.py" METHOD="post"> Egyik szám : <INPUT TYPE="text" NAME="szam1"><BR> Másik szám : <INPUT TYPE="text" NAME="szam2"><BR> Osztó : <INPUT TYPE="text" NAME="szam3"><BR> <INPUT TYPE="submit" NAME="send" VALUE="Megkeres"> </FORM> </BODY> </HTML> 28

SCRIPT #!/Python25/python # -*- coding: ISO-8859-2 -*- # interface modul a webserverrel import cgi # A felhasználói kérés fogadása form = cgi.fieldstorage() #Az érték átadása if form.has_key("szam1"): kezd = int(form["szam1"].value) kezd = 0 if form.has_key("szam2"): veg = int(form["szam2"].value) veg = 0 if form.has_key("szam3"): oszto = int(form["szam3"].value) oszto = 0 #Az eredmény kiszámítása if (kezd > veg): seged = kezd kezd =veg veg = seged while (kezd % oszto!= 0) and (kezd <= veg): kezd = kezd + 1 if (kezd > veg): valasz = "Nem található ilyen szám." valasz = 'Az els ilyen szám: '+str(kezd) #A HTML kód elkészítése print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">" 29

#A kiszámított érték kiírása print valasz print "</FONT></H3>" print "</BODY>" print "</HTML>" Feladat Fizetés Most 2009-et írunk. Írjuk ki, hogy egy adott évig mennyi lesz József fizetése, ha évenként 12%-kal növekszik! József jelenlegi fizetését, és az évszámot kérjük be! 30

RLAP <HTML> <HEAD> <TITLE>Fizetés</TITLE> </HEAD> <BODY> <H2>Fizetés</H2> <FORM ACTION="fizetes2.py" METHOD="post"> Fizetés : <INPUT TYPE="text" NAME="penz"><BR> Év : <INPUT TYPE="text" NAME="ev"><BR> <INPUT TYPE="submit" NAME="send" VALUE="Kiszámít"> </FORM> </BODY> </HTML> SCRIPT #!/Python25/python # -*- coding: ISO-8859-2 -*- # interface modul a webserverrel import cgi # A felhasználói kérés fogadása form = cgi.fieldstorage() #Az érték átadása if form.has_key("penz"): p = float(form["penz"].value) p = 0 if form.has_key("ev"): ev = int(form["ev"].value) ev = 2009 #Az eredmény kiszámítása x = [0]*100 for i in range(2009,ev+1): p = p * 1.12 x[i-2009] = p #A HTML kód elkészítése print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" 31

print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">" #A kiszámított érték kiírása for i in range(2009,ev+1): print i, ". évben ", round(x[i-2009],0), " Ft a fizetés.<br>" print "</FONT></H3>" print "</BODY>" print "</HTML>" Feladat Háromszög Írjunk olyan programot, amely egy háromszög három oldalából kiszámítja annak kerületét és területét! RLAP 32

<HTML> <HEAD> <TITLE>Háromszög</TITLE> </HEAD> <BODY> <H2>Háromszög</H2> <FORM ACTION="haromszog.py" METHOD="post"> a : <INPUT TYPE="text" NAME="szam1"><BR> b : <INPUT TYPE="text" NAME="szam2"><BR> c : <INPUT TYPE="text" NAME="szam3"><BR> <INPUT TYPE="submit" NAME="send" VALUE="Kiszámít"> </FORM> </BODY> </HTML> SCRIPT #!/Python25/python # -*- coding: ISO-8859-2 -*- from math import * # interface modul a webserverrel import cgi # A felhasználói kérés fogadása form = cgi.fieldstorage() def kerulet(a,b,c): return a+b+c def terulet(a,b,c): s = kerulet(a,b,c)/2 return sqrt(s*(s-a)*(s-b)*(s-c)) #Az érték átadása if form.has_key("szam1"): a = float(form["szam1"].value) a = 0 if form.has_key("szam2"): b = int(form["szam2"].value) b = 0 if form.has_key("szam3"): c = int(form["szam3"].value) c = 0 33

#A HTML kód elkészítése print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">" #A kiszámított érték kiírása print "A háromszög kerülete: ", kerulet(a,b,c) print "<BR>" print "A háromszög területe: ", terulet(a,b,c) print "</FONT></H3>" print "</BODY>" print "</HTML>" Feladat Faktoriális Írjunk olyan programot, amely kiírja egy adott szám faktoriálisát! 34

RLAP <HTML> <HEAD> <TITLE>Faktorialis</TITLE> </HEAD> <BODY> <H2>Faktoriális</H2> <FORM ACTION="faktorialis.py" METHOD="post"> Szám : <INPUT TYPE="text" NAME="szam"><BR> <INPUT TYPE="submit" NAME="send" VALUE="Kiszámít"> </FORM> </BODY> </HTML> SCRIPT # -*- coding: ISO-8859-2 -*- # interface modul a webserverrel import cgi # A felhasználói kérés fogadása form = cgi.fieldstorage() def faktorialis(n): f = 1 for i in range(1,n+1): f = f * i return f #Az érték átadása if form.has_key("szam"): x = int(form["szam"].value) x = 0 #A HTML kód elkészítése print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">" #A kiszámított érték kiírása print x, "! = ", faktorialis(x) 35

print "</FONT></H3>" print "</BODY>" print "</HTML>" Feladat Faktoriális2 Írjunk olyan programot, amely kiírja egy adott szám faktoriálisát! Alkalmazzunk rekurzív algoritmust! SCRIPT (Csak a függvényt kell lecserélni) def faktorialis(n): if (n == 0): return 1 return n * faktorialis(n-1) Feladat Fibonacci Írjunk olyan programot, amely kiírja a Fibonacci-sorozat n-edik elemét! RLAP 36

<HTML> <HEAD> <TITLE>Fibonacci</TITLE> </HEAD> <BODY> <H2>Fibonacci</H2> <FORM ACTION="fibonacci.py" METHOD="post"> Sorszám : <INPUT TYPE="text" NAME="szam"><BR> <INPUT TYPE="submit" NAME="send" VALUE="Kiszámít"> </FORM> </BODY> </HTML> SCRIPT # -*- coding: ISO-8859-2 -*- # interface modul a webserverrel import cgi # A felhasználói kérés fogadása form = cgi.fieldstorage() def fibonacci(n): if (n == 1) or (n == 2): return 1 return fibonacci(n-1) + fibonacci(n-2) #Az érték átadása if form.has_key("szam"): x = int(form["szam"].value) x = 0 #A HTML kód elkészítése print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">" #A kiszámított érték kiírása print "Az eredmény: ", fibonacci(x) print "</FONT></H3>" 37

print "</BODY>" print "</HTML>" FELADATOK 1. Írj olyan függvényt, amely visszaadja egy szám kétszeresét! 2. Írj olyan függvényt, amely egy kör sugarából visszaadja annak területét! 3. Írj olyan függvényt, amely egy gömb sugarából visszaadja annak térfogatát! 4. Írj olyan függvényt, amely visszatér a két paraméterében megadott egész szám közötti egész számok összegével, a határokat is beleértve! 5. Írj olyan függvényt, amely eldönti, hogy egy adott szám prímszám-e? Feladat E-bet Írjunk olyan programot, amely egy stringben megszámolja az e bet ket! RLAP 38

<HTML> <HEAD> <TITLE>E-bet </TITLE> </HEAD> <BODY> <H2>E-bet </H2> <FORM ACTION="ebetu.py" METHOD="post"> Szöveg : <INPUT TYPE="text" NAME="szoveg"><BR> <INPUT TYPE="submit" NAME="send" VALUE="Kiszámít"> </FORM> </BODY> </HTML> SCRIPT #!/Python25/python # -*- coding: ISO-8859-2 -*- # interface modul a webserverrel import cgi # A felhasználói kérés fogadása form = cgi.fieldstorage() def ebetukszama(szoveg): db = 0 for i in range(len(szoveg)): if (szoveg[i] == 'e') or (szoveg[i] == 'E'): db = db + 1 return db #Az érték átadása if form.has_key("szoveg"): x = form["szoveg"].value x = "" #A HTML kód elkészítése print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">" #A kiszámított érték kiírása print "E bet k száma:", ebetukszama(x) 39

print "</FONT></H3>" print "</BODY>" print "</HTML>" Feladat Csillagozás Írjunk egy programot, ami egy új változóba másol át egy karakterláncot úgy, hogy csillagot szúr be a karakterek közé. Így például, «gaston»-ból «g*a*s*t*o*n» lesz! RLAP <HTML> <HEAD> <TITLE>Csillagoz</TITLE> </HEAD> <BODY> <H2>Csillagoz</H2> <FORM ACTION="csillagoz.py" METHOD="post"> Szöveg : <INPUT TYPE="text" NAME="szoveg"><BR> <INPUT TYPE="submit" NAME="send" VALUE="Kiszámít"> 40

</FORM> </BODY> </HTML> SCRIPT #!/Python25/python # -*- coding: ISO-8859-2 -*- # interface modul a webserverrel import cgi # A felhasználói kérés fogadása form = cgi.fieldstorage() def csillagoz(szoveg): uj = "" for i in range(len(szoveg)-1): uj = uj + szoveg[i] + "*" uj = uj + szoveg[len(szoveg)-1] return uj #Az érték átadása if form.has_key("szoveg"): x = form["szoveg"].value x = "" #A HTML kód elkészítése print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">" #A kiszámított érték kiírása print "E bet k száma:", csillagoz(x) print "</FONT></H3>" print "</BODY>" print "</HTML>" Feladat Megfordít Írjunk egy programot, ami egy új változóba fordított sorrendben másolja át egy karakterlánc karaktereit. Így például «zorglub» -ból «bulgroz» lesz! 41

RLAP <HTML> <HEAD> <TITLE>Megfordít</TITLE> </HEAD> <BODY> <H2>Megfordít</H2> <FORM ACTION="megfordit.py" METHOD="post"> Szöveg : <INPUT TYPE="text" NAME="szoveg"><BR> <INPUT TYPE="submit" NAME="send" VALUE="Kiszámít"> </FORM> </BODY> </HTML> SCRIPT #!/Python25/python # -*- coding: ISO-8859-2 -*- # interface modul a webserverrel 42

import cgi # A felhasználói kérés fogadása form = cgi.fieldstorage() def fordit(szoveg): uj = "" for i in range(len(szoveg)-1): uj = uj + szoveg[i] + "*" uj = uj + szoveg[len(szoveg)-1] return uj #Az érték átadása if form.has_key("szoveg"): x = form["szoveg"].value x = "" #A HTML kód elkészítése print "Content-type: text/html" print print "<HTML>" print "<HEAD>" print "<TITLE>Új lap</title>" print "</HEAD>" print "<BODY>" print "<H3><FONT COLOR=\"blue\">" #A kiszámított érték kiírása print "E bet k száma:", fordit(x) print "</FONT></H3>" print "</BODY>" print "</HTML>" Feladat Másodfokú egyenlet Írjunk olyan programot, amely kiszámítja egy másodfokú egyenlet gyökeit annak együtthatóiból! 43