Hello World C nyelven

Ebben a témában: C Programozas, Fejleszto eszkozok

A C nyelv az egyik legismertebb programozási nyelv. Sok helyen használják, valamint több más ismert programozási nyelv fejlődött ki belőle (Java, Perl, PHP, C++). Az utasítás készlete, struktúrája és egész működési módja is sok más nyelvben köszön vissza.

 

 

A modern programozási nyelvek közül a C nyelv az egyik legidősebb, a 70-es évek elején született a B programozási nyelv alapján. Nem objektum orientált stílusú ellenben a korábban bemutatott Java nyelvvel, de a kód szeparációját hatékonyan támogatja. Ma már leginkább beágyazott környezetben használják hardver közeli programozáshoz. Előnyének mondanám, hogy nagyon gyors kódokat lehet vele írni, amiknek jól tervezhető és mérhető az erőforrásigénye. Mindezzel együtt nagyon szabadon engedi a programozó kezét, ezért nagyon nehezen karbantartható kódokat is lehet írni vele sajnos. Mivel több más nyelvnek is az alapja, ezért érdemes lehet ezzel a nyelvvel megismerkedni először. Komolyabb szinten azoknak ajánlanám, akik szeretnének hardver közeli feladatokkal foglalkozni például az autóiparban vagy úgy a beágyazott világban egyáltalán.

 

FejlesztőkörnyezetCEclipse C Programozas

Mint mindig, az első lépés most is a fejlesztőkörnyezet felállítása. Mint sok nyelvhez, úgy a C nyelvű programok fejlesztéséhez is használhatjuk az Eclipse-t. Ha még nem rendelkezel Eclipse-el, akkor kövesd a múltkori leírásomat, de most a C/C++ környezetet válaszd a Java környezet helyett.

Azok akik már rendelkeznek Eclipse-s környezettel és nem akarják azt lecserélni, azok egy Eclipse-s Plugin keretében tudják beszerezni a C-s környezetet, ezt a plugint nevezik CDT-nek. Egyébként az előbb külön telepített Eclipse is ezen a pluginon nyugszik. A CDT installálása pár lépésben megoldható:

  1. Nyissátok meg az Eclipse-t és menjetek a Help->Install New Software…
  2. Kattintsatok az Add gombra, majd írjátok be, hogy CDT, az elérési útvonalnak pedig másoljátok be ezt a linket.CDTInstall C Programozas
  3. Most csak a Main Features-t válasszátok ki, ez kezdésnek tökéletesen elegendő

 

Rendben, most már megvan a fejlesztő környezet, azonban sajnos még nem fogjuk tudni lefordítani a kódunkat, mert nincs telepítve C fordító még a gépünkre. Ez a helyzet akkor is, ha nem külön plugin-ként telepítetted a CDT-t, hanem a teljes Eclipse-s környezetet. Ha neked mégis van már telepített C fordítód, akkor ezt a lépés nyugodtan ugord át.

  1. Menj fel erre az oldalra.
  2. Töltsd le és telepítsd fel a MinGW-t. A beállításoknál válaszd ki az x84_64 architektúrát, mást nem kell külön beállítani.
  3. Az utolsó lépés az Eclipse összekötése a MinGW-vel. Ehhez az Eclipse-ben menj a Window->Preferences->C/C++/Build/EclipseMinGW C ProgramozasEnvironment-hez és add meg az elérési útvonalát a MinGW Bin mappájának, ami valahogy így néz ki, ha az alaphelyre telepítetted:
    C:\Program Files\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev2\mingw64\bin

 

Ha mindent jól csináltunk, akkor most már készen áll a fejlesztő környezetünk és el tudunk kezdeni C nyelven programozni.


(more…)

Bruttó bérek alakulása informatikai területeken

Ebben a témában: Onfejlesztes

Mennyit kereshet ma reálisan egy átlagos fejlesztő, informatikai mérnök Magyarországon?

Néhány napja jelent meg egy cikk, ami igen érdekes és figyelemfelkeltő számokat közölt a várható átlagos bruttó bérekről az informatikai szektorban.

A cikket teljes terjedelmében itt olvashatjátok.

Nekem a tapasztalatom is nagyjából alátámasztja a cikkben közölt számokat, bár azt azért kiemelném, hogy főként a budapesti telephellyel rendelkező multinacionális cégek fizetési adatait tartalmazza a cikk. Emiatt a vidéki pozíciókkal és elvárásokkal kicsit óvatosabbnak kell lenni. Nekem az a véleményem, hogy aki még nem rendelkezik ipari tapasztalatokkal, annak lehet, hogy kicsit türelmesebbnek kell lennie az első bértárgyalások alkalmával. A 3-5 éves valódi fejlesztői tapasztalatokkal rendelkezők azok, akik már jó eséllyel pályázhatnak a komolyabb havi fizetésekre.

Összességében azonban azt gondolom, hogy ha valakinek esetleg aggályai voltak a fizetések tekintetében, akkor ez a kimutatás nagyon megnyugtató lehet. Ezen a területen bizonyosan többszöröse kereshető meg a magyarországi átlag fizetéseknek. Természetesen csak a fizetések miatt senki ne válassza ezt a szakmát, csak akkor ha az alkotás öröme és a kreativitás legalább ugyanannyira motiválja mint a havi számlaforgalom.

Java Programozás – Öröklés

Ebben a témában: Java Programozas

Az Objektum Orientált felfogás és a Java Programozás egyik nagy előnye az úgynevezett Öröklés.

 

 

Az Öröklés azt jelenti, hogy egy bizonyos hierarchia alakul ki az Objektumok között. Az öröklésben mindig két végpont van, az Ős és az azt megöröklő Gyerek. A Gyerek megörökli az Ős minden tulajdonságát és tovább bővítheti azokat. Erre a gondolatra egy példa a Négyszög és a Téglalap. Minden Téglalap Négyszög, de nem minden Négyszög Téglalap.

Úgyanúgy mint a valóságban, így az Objektumok között is lehet definiálni ilyen jellegű kapcsolatot, sőt kapcsolati láncokat, ugyanis a Gyerek lehet Őse egy másik Gyereknek is. Sőt egy Ősnek több Gyereke is lehet. Maradva az előző példánál:QuadrangleInheritChain Java Programozas

 

 

Öröklés Előnyei

Mi lehet az előnye az öröklésnek a programozásban?

Ezzel a felfogással nagyon jól szét lehet választani a szerepköröket az Objektumok között, szét lehet osztani a felelősséget. Azonban a szabályokat is nagyon jól meg tudom kötni, hiszen már egészen magas szinten meg tudom mondani, hogy mik azok a tulajdonságok vagy műveletek, amik az öröklési hierarchia minden tagjában meg kell jelenjenek. A legnagyobb előnye mégis az általánosítás, hiszen ezentúl nem kell pontosan megmondanom, hogy melyik Objektumra van szükségem, elég, ha megjelölöm a hierarchia tetején álló Objektum valamelyikét. Például ha egy Négyszög osztálybeli Objektumot várok, akkor kaphatok Négyzetet vagy Téglalapot, mind a kettő Négyszög, tehát mind a kettő megfelelő referencia.

Ez a megközelítés a Projekt munkák során rendkívűl elterjedt, gyakran használt. Sőt, magában a Java nyelvben is rengeteg olyan elem van, amely kihasználja az öröklési láncok nyújtotta előnyöket. Érdemes tisztában lenni az alapokkal, mert egy komplexebb problémában gyorsan a segítségünkre lehet, ezzel időt és pénzt spórolva.

 

Öröklés a Java nyelvben

(more…)

Java Programozás – Osztályok, Objektumok

Ebben a témában: Java Programozas

A Java Programozás bevezető után, nézzük most meg, hogy hogyan néz ki az objektum orientált programozás a gyakorlatban.

 

 

Mint ahogy az előző írásban már bemutattam a Java világban minden elem egy objektum, egy osztály (Class) aminek lehetnek tulajdonságai és műveletei. Két szint létezik, van az osztályoknak a leírása, tulajdonságainak megnevezése (definíció) és van az osztályoknak a példányosítása amikor már pontosan  megmondod, hogy melyik elemnek mik a konkrét tulajdonságai.

Nézzünk egy egyszerű példát: Definiáljuk az Ember osztályt és definiáljuk a Név tulajdonságot. Majd példányosítok két elemet az Ember osztályból, az egyiknek a neve legyen Ádám, míg a másiké legyen István.

Tehát az Osztály egy általános leírás, míg az Elem az adott Osztály egy konkrét példánya.

 

Calculator Program

Nézzük végig egy konkrét példán keresztül, hogy hogyan néz ki a fenti elmélet Java nyelven. A feladat, hogy készítsünk egy Calculatort ami tud összeadni és osztani, majd számoltassuk ki vele, hogy mennyi 7+10, illetve 7/10 és a tároljuk is el ezeket az eredményeket.

Az első lépés mindig a feladat, a probléma megértése. Ahhoz, hogy a feladatot meg tudjuk oldani, szükségem van egy Calculator osztályra, ami két műveletet fog tudni elvégezni majd ezeknek az eredményeit tárolni. Most még nem mondom meg, hogy konkrétan, hogy kell összeadni illetve osztani, az már egy következő lépés.

 

A megoldás a következő képpen néz ki:

Hozzunk létre egy új Projektet, a neve legyen Calculator (hogyan?), majd hozzunk létre benne egy külön Package-t a Calculator implementációnak, ezt nevezzük calculator-nak.

Most hozzuk létre a Calculator osztályt, majd definiáljuk benne a két metódust valamint a két tároló attribútumot.

 

 

A metódusok publikus láthatóságúak (public), van visszatérési értékük (int és double), van nevük és van két paraméterük (number1, number2):

  • public int sum(int number1, int number2)
  • public double div(double number1, double number2)

 

A metódusoknak azért kell publikus láthatóságúaknak lennie, hogy bárki számára elérhetőek legyenek. Tehát ha tetszőleges helyen létrehozunk egy példányt a Calculator osztályból, akkor a metódusok szabadon felhasználhatóak, meghívhatóak.

Valamint van két tároló attribútumom, az egyik egész számok tárolására szolgáló (int), míg a másik tört számok tárolására alkalmas (double)

  • int calculatedIntResult
  • double calculatedDoubleResult


(more…)

Java Programozás

Ebben a témában: Fejleszto eszkozok, Java Programozas

A Java Programozás már régóta az egyik legfelkapotabb téma. Az eddigi bevezetők után (Mit csinál egy Programozó?, Szoftverfejlesztés az Alapoktól, Szoftverfejlesztés Lépései), nézzük meg most részletesen, hogy milyen lépések kellenek ahhoz, hogy elkészítsük az első programjainkat.

 

 

Java programozás – A nyelv

A Java napjaink egyik legismertebb és legelterjedtebb programozási nyelve. Sikerét leginkább a könnyű használhatóságának és sokféleségének köszönheti. A Java alap platformja a Java Standard Edition (Java SE), mely tartalmazza a nyelvet valamint a fordító és a futtató környezetet. Az alap platformnak két fajta kiegészítése létezik specifikusabb környezetekre, szerver oldali programok megvalósítására a Java Enterprise Edition (Java EE), valamint kisebb erőforrású platformokra a Java Micro Edition (Java ME).

A Java egy objektum orientált programozási nyelv. Úgy tekint a világra mint különböző objektumok halmaza és azok egymással történő interakciója. Minden, amit ma a világból ismerünk leírható úgy, mint egy objektum. Minden objektumnak lehet tulajdonsága és lehet valamilyen művelete, amit képes elvégezni. Például egy objektum lehet egy lámpa, ami fehér színű, lehet fel és lekapcsolni és fogyaszt egy bizonyos mennyiségű áramot óránként. De objektumként leírható például egy ember is, akinek van neve, telefonszáma, tud aludni, sétálni, stb…

 

Vágjunk bele és készítsük el az első programunkat: Nézd meg videón (ráadás feladatokkal) vagy csak görgess tovább és olvasd el a lépéseket.

Eclipse Letöltése és Telepítése

Az első és legfontosabb feladat a fejlesztő környezet beállítása. A fejlesztő környezet nem csak beépítve támogatja a Java programozást, de lehetőséget biztosít az azonnali kipróbálásra is. Nekem a személyes preferenciám az Eclipse, de mindenki próbáljon ki több fajtát és válassza ki a sajátját.

Tehát töltsük le az oldalról az Eclipse Installer-t.

Eclipse Error Java Programozas

Ha valaki az alábbi hibaüzenettel találkozik, akkor én a legújabb verziójú JDK letöltését javaslom. Windows-hoz a Windows x64 Installer-t ajánlom, az tartalmaz mindent, ami a Java alapú fejlesztéshez kell.

Majd válasszuk az Eclipse IDE for Java Developers, mert mi most csak Java-ban akarunk programozni egyelőre.

 

 

Projekt létrehozása

Elindítás után megkérdezi az Eclipse, hogy hová mentse az adatainkat, ki kell jelölni egy Workspace-t (de az is elég, ha csak elfogadjuk az alapbeállítást). Miután ezt sikeresen megtettük beérünk a kezdőképernyőre, itt válasszuk a File -> New -> Java Project menüpontot. Ekkor az alábbi kép fogad majd bennünket:

Eclipse Uj Project Java Programozas

 

Itt adjuk meg csak a Projektünk nevét. Én most a HelloWorld nevet fogom neki adni. Ezután kattintsunk a Finish gombra, ezúttal más beállításra nem lesz szükségünk.

 

Hello World program implementálása

Most, hogy megvan a Projekt, fel kell építenünk a projekt struktúráját. A Java projektek struktúrája hasonlóan épül fel mint ahogy a Windows-os könyvtárszerkezet. A különböző forráskódokat különböző könyvtárakba tudjuk szétszórni majd felhasználni. Minden projektben kell, hogy legyen legalább 1 Package és legalább 1 Class fájl.

Hozzuk tehát létre a saját Package-ünket. Nyissuk le a projektünket, utána az src mappán jobb klikk majd New -> Package

Eclipse Class Letrehozas Java Programozas

A Package-t bárhogyan elnevezhetjük, én most “programmingPackage”-nek neveztem el. Ezután a Package-n jobb klikk majd New -> Class. Nevezzük el „Programming”-nak, majd pipáljuk be, hogy adja hozzá automatikusan a Comment-eket valamint a public static void main(String[] args) függvényt.

Ha elkészült a Programming Class-unk, akkor adjuk hozzá a parancsot a main függvényen belül, amivel ki tudjuk írni a képernyőre, hogy Hello World!

System.out.print(“Hello World! Programozz Te Is!”);

 

Eclipse Hello World Java Programozas

 

 

Hello Word program megértése

Az implementáció után, ha a programot lefuttatjuk a Play Gomb megnyomásával vagy a Ctrl+F11 billentyűzetkombinációval, akkor megjelenik a Console-n a Hello World! szöveg.

Mi is az amit most csináltunk egész pontosan?

(more…)

Szoftverfejlesztés lépései

Ebben a témában: Alapok, Fejleszto eszkozok

Nézzük meg kicsit részletesebben, hogyan is néz ki ma, egy nagyvállalati szoftver fejlesztése a gyakorlatban. Milyen életciklusa van a terméknek és kiknek a kezén megy át, mielőtt a vásárló a kezébe veheti.

 

1.      Vevői Specifikáció

          A fejlesztést megelőzi magának a terméknek a megrendelése. Ekkor a vevő elküldi a részletes specifikációját a terméknek. Régebben ezek a specifikációt mindenféle változatos formátumban jutottak el a gyártókhoz, azonban ma már gyakorlatilag minden fontos piaci szereplő a Doors nevű IBM-es követelménykezelő rendszert használja erre a célra. A program maga nem túl bonyolult, gyakorlatilag táblázatos formában érkeznek a követelmények, illetve különböző követelmények tudnak mutatni egymásra. Ezen felül még képes tárolni az egyes követelmények verzióit is. A vevőtől kapott követelményeket általában Customer Requirement Specification-nek (CRS) nevezzük.

 

2.      Szoftveres Specifikáció

       A következő lépés a vevői követelmények kiegészítése. A megrendelő által küldött követelményeket általában még több iteráción keresztül kell egyeztetni illetve kiegészíteni. Ezeket az egyeztetéseket és kiegészítéseket általában nem maga a programozó végzi (bár aktívan részt vesz a folyamatban), hanem az erre a feladatra kijelölt emberek, a vevői kapcsolattartók. Ha ez a lépés megvan, akkor már az is megvan, hogy pontosan mit is kell lefejleszteni. Ezt a csomagot nevezzük általában Software Requirement Specification-nek (SRS).

 

3.      Rendszertervezés

        A következő lépés, annak a szoftver rendszernek a megtervezése, ami majd képes lesz megvalósítani az SRS minden követelményét.

        Tervezésnek számít az is, ha egy A4-es papírra lerajzolom, hogy, hogyan fog kinézni a rendszer. Azonban ma már ettől sokkal komolyabbak az elvárások megrendelői oldalról is, valamint a mai projektek már általában nem férnek rá egy A4-es lapra. Éppen ezért már nagyon ügyes modellező programok vannak a piacon. Ezekben rengeteg féle aspektusból lehet lerajzolni a rendszert vagy annak egy szeletét. Nincs igazán egyeduralkodó modellező keretrendszer, a legelterjedtebbek a Rhapsody, MagicDraw, Enterprise Architect. Illetve léteznek különböző modellező nyelvek is, ezek között egyeduralkodónak mondanám az UML-t. Ha jól megterveztük a rendszerünket, akkor már van lehetőségünk, hogy egy gombnyomásra tudjunk kódot generálni. Az előbb említett modellező szoftverek már beépítve nyújtanak kódgenerálási lehetőségeket. Azonban ezeket nehéz jól használni, ezért általában csak a teljes rendszer egy kis része generálható.

 

4.      Implementáció

          A tervezési fázis után következik (végre) az implementálási fázis, amikor is már ténylegesen kódot „gyártunk”. Ez, a már korábban bemutatott programozási keretrendszerekben történik, a szükséges programozási nyelven. Ha a rendszerünket a tervezési fázisban jól átgondoltuk, akkor ebben a lépésben már kevesebb dolgunk lesz, mivel gyakorlatilag „csak” le kell kódolni a tervrajzokat.


(more…)

Szoftverfejlesztés az alapoktól

Ebben a témában: Alapok, Fejleszto eszkozok

Tudod, hogyan működik egy telefonos applikáció? Miért nyílik magától a fotocellás ajtó, vagy miért indul el a lift, ha megnyomsz benne egy gombot? Hogyan tudja vezetni a robotpilóta a Tesla autóit vagy éppen egy repülőt?

 

 

Sok érdekes, látszólag különböző kérdés, azonban a válasz mindegyikre ugyanaz. Ezekben az elektronikai eszközökben programok futnak melyek bizonyos bemenetek hatására bizonyos dolgokat hajtanak végre.

 Szoftverfejlesztes az Alapoktol

 

A programot magát, a CPU, a Processzor fogja végrehajtani. Mire a CPU elkezdi végrehajtani a programot, addigra az már csak 0-k és 1-esek véges hosszú sorozata lesz, ugyanis a CPU csak ezt a két értéket tudja értelmezni. Tehát mondhatnám, hogy egy Programozónak csupán egy két gombos billentyűzetre van szüksége.

Na de persze a valóságban ez nem így működik, ugyanis erre a feladatra találták ki a különböző programozási nyelveket. A programozási nyelv nem más, mint különböző utasítások halmaza. Képzeld el a programozási nyelvet úgy, mint az emberi nyelvet, ahol a használható szavak az utasítások. Az ezen utasítások véges hosszú sorozata pedig a program maga, mint egy szöveg a szavak segítségével. Minden utasításhoz tartozik egy egyedi azonosító, ami nem más, mint egy bináris szám. A számok sorozatát a programból pedig, egy úgynevezett fordító vagy Compiler tudja előállítani. Ez a számsorozat lesz a 0-k és 1-esek véges hosszú sorozata.

                                                                                   Programozo Billentyuzete

 

A trükk pedig ott van, hogy rengeteg féle programozási nyelv létezik. Ugyanis másfajta utasításokat érdemes használni a fotocellás ajtóhoz és megint másfajtákat egy telefonos applikációhoz. A teljesség igénye nélkül:

  • Web programozáshoz: HTML, PHP, Javascript, Python
  • Telefonos alkalmazásokhoz: Objective-C, Java
  • Beágyazott rendszerekhez (autók, repülők, robotok, …): Assembly, C, C++
  • Számítógépes alkalmazások: C#, Java
  • Adatbázisok: SQL


(more…)