„Informatika 2 - PHP alapok labor” változatai közötti eltérés

A VIK Wikiből
Ugrás a navigációhoz Ugrás a kereséshez
(Új oldal, tartalma: „{{GlobalTemplate|Villanyalap|LaborBeugro20080422}} -- ANewsEE - 2008.04.22. -- Karacs - 2009.04.29. Sorolja fel a főbb fordítási …”)
 
 
(17 közbenső módosítás, amit 3 másik szerkesztő végzett, nincs mutatva)
1. sor: 1. sor:
{{GlobalTemplate|Villanyalap|LaborBeugro20080422}}
+
{{Vissza|Informatika 2}}
  
-- [[GyurjanIstvan|ANewsEE]] - 2008.04.22.
+
Ez az oldal az [[Informatika 2]] című tárgy - '''PHP alapok labor''' beugrókérdéseinek kidolgozását tartalmazza.<br>Az aktuális segédlet az aktuális (ajánlott) beugrókérdésekkel bejelentkezés után megtalálható a tanszéki honlapon a [https://www.aut.bme.hu/Upload/Course/VIAUA203/hallgatoi_segedletek/PHP%20alapok-Hallgat%C3%B3i%20seg%C3%A9dlet_120621234531.pdf 5. gyakorlat segédlet címen] (2013 tavasz).
-- [[KaracsGabor|Karacs]] - 2009.04.29.
 
  
Sorolja fel a főbb fordítási lépéseket! (ezt mindenkitől érdemes megkérdezni)</b><br />
+
Jelenleg még elég hiányos a kidolgozás, továbbá évről évre kismértékben változhatnak beugrókérdések. A tanszéki honlapról mindig elérhető az aktuális mérési útmutató, mely az aktuális beugrókérdéseket tartalmazza.
https://wiki.sch.bme.hu/pub/Villanyalap/LaborBeugro20080422/clip_image002.jpg
 
  
</p><p><b>Mi az a token? Mondjon példát!</b><br />
+
'''''FONTOS: Ezektől eltérő kérdések is előfordulhatnak a beugrókban! Ezek csak irányadó kérdések, így ajánlott a segédlet alapos áttanulmányozása is.'''''
A tokenizálás során a forrásnyelvű adatállományt jelentő karaktersorozatból a fordító számára önálló jelentéssel bíró atomi elemeket készítünk, ezek a tokenek. Egy-egy token lehet egy elemi szó, egy utasítás neve, egy változó, egy szám, vagy karaktersorozat.
 
  
</p><p><b>Mi az a szintaxis fa?</b><br />
+
'''Kérlek szerkesszétek, aktualizáljátok!'''
A tokenekből a következő lépésben a forrásnyelv szabályai szerint szintaxis fát építünk. A felépített szintaxis fában már látható, hogy melyik műveletnek milyen attribútumai vannak, ill. a műveletek hogyan ágyazódnak egymásba.
 
  
</p><p><b>Mire jó a szemantikai elemzés?</b><br />
+
__TOC__
a harmadik lépés során a szintaxis fát ellenőrizzük szemantikai szempontból. Itt ugyanis a szintaxis fa bejárásával már több információ áll rendelkezésre, így elvégezhető többek közt az egyes kifejezésekhez tartozó típusok ellenőrzése is.
 
  
</p><p><b>Mit jelent a ... kifejezés?  (pl. a: &#8217;b&#8217; | (&#8217;c&#8217;..&#8217;e&#8217;)+  )</b><br />
+
== Milyen különbségek vannak a PHP és egy erősen típusos nyelv (pl. Java) típuskezelése között? ==
intervallum megjelölésére szolgál. A példában adott kifejezés jelentése: a gyermeke: 'b' vagy 'c'-től 'e'-ig lévő betűkből álló és tetszőleges hosszú, (de legalább egy elemből álló) karaktersorozat
 
  
</p><p><b>Hogyan adható meg egy &#8230;-t leíró token (pl.  szem. ig. számot)</b><br />
+
A PHP gyengén típusos nyelv, ez azt jelenti, hogy a változókat bárhol deklarálhatjuk, és azok a tartalmuknak megfelelő típussal jönnek létre, ami később dinamikusan változhat. Ha olyan változót próbálunk használni, ami még nem létezik, akkor magától létrejön. A változó nevek dollár jellel ($) kezdődnek, második karakterük nem lehet szám, csak betű vagy alulvonás ( _ ) karakter, és nem lehet benne szóköz.
pl:STAR : '*';
 
STAR --> Token neve, amivel majd hivatkozunk rá.
 
'*' -->a szorzás művelet neve.
 
</p><p><b>Mire jó a &#8222;^&#8221; jel a szintaxis fa építésénél?</b><br />
 
Speciális karakterként használható még a &#8217;^&#8217; jel, ami azt jelenti, hogy az adott elemet a lokális részfa gyökereként kell kezelni.  
 
</p><p><b>Mi az ANTLR?</b><br />
 
A tokenizálás és szintaxis fa építésének automatizálására több alkalmazás, eszköz létezik, pl. Flex, Bison, ANTLR. 
 
</p><p><b>Írjon le egy C nyelvben használatos elemet regurális kifejezéssel!</b><br />
 
</p><p><b>Adjon olyan tokendefiníciót, ami képes leírni a komplex számokat!</b><br />
 
KOMP: ('0'..'9')+ (' +j' ('0'..'9')+)?
 
  
</p><p><b>Milyen nyelvosztályt használhatunk a szintaxis fa építő szabályok megadásához?</b><br />
+
Példaképpen változók létrehozása PHP-ben:
Környezetfüggetlen nyelvosztályt, másnéven a 2-es nyelvosztályt.
 
  
</p><p><b>Mit jelent az alábbi: #(a #(b c)) ? Rajzolja le!</b><br />
+
  $szoveg = "Első PHP oldalam";
 +
  $szam = 12;
 +
$logikai_ertek = false;
  
{{InLineImageLink|Villanyalap|LaborBeugro20080422|rajz2.jpg}}
+
Ennek hatására létrejön három változó:
  
 +
* Egy '''String''' típusú, '''szoveg''' nevű változó, melynek értéke: '''Első PHP oldalam'''
 +
* Egy '''int''' típusú, '''szam''' nevű változó, menynek értéke: '''12'''
 +
* Egy '''bool''' típusú, '''logikai_ertek''' nevű változó, melynek értéke: '''false'''
  
[[Category:Villanyalap]]
+
 
 +
Ugyanez Java-ban így nézne ki:
 +
 
 +
'''String''' szoveg = "Első PHP oldalam";
 +
'''int''' szam = 12;
 +
'''boolean''' logikai ertek = false;
 +
 
 +
 
 +
Mivel a PHP gyengén típusos nyelv, azaz futási időben megváltozhatnak a változók típusai, így szükség lehet egy típus összehasonlító operátorra. Lehetőség van típus szerinti egyezést is ellenőrizni az '''===''' operátorral, melynek párja: '''!=='''. Nem csak primitív típusokra, hanem például asszociatív tömbökre is használható:
 +
 
 +
$x == $y  // <- Igaz, ha egyezik az érték. Például: 5==8 hamis, 5=="5" igaz
 +
$x === $y  // <- Igaz, ha egyezik az érték és a típus is. Például: 5==="5" hamis, 5===5 igaz
 +
 
 +
== Mire jó a $_REQUEST tömb? ==
 +
 
 +
A '''$_GET''' és a '''$_POST''' tömböket egyesítve tartalmazza a '''$_REQUEST''' tömb.
 +
 
 +
Például adott az alábbi űrlap:
 +
 
 +
<form action="login.php" method="get|post">
 +
    E-mail cím: <input type="text" name="email" /><code><nowiki><br/></nowiki></code>
 +
    Jelszó: <input type="password" name="jelszo" /><code><nowiki><br/></nowiki></code>
 +
    <input type="submit" value="Bejelentkezés!" />
 +
  </form>
 +
 
 +
Amennyiben az űrlapon method="get"-et állítottunk be, akkor szerver oldalon a $_GET asszociatív tömbből olvashatjuk ki az adatokat:
 +
 
 +
$email = $_GET["email"];
 +
$jelszo = $_GET["jelszo"];
 +
 
 +
Amennyiben az űrlapon method="post"-ot állítottunk be, akkor szerver oldalon a $_POST asszociatív tömbből olvashatjuk ki az adatokat:
 +
 
 +
$email = $_POST["email"];
 +
$jelszo = $_POST["jelszo"];
 +
 
 +
Bármit is állítunk be, a $_REQUEST tömb mindkét tömböt egyesítve tartalmazza:
 +
 
 +
$email = $_REQUEST["email"];
 +
$jelszo = $_REQUEST["jelszo"];
 +
 
 +
== Írjon egy PHP függvényt, mely kiszámolja a paraméterül kapott szám faktoriálisát és az eredményt kiírja. ==
 +
 
 +
<?php
 +
        function faktor ( $szam ){
 +
              $faktor = 1;
 +
              for( $i=0; $i < $szam; $i++ ){
 +
                      $faktor = $faktor * ( $i + 1 );
 +
              }
 +
              echo $faktor;
 +
        }
 +
?>
 +
 
 +
== Írjon kódot, mely kapcsolódik a localhost gépen található MySQL adatbázsszerverhez és utána bontja a kapcsolatot. ==
 +
 
 +
Az alábbi kód a '''localhost''' gépen futó MySQL adatbázis '''konyvtar''' nevű logikai adatbázisához kapcsolódik, majd bontja a kapcsolatot:
 +
 
 +
<?php
 +
        mysql_connect("localhost", "mysql_user", "mysql_password") or die("Kapcsolódási hiba: " . mysql_error());
 +
        mysql_select_db("konyvtar");
 +
        mysql_close();
 +
?>
 +
 
 +
== Készítsen el egy PHP oldalt, mely listázza az autok (id, rendszam, szin) adatbázistábla minden sorát. ==
 +
 
 +
<pre><?php
 +
mysql_connect("localhost", "mysql_user", "mysql_password")
 +
or die("Kapcsolódási hiba: " . mysql_error());
 +
mysql_select_db("adatbazis");
 +
 
 +
$result = mysql_query("SELECT cim, rendszam, szin FROM autok");
 +
while($row = mysql_fetch_array($result))
 +
  printf("ID: %d Rendszám: %s Szín: %s", $row["id"], $row["rendszam"], $row['szin']);
 +
 
 +
mysql_free_result($result);
 +
mysql_close();
 +
?></pre>
 +
 
 +
[[Kategória:Villamosmérnök]]

A lap jelenlegi, 2018. április 20., 09:00-kori változata

← Vissza az előző oldalra – Informatika 2

Ez az oldal az Informatika 2 című tárgy - PHP alapok labor beugrókérdéseinek kidolgozását tartalmazza.
Az aktuális segédlet az aktuális (ajánlott) beugrókérdésekkel bejelentkezés után megtalálható a tanszéki honlapon a 5. gyakorlat segédlet címen (2013 tavasz).

Jelenleg még elég hiányos a kidolgozás, továbbá évről évre kismértékben változhatnak beugrókérdések. A tanszéki honlapról mindig elérhető az aktuális mérési útmutató, mely az aktuális beugrókérdéseket tartalmazza.

FONTOS: Ezektől eltérő kérdések is előfordulhatnak a beugrókban! Ezek csak irányadó kérdések, így ajánlott a segédlet alapos áttanulmányozása is.

Kérlek szerkesszétek, aktualizáljátok!

Milyen különbségek vannak a PHP és egy erősen típusos nyelv (pl. Java) típuskezelése között?

A PHP gyengén típusos nyelv, ez azt jelenti, hogy a változókat bárhol deklarálhatjuk, és azok a tartalmuknak megfelelő típussal jönnek létre, ami később dinamikusan változhat. Ha olyan változót próbálunk használni, ami még nem létezik, akkor magától létrejön. A változó nevek dollár jellel ($) kezdődnek, második karakterük nem lehet szám, csak betű vagy alulvonás ( _ ) karakter, és nem lehet benne szóköz.

Példaképpen változók létrehozása PHP-ben:

$szoveg = "Első PHP oldalam";
$szam = 12;
$logikai_ertek = false;

Ennek hatására létrejön három változó:

  • Egy String típusú, szoveg nevű változó, melynek értéke: Első PHP oldalam
  • Egy int típusú, szam nevű változó, menynek értéke: 12
  • Egy bool típusú, logikai_ertek nevű változó, melynek értéke: false


Ugyanez Java-ban így nézne ki:

String szoveg = "Első PHP oldalam";
int szam = 12;
boolean logikai ertek = false;


Mivel a PHP gyengén típusos nyelv, azaz futási időben megváltozhatnak a változók típusai, így szükség lehet egy típus összehasonlító operátorra. Lehetőség van típus szerinti egyezést is ellenőrizni az === operátorral, melynek párja: !==. Nem csak primitív típusokra, hanem például asszociatív tömbökre is használható:

$x == $y   // <- Igaz, ha egyezik az érték. Például: 5==8 hamis, 5=="5" igaz
$x === $y  // <- Igaz, ha egyezik az érték és a típus is. Például: 5==="5" hamis, 5===5 igaz

Mire jó a $_REQUEST tömb?

A $_GET és a $_POST tömböket egyesítve tartalmazza a $_REQUEST tömb.

Például adott az alábbi űrlap:

<form action="login.php" method="get|post">
   E-mail cím: <input type="text" name="email" /><br/>
   Jelszó: <input type="password" name="jelszo" /><br/>
   <input type="submit" value="Bejelentkezés!" />
 </form>

Amennyiben az űrlapon method="get"-et állítottunk be, akkor szerver oldalon a $_GET asszociatív tömbből olvashatjuk ki az adatokat:

$email = $_GET["email"];
$jelszo = $_GET["jelszo"];

Amennyiben az űrlapon method="post"-ot állítottunk be, akkor szerver oldalon a $_POST asszociatív tömbből olvashatjuk ki az adatokat:

$email = $_POST["email"];
$jelszo = $_POST["jelszo"];

Bármit is állítunk be, a $_REQUEST tömb mindkét tömböt egyesítve tartalmazza:

$email = $_REQUEST["email"];
$jelszo = $_REQUEST["jelszo"];

Írjon egy PHP függvényt, mely kiszámolja a paraméterül kapott szám faktoriálisát és az eredményt kiírja.

<?php
       function faktor ( $szam ){
              $faktor = 1;
              for( $i=0; $i < $szam; $i++ ){
                     $faktor = $faktor * ( $i + 1 ); 
              }
              echo $faktor;
       }
?>

Írjon kódot, mely kapcsolódik a localhost gépen található MySQL adatbázsszerverhez és utána bontja a kapcsolatot.

Az alábbi kód a localhost gépen futó MySQL adatbázis konyvtar nevű logikai adatbázisához kapcsolódik, majd bontja a kapcsolatot:

<?php
       mysql_connect("localhost", "mysql_user", "mysql_password") or die("Kapcsolódási hiba: " . mysql_error());
       mysql_select_db("konyvtar");
       mysql_close();
?>

Készítsen el egy PHP oldalt, mely listázza az autok (id, rendszam, szin) adatbázistábla minden sorát.

<?php
	mysql_connect("localhost", "mysql_user", "mysql_password") 
		or die("Kapcsolódási hiba: " . mysql_error()); 
	mysql_select_db("adatbazis"); 

	$result = mysql_query("SELECT cim, rendszam, szin FROM autok");
	while($row = mysql_fetch_array($result))
	  printf("ID: %d Rendszám: %s Szín: %s", $row["id"], $row["rendszam"], $row['szin']); 

	mysql_free_result($result); 
	mysql_close(); 
?>