Tamás Ferenc: Programozási tételek
Tisztelt informatika (új nevén: digitális kultúra) iránt érdeklődők!
Pár éve jelent meg a "Bevezetés a Visual C# programozási nyelvbe felhasználói szemmel" c. könyvem az ISZE kiadó jóvoltából. Nemrégen megjelent a második kiadása is. Egyre többen kérdezik, hogy miért nem adok ki hozzá egy tételgyűjteményt is?! Ez a cikk-sorozat szeretné ezt az olvasói kérést teljesíteni.
Fontos: ez a programozási tételek nem bevezető jellegű olvasmány! Bár igyekeztem kommentelni sok mindent, de ez még kevés a teljes megértéshez. Arra kérem, hogy az oldalt látható borítójú könyvet rendeljék meg az www.isze.hu holnapról!
Ez a 30 tételből álló gyűjtemény szeretné az általános programozási tételeket feldolgozni. Használható középiskolai tanításhoz informatika, szakmai informatika, illetve digitális kultúra tantárgyakhoz. Referencia anyagként felsőfokú tanulmányokhoz is bátran javaslom.
Ezen felül a megújult érettségiben az emelt szintű digitális kultúra „B” tétele egy rövid programozási tétel vagy feladat lesz. Ezek a tételek igyekeznek lefedni ezt az igényt.
Tisztelt Olvasó! A mellékelt tételek csupán az egyik lehetséges megoldást mutatják. Nem állítom, hogy ez a legjobb megoldás, főleg nem azt, hogy az egyetlen jó megoldás. Kérem, ha Ön bármilyen kommentárt vagy kiegészítést szeretne ezekhez fűzni, akkor azt nyugodtan írja meg a tferi (kukac) tferi (pont) hu e-mail címre.
Még egy kérés! Nem kevés munkám van az oldalban, többek között ebben a tételsorban is. Szeretném továbbra is fenntartani az oldal reklám-mentességét. Kérem, ha elégedett az oldal tartalmával, akkor támogassa az oldal további működését! Ettől függetlenül a támogatás elsődleges forrása a Visual C# könyv megrendelése.
Revolut számlával rendelkezők számára: revolut.me/ferencmkkm
Kérésre az összegről szívesen kiállítok számlát is!
Ez esetben kérem, hogy vegye fel velem e-mailben a kapcsolatot!
Köszönettel: Tamás Ferenc
- tétel: Minimum kiválasztása
- tétel: Maximum kiválasztása
- tétel: Szöveg hosszának megadása
- tétel: Szöveg hosszának megadása fájlból
- tétel: Összegzés fájlból
- tétel: Megszámolás fájlból
- tétel: Eldöntés fájlból
- tétel: Átlagszámítás fájlból
- tétel: Prímszámok
- tétel: Fibonacci számok
A 2. rész eléréséhez kattintson IDE!
A 3. rész eléréséhez kattintson IDE!!
1. tétel: Minimum kiválasztása
Feladat: Írjon egy programot szöveges környezetben, mely bekér és eltárol 10 egész számot, majd kiválasztja a legkisebbet, melyet a legvégén ki is ír. Beolvasáskor feltételezheti, hogy mindig a megfelelő értékeket kapja. A működő programot és a kódot mutassa be tanárának!
Egy lehetséges megoldás Visual C# nyelven:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 1tetel { class Program { static void Main(string[] args) { //1. tétel: Minimumkiválasztás int[] sor = new int[11]; //Ebben tároljuk el a számokat string s; //Beolvasáshoz szükséges Console.WriteLine("Kérem adja meg a számokat, soronként egyet!"); for (int i = 1; i <= 10; i++) { Console.Write("Kérem a(z) {0}. számot: ",i); s = Console.ReadLine(); //Beolvasás sor[i] = Convert.ToInt32(s); //Konverzió } Console.WriteLine("\nA legkisebb bevitt érték: {0}",sor.Min()); Console.WriteLine("A program futása véget ért!"); } } }
2. tétel: Maximum kiválasztása
Feladat: Írjon egy programot szöveges környezetben, mely bekér és eltárol 10 egész számot, majd kiválasztja a legnagyobbat, melyet a legvégén ki is ír. Beolvasáskor feltételezheti, hogy mindig a megfelelő értékeket kapja. A működő programot és a kódot mutassa be tanárának!
Egy lehetséges megoldás Visual C# nyelven:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 2tetel { class Program { static void Main(string[] args) { //2. tétel: Maximumkiválasztás int[] sor = new int[11]; //Ebben tároljuk el a számokat string s; //Beolvasáshoz szükséges Console.WriteLine("Kérem adja meg a számokat, soronként egyet!"); for (int i = 1; i <= 10; i++) { Console.Write("Kérem a(z) {0}. számot: ",i); s = Console.ReadLine(); //Beolvasás sor[i] = Convert.ToInt32(s); //Konverzió } Console.WriteLine("\nA legnagyobb bevitt érték: {0}",sor.Max()); Console.WriteLine("A program futása véget ért!"); } } }
3. tétel: Szöveg hosszának megadása
Feladat: Írjon egy programot szöveges környezetben, mely bekér egy pár szavas szöveget, majd írja ki a szöveg teljes hosszát, valamint azt is, hogy hány space karakter volt a szövegben! A működő programot és a kódot mutassa be tanárának!
Egy lehetséges megoldás Visual C# nyelven:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 3tetel { class Program { static void Main(string[] args) { //3. tétel: Szöveg hosszának kiírása string s; //Ebbe kérjük be a szöveget! Console.Write("Kérem a szöveget begépelni!"); s = Console.ReadLine(); Console.WriteLine("\nA szöveg teljes hossza: {0} karakter.",s.Length); int db = 0; //Space darabszáma. for (int i = 0; i < s.Length; i++) { if (s[i] == ' ') { db++; } } Console.WriteLine("Space darabszáma: {0}",db); Console.WriteLine("A program futása véget ért!"); } } }
4. tétel: Szöveg hosszának megadása fájlból
Feladat: Írjon egy programot szöveges környezetben, mely beolvas egy szöveget a SZOVEG.TXT fájlból, majd írja ki a szöveg teljes hosszát, valamint azt is, hogy hány space karakter volt a szövegben! Feltételezheti, hogy fájl létezik és a szöveg csak egyetlen sorból áll. A működő programot és a kódot mutassa be tanárának!
Egy lehetséges megoldás Visual C# nyelven:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; //Ez kell a fájlműveletekhez namespace 4tetel { class Program { static void Main(string[] args) { //4. tétel: Szöveg hosszának kiírása fájlból StreamReader bevisz = new StreamReader("SZOVEG.TXT"); string s; //Ebbe kerül be a szöveg! s = bevisz.ReadLine(); //Szöveg beolvasása bevisz.Close(); //Fájl bezárása Console.WriteLine("\nA szöveg teljes hossza: {0} karakter.",s.Length); int db = 0; //Space darabszáma. for (int i = 0; i < s.Length; i++) { if (s[i] == ' ') { db++; } } Console.WriteLine("Space darabszáma: {0}",db); Console.WriteLine("A program futása véget ért!"); } } }
A SZOVEG.TXT fájl egy lehetséges tartalma:
ISZE = Informatika-Számítástechnika Tanárok Egyesülete
1133, Budapest, Kárpát utca 11. I/8.
Tel.: +36-1/462-04-15
E-mail: Ez az e-mail-cím a szpemrobotok elleni védelem alatt áll. Megtekintéséhez engedélyeznie kell a JavaScript használatát.
5. tétel: Összegzés fájlból
Feladat: Írjon egy programot szöveges környezetben, mely beolvas max. 100 egész számot az ADAT.TXT fájlból, majd összegezze a beolvasott számokat. Írja ki, hogy hány számot olvasott be, majd írja ki a számok összegét is. Feltételezheti, hogy a fájl létezik, legalább 1 szám van benne és az adatok csak egész számokat tartalmaznak, valamint minden egyes szám új sorban van. A működő programot és a kódot mutassa be tanárának!
Egy lehetséges megoldás Visual C# nyelven:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; //Ez kell a fájlműveletekhez namespace 4tetel { class Program { static void Main(string[] args) { // 5. tétel: Összegzés fájlból StreamReader bevisz = new StreamReader("ADAT.TXT"); int darab = 0; //Beolvasott számok darabszáma int osszeg = 0; //A beolvasottak összege int i; //Ideiglenes változó string s; //Beolvasáshoz segédváltozó do { s = bevisz.ReadLine(); i = Convert.ToInt32(s); //Console.WriteLine(s); //Csak tesztelésre kellett darab++; osszeg += i; } //A fájl beolvasását érdemes elöltesztelőre tenni, hogy ne szálljon el hibával. while (!bevisz.EndOfStream); bevisz.Close(); //Fájl bezárása Console.WriteLine("Beolvasott számok mennyisége: {0}",darab); Console.WriteLine("Beolvasott számok összege: {0}",osszeg); Console.WriteLine("A program futása véget ért!"); } } }
Az ADAT.TXT fájl egy lehetséges tartalma:
5 4 1 3 -2 5 6 11 9 2 8 -4 5 -2 3 0 5 -8 1
6. tétel: Megszámolás fájlból
Feladat: Írjon egy programot szöveges környezetben, mely beolvas max. 100 egész számot az ADAT.TXT fájlból. Írja ki, hogy hány számot olvasott be, majd írja ki a számok közül hány volt pozitív, illetve negatív, valamint nulla. Feltételezheti, hogy a fájl létezik, legalább 1 szám van benne és az adatok csak egész számokat tartalmazhatnak, valamint minden egyes szám új sorban van. A működő programot és a kódot mutassa be tanárának!
Egy lehetséges megoldás Visual C# nyelven:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; //Ez kell a fájlműveletekhez namespace 6tetel { class Program { static void Main(string[] args) { //6. tétel: Megszámolás fájlból StreamReader bevisz = new StreamReader("ADAT.TXT"); int darab = 0; //Beolvasott számok darabszáma int pozitiv = 0; //Pozitív számok darabszáma int negativ = 0; //Negatív számok darabszáma int zerus = 0; //Nullák darabszáma int i; //Ideiglenes változó string s; //Beolvasáshoz segédváltozó do { s = bevisz.ReadLine(); i = Convert.ToInt32(s); darab++; if (i>0) { pozitiv++; } else if (i<0) { negativ++; } else { zerus++; } } //A fájl beolvasását érdemes elöltesztelőre tenni, hogy ne szálljon el hibával. while (!bevisz.EndOfStream); bevisz.Close(); //Fájl bezárása Console.WriteLine("Beolvasott számok: {0} db", darab); Console.WriteLine("Beolvasott pozitív számok: {0} db", pozitiv); Console.WriteLine("Beolvasott negatív számok: {0} db", negativ); Console.WriteLine("Beolvasott zérusok száma: {0} db", zerus); Console.WriteLine("A program futása véget ért!"); } } }
Az ADAT.TXT fájl egy lehetséges tartalma:
Lásd az 5. tételnél!
7. tétel: Eldöntés fájlból
Feladat: Írjon egy programot szöveges környezetben, mely beolvas max. 100 egész számot az ADAT.TXT fájlból. Kérjen be a billentyűzetről egy egész számot, majd írja ki, hogy a megadott szám benne van-e a beolvasottak között. Feltételezheti, hogy a fájl létezik, legalább 1 szám van benne és az adatok csak egész számokat tartalmazhatnak, valamint minden egyes szám új sorban van. A beolvasott szám is biztosan egész lesz. A működő programot és a kódot mutassa be tanárának!
Egy lehetséges megoldás Visual C# nyelven:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; //Ez kell a fájlműveletekhez namespace 7tetel { class Program { static void Main(string[] args) { //7. tétel: Eldöntés fájlból StreamReader bevisz = new StreamReader("ADAT.TXT"); int[] szam = new int[100]; //Ebben tároljuk el a beolvasott számokat int darab = 0; //Beolvasott számok darabszáma string s; //Beolvasáshoz segédváltozó do { s = bevisz.ReadLine(); szam[darab]= Convert.ToInt32(s); darab++; } //A fájl beolvasását érdemes elöltesztelőre tenni, hogy ne szálljon el hibával. while (!bevisz.EndOfStream); bevisz.Close(); //Fájl bezárása Console.Write("Kérem adjon meg egy egész számot: "); s = Console.ReadLine(); int ellen = Convert.ToInt32(s); bool bennevan = false; //Benne van-e a keresett szám? for (int i = 0; i < darab; i++) { if (szam[i] == ellen) { bennevan = true; } } if (bennevan == true) { Console.WriteLine("A keresett szám szerepel a megadottak között."); } else { Console.WriteLine("A keresett szám nincs a megadottak között."); } Console.WriteLine("A program futása véget ért!"); } } }
Az ADAT.TXT fájl egy lehetséges tartalma:
Lásd az 5. tételnél!
8. tétel: Átlagszámítás fájlból
Feladat: Írjon egy programot szöveges környezetben, mely beolvas max. 100 egész számot az ADAT.TXT fájlból. Számolja ki a beolvasott számok átlagát, majd két tizedes jegy pontossággal írassa ki!
Feltételezheti, hogy a fájl létezik, legalább 1 szám van benne és az adatok csak egész számokat tartalmazhatnak, valamint minden egyes szám új sorban van. A beolvasott szám is biztosan egész lesz. A működő programot és a kódot mutassa be tanárának!
Egy lehetséges megoldás Visual C# nyelven:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; //Ez kell a fájlműveletekhez namespace 8tetel { class Program { static void Main(string[] args) { //8. tétel: Átlagszámítás fájlból StreamReader bevisz = new StreamReader("ADAT.TXT"); int[] szam = new int[100]; //Ebben tároljuk el a beolvasott számokat int darab = 0; //Beolvasott számok darabszáma int osszeg = 0; //A számok összege string s; //Beolvasáshoz segédváltozó do { s = bevisz.ReadLine(); szam[darab]= Convert.ToInt32(s); osszeg = osszeg+ szam[darab]; darab++; } //A fájl beolvasását érdemes elöltesztelőre tenni, hogy ne szálljon el hibával. while (!bevisz.EndOfStream); bevisz.Close(); //Fájl bezárása Console.WriteLine("A beolvasott számok átlaga: {0,6:.00}", (double)osszeg/darab); //Max. 6 számjegy lesz és két tizedesjegyet iratunk ki. Console.WriteLine("A program futása véget ért!"); } } }
Az ADAT.TXT fájl egy lehetséges tartalma:
Lásd az 5. tételnél!
9. tétel: Prímszámok
Feladat: Algoritmussal számolja ki az első harminc prímszámot, majd írassa is ki a képernyőre! A működő programot és a kódot mutassa be tanárának!
Egy lehetséges megoldás Visual C# nyelven:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 9tetel { class Program { static void Main(string[] args) { //9. tétel: Prímszámok int[] sor = new int[31]; //Ebben tároljuk el a prímszámokat Console.Write("A program kiszámolja, majd kiírja az első harminc prímszámot.\n\n2"); int x = 3; //Itt tart a számolás. sor[1] = 2; //Az első prímszámot megadjuk. int itt = 1; //Jelenleg itt tart az index bool oszthato = false; //Oszthatóság jelzője do { for (int i = 1; i <=itt; i++) { //Ezt lehetne hátultesztelő ciklussal is, de így talán egyszerűbb. if (x % sor[i] == 0) { oszthato = true; } } if (!oszthato) { //Console.WriteLine("Nem osztható!"); itt++; sor[itt] = x; Console.Write(", {0}",sor[itt]); } x += 2; //Ez a következő szám lesz, amit kipróbálunk. oszthato = false; } while (itt<30); Console.WriteLine("\n"); Console.WriteLine("A program futása véget ért!"); } } }
10. tétel: Fibonacci számok
Feladat: Algoritmussal számolja ki az első ötven Fibonacci számot, majd írassa is ki a képernyőre! Minden 10. szám után iktasson be egy sortörést! A működő programot és a kódot mutassa be tanárának!
(Az 1. Fibonacci szám az 1, a 2. Fibonacci szám is az 1, majd minden következő szám az előz kettő összege. Így: f1=1; f2=1; f3=2; f4=3; f5=5; f6=8; stb.)
Egy lehetséges megoldás Visual C# nyelven:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 10tetel { class Program { static void Main(string[] args) { //10. tétel: Fibonacci számok long[] fib = new long[51]; //Ebben tároljuk el a Fibonacci számokat //Nem lesz elég a sima int, mivel túl nagy az utolsó pár szám! Console.Write("A program kiszámolja, majd kiírja az első ötven Fibonacci számot.\n\n1, 1, "); fib[1] = 1; fib[2] = 1; //Az első két számot megadjuk. for (int i = 3; i < 50; i++) { fib[i] = fib[i - 1] + fib[i - 2]; Console.Write(" {0}, ",fib[i]); if (i % 10 == 0) { Console.WriteLine("\n"); } } Console.WriteLine("\n"); Console.WriteLine("A program futása véget ért!"); } } }