Top Banner
V 1.0 ÓE-NIK-AII, 2016 1 Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási feladatok
40

Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

Nov 10, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0 ÓE-NIK-AII, 2016 1

Programozás I.

Microsoft Visual Studio 2013Hello C# World!Változók típusaiGyakorló feladatokAlgoritmus alkotási feladatok

Page 2: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Hallgatói Tájékoztató

A jelen bemutatóban található adatok, tudnivalók ésinformációk a számonkérendő anyag vázlatát képezik.Ismeretük szükséges, de nem elégséges feltétele asikeres zárthelyinek, illetve vizsgának.

Sikeres zárthelyihez, illetve vizsgához a jelen bemutatótartalmán felül a kötelező irodalomként megjelöltanyag, a gyakorlatokon szóban, illetve a táblán átadotttudnivalók ismerete, valamint a gyakorlatokonmegoldott példák és az otthoni feldolgozás céljábólkiadott feladatok önálló megoldásának képessége isszükséges.

ÓE-NIK-AII, 2016 2

Page 3: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0 ÓE-NIK-AII, 2016 3

Programozás I.

Microsoft Visual Studio 2013Hello C# World!Változók típusaiGyakorló feladatokAlgoritmus alkotási feladatok

Page 4: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Projektek és megoldások• Projekt („Project”)

A projekt egy futtatható programhoz vagy más típusú szoftvermodulhoz tartozó, együtt kezelt szoftverelemek (többségében fájlok) összessége.

• C# forráskód („source code”) [*.cs]

• Hivatkozások („references”)

• Beállítások („settings”) [*.settings]

• Konfigurációs fájlok („configuration”) [*.config]

• Egyéb erőforrások („resources”) [*.resx, *.rc, *.resources]A projekthez tartozó elemek mappák létrehozásával hierarchikus fastruktúrába rendezhetők.A C# projekteket a Visual Studio *.csproj kiterjesztésű fájlokban tárolja.

ÓE-NIK-AII, 2016 4

Page 5: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Projektek és megoldások

• Megoldás („Solution”)A megoldás több összefüggő projekt együttes kezelését teszi lehetővé.Ezek a projektek virtuális mappák segítségével hierarchikus fastruktúrába is rendezhetők.A megoldásokat a Visual Studio *.sln kiterjesztésű fájlokban tárolja.

ÓE-NIK-AII, 2016 5

Page 6: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Új projekt létrehozása

ÓE-NIK-AII, 2016 6

Page 7: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Új projekt létrehozása

ÓE-NIK-AII, 2016 7

Page 8: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

A legfontosabb projekttípusok• Grafikus Windows alkalmazás („Windows Forms Application”)

Végeredménye egy „exe” kiterjesztésű futtatható program.

• Parancsértelmezőben futó Windows alkalmazás („ConsoleApplication”)Végeredménye egy „exe” kiterjesztésű futtatható program.

• Osztálykönyvtár („Class Library”)Végeredménye egy „dll” kiterjesztésű könyvtárfájl.

• Üres projekt („Empty Project”)Ehhez a projekttípushoz kézzel kell a megfelelő elemeket hozzáadni.

ÓE-NIK-AII, 2016 8

Page 9: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Kód készítés

ÓE-NIK-AII, 2016 9

Page 10: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Kód készítés

ÓE-NIK-AII, 2016 10

Page 11: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

A program

ÓE-NIK-AII, 2016 11

Page 12: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Futtatás

ÓE-NIK-AII, 2016 12

Page 13: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Hibás program (fordítási hiba)

ÓE-NIK-AII, 2016 13

Page 14: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Hibás program (warning)

ÓE-NIK-AII, 2016 14

• Nem igazi hiba, csak figyelmeztetés

• Szinte mindig érdemes hallgatni rá (a figyelmeztetés nyomán hibákra találhatunk)

Page 15: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Hibás program (futás közbeni hiba)

ÓE-NIK-AII, 2016 15

• Bizonyos hibákat a fordító nem tud kiszűrni a futtatás előtt

Page 16: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

A View menüpont

ÓE-NIK-AII, 2016 16

Page 17: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

A Solution Explorer

ÓE-NIK-AII, 2016 17

Page 18: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0 ÓE-NIK-AII, 2016 18

Programozás I.

Microsoft Visual Studio 2013Hello C# World!Változók típusaiGyakorló feladatokAlgoritmus alkotási feladatok

Page 19: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Hello, C# World

19ÓE-NIK-AII, 2016

Page 20: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

class Program{static void Main(){Console.WriteLine("Szervusz, hallgató!");Console.ReadLine();

}}

Hello, C# World

Készítsünk programot, amely kiírja a konzolra a „Szervusz, hallgató!” szöveget!

20ÓE-NIK-AII, 2016

Page 21: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0 ÓE-NIK-AII, 2016 21

Programozás I.

Microsoft Visual Studio 2013Hello C# World!Változók típusaiGyakorló feladatokAlgoritmus alkotási feladatok

Page 22: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Egész (fixpontos) számok

22ÓE-NIK-AII, 2016

Név Leírás Értéktartomány

sbyte 8 bites előjeles egész -128 : 127

byte 8 bites előjel nélküli egész 0 : 255

short 16 bites előjeles egész -32 768 : 32 767

ushort 16 bites előjel nélküli egész 0 : 65535

int 32 bites előjeles egész -2 147 483 648 : 2 147 483 647

uint 32 bites előjel nélküli egész 0 : 4 294 967 295

long 64 bites előjeles egész -9 223 372 036 854 775 808 :9 223 372 036 854 775 807

ulong 64 bites előjel nélküli egész 0 : 18 446 744 073 709 551 615

Page 23: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Valós (lebegőpontos) számok

ÓE-NIK-AII, 2016 23

Név Leírás Értékes jegy Értéktartomány

float 32 bites lebegőpontos 7 ±1,5*10-45 : ±3,4*1038

double 64 bites lebegőpontos 15 ±5,0*10-324 : ±1,7*10308

decimal 128 bites nagypontosságú

28 ±1,0*10-28 : ±7,9*1028

Méret Előjel Kitevő Törtrész Eltolás

Egyszeres IEEE-754 szabványpontosság

32 bit 1 bit 8 bit 23 bit 127

Kétszeres pontosság

64 bit 1 bit 11 bit 52 bit 1023

Page 24: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Karakterek, karakterláncok

• Karakter: char (megadás: aposztróffal)

– char szóElsőBetűje=‘c’;

• Karakterlánc: string (megadás: idézőjellel)

– string keresztNév=„Tímea";

• Speciális karakterek is megadhatóak (@ jellel kikapcsolható):

ÓE-NIK-AII, 2016 24

Jelölés Karakter

\0 Null karakter

\a Sípszó

\b Visszatörlés

\f Lapdobás

\n Soremelés

\r Kocsi vissza

\t Vízszintes tabulátor

Jelölés Karakter

\v Függőleges tabulátor

\x.... Hexadecimális kód

\u.... Unicode karakter

\U.... Unicode karakter

\' Aposztróf

\" Idézőjel

\\ Backslash

Page 25: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Logikai típus

• Teljesítmény-okokból általában nem 1 biten ábrázoljuk, részletesebben lásd IEA

• Logikai műveletek:

ÓE-NIK-AII, 2016 25

Név Leírás Értéktartomány

bool Logikai adattípus true vagy false

(igaz vagy hamis)

A B A AND B A OR B A XOR B NOT(A)

0 0 0 0 0 1

0 1 0 1 1 1

1 0 0 1 1 0

1 1 1 1 0 0

Page 26: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Változók deklarálása és használata

int j = -10;

int x = 10, y = 20;

const double pi = 3.14159;

const int adóKulcs = 27;

char d = 'x';

char unicodePélda = '\u0170'; // "Ű" karakter

bool érvényes = true;

string jegy = "jeles";

string elérésiÚt = "C:\\Program Files\\";

string elérésiÚt2 = @"C:\Program Files\";

string vers = @"Hová merült el

szép szemed világa";ÓE-NIK-AII, 2016 26

Fontos szabály: azonos névvel egy változót nem lehet kétszer deklarálni!

Page 27: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Típuskonverziók

• A számtípusok közötti konverzió mikéntje attól függ, hogy történik –e értékvesztés a konverzió során

• Egyszerű értékadás használható, amennyiben biztos, hogy nincs értékvesztés:

byte a=5; long c=5; float f=3.2f;int b=a; float d=c; double g=f;

• Amennyiben értékvesztés történhet, akkor mindenképp

jelezni kell a konverziót, ez az ún. típuskényszerítés,

„kasztolás” (typecasting):

int a=999; double d=3.14; int i1=-1;

byte b=(byte)a; int c=(int)d; uint i2=(uint)i1;

ÓE-NIK-AII, 2016 27

Page 28: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Típuskonverziók

• A stringgé történő konverzió a C# nyelven MINDEN változónál ugyanúgy történik:

byte b=250; float f=3.14f;string s1=b.ToString(); string s2=f.ToString();

• Stringből számmá tudunk konvertálni:

string s="123"; string s2="123,456";byte b=byte.Parse(s); float f=float.Parse(s2);

• Typecasting esetén (ebben a félévben számok között):célváltozó = (céltípus)forrásváltozó;

• Stringgé konvertálásnál:célváltozó = forrásváltozó.ToString();

• Stringből konvertálásnál:célváltozó=céltípus.Parse(stringváltozó);ÓE-NIK-AII, 2016 28

Page 29: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Változók elnevezése

• Olyan változó nevet használjunk, ami könnyen megérthető

ÓE-NIK-AII, 2016 29

Helyes elnevezés Helytelen elnevezés

esetekSzáma db

ablakSzélessége x

• Legyen egységes a kis/nagybetű használatunkcamelCasing PascalCasing

esetekSzáma EsetekSzáma

ablakSzélessége AblakSzélessége

• Döntsük el, hogy magyar vagy angol szavakat használunk

– Magyar szavak esetén használunk-e ékezeteket

Page 30: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0 ÓE-NIK-AII, 2016 30

Programozás I.

Microsoft Visual Studio 2013Hello C# World!Változók típusaiGyakorló feladatokAlgoritmus alkotási feladatok

Page 31: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

class Program{static void Main(){Console.Write("Hogy hívnak? ");string név = Console.ReadLine();Console.WriteLine("Szervusz, " + név + "!");

}}

Hello, C# World

Készítsünk programot, amely a konzolról beolvas egy nevet, majd név szerint üdvözli az illetőt!

31ÓE-NIK-AII, 2016

Page 32: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

class Program{

static void Main(){

Console.Write("Hogy hívnak? ");string név = Console.ReadLine();Console.Write("Hány éves vagy? ");int életkor = int.Parse(Console.ReadLine());Console.WriteLine("Szervusz, " + életkor +

" éves " + név + "!");}

}

Hello, C# World

Készítsünk programot, amely a konzolról bekéri a felhasználó nevét és életkorát, majd üdvözli őt!

32ÓE-NIK-AII, 2016

Page 33: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Írjon programot, amely bekéri egy téglalap két szomszédos oldalának hosszát, majd kiszámolja és kiírja a képernyőre a téglalap kerületét és területét!

Gyakorló feladat

33ÓE-NIK-AII, 2016

Page 34: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

Írjon programot, amely bekér egy hőmérséklet értéket Celsius fokban, majd konvertálja azt Fahrenheit fokra.

A Celsius és Fahrenheit skála közötti áttéréshez használja a következő összefüggést:

[°F] = [°C] * 9/5 + 32

Gyakorló feladat

34ÓE-NIK-AII, 2016

Page 35: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

class Program{

static void Main(string[] args){

;}

}

Gyakorló feladat

Hány utasítás van az alábbi kódban?(A megoldáshoz ne használjon Visual Studio fejlesztői környezetet!)

35ÓE-NIK-AII, 2016

Page 36: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

using System;

namespace Feladat{

class Program{

static void Main(string[] args){

;;;;;Console.WriteLine(); ;;;}

}}

Gyakorló feladat

Lefordítható-e az alábbi program?(A megoldáshoz ne használjon Visual Studio fejlesztői környezetet!)

36ÓE-NIK-AII, 2016

Page 37: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

using System;

namespace Feladat{

class Program{

static void Main(string[] args){

........... gyerekekSzáma = 123; //tudjuk, hogy a gyerekek száma 10 és 200 közötti szám lehet

........... méretMiliméterben = 1000; // tudjuk, hogy az emberek mérete akár 2,2 méter is lehet

........... folyóSzámlaEgyenleg = -144; // tudjuk, hogy a folyószámlán lévő pénzősszeg lehet negatív is, utalva tartozásra

}}

}

Gyakorló feladat

Milyen típusok kerülhetnek a pontozott helyekre?(A megoldáshoz ne használjon Visual Studio fejlesztői környezetet!)

37ÓE-NIK-AII, 2016

Page 38: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

using System;

namespace Feladat{

class Program{

static void Main(string[] args){

Console.WriteLine("\\\t\\t");}

}}

Gyakorló feladat

Mit látunk a konzolon, ha futtatjuk az alábbi programot?(A megoldáshoz ne használjon Visual Studio fejlesztői környezetet!)

38ÓE-NIK-AII, 2016

Page 39: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0 ÓE-NIK-AII, 2016 39

Programozás I.

Microsoft Visual Studio 2013Hello C# World!Változók típusaiGyakorló feladatokAlgoritmus alkotási feladatok

Page 40: Programozás I.users.nik.uni-obuda.hu/.../Prog1NL01_v01.pdf · Programozás I. Microsoft Visual Studio 2013 Hello C# World! Változók típusai Gyakorló feladatok Algoritmus alkotási

V 1.0

1. Írja le a másodfokú egyenlet megoldási algoritmusát pszeudokóddal!Írja meg a feladat megvalósítását C#-ban is!

2. Adott két síkbeli pont: P1(x1,y1) és P2(x2,y2). Keressük a két adott ponton áthaladó egyenesen az x0 abszcisszájú pont y0 koordinátáját. Adjon algoritmust a feladat megoldására!

3. Készítsen algoritmust, mely eldönti, hogy egy adott év szökőév-e vagy sem!

4. Készítsen algoritmust, mely megadja, hogy egy adott év adott hónapja hány napból áll!

5. Készítsen algoritmust, mely egy pozitív egész számról eldönti, hogy prím-e vagy sem!

6. Készítsen algoritmust, mely bekéri egy tankör hallgatóinak zh eredményeit és kiszámítja azok átlagát!

Algoritmusok gyakorlása

40ÓE-NIK-AII, 2016