Nyomtatás

Tamás Ferenc: Programozási tételek

Tisztelt informatika (új nevén: digitális kultúra) iránt érdeklődők!

Csharp borító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.

Támogatás 

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

 

 

 

  1. tétel: Minimum kiválasztása
  2. tétel: Maximum kiválasztása
  3. tétel: Szöveg hosszának megadása
  4. tétel: Szöveg hosszának megadása fájlból
  5. tétel: Összegzés fájlból
  6. tétel: Megszámolás fájlból
  7. tétel: Eldöntés fájlból
  8. tétel: Átlagszámítás fájlból
  9. tétel: Prímszámok
  10. 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!");
        }
    }
}

Folytatás: ITT található!