Kurs programowania w C#

Ten kurs nie aspiruje do kompletnego przedstawienia wszystkich aspektów języka C#.
Jest to kurs połączony z listą zadań. Jeżeli przerobisz wszystkie zadania to będziesz umieć programować w C#.
Będziesz mógł np. tworzyć swoje własne niesamowite gry Unity 3D.

Kurs zawiera wszystkie zagadnienia potrzebne do wykonania listy zadań z programowania w C#.

Jak uczyć się z tego kursu?

Powinieneś najpierw zapoznać się z treścią zadania z listy.
Następnie powinieneś wykonać zadanie w oparciu o własną wiedzę lub posiłkując się materiałami z kursu.
Jeżeli nie jesteś w stanie wykonać zadania, to zapoznajesz się z kluczem odpowiedzi.
Następnie jeszcze raz wykonujesz zadanie.

Kurs jest przeznaczony dla wszystkich chcących uczyć się programowania w C#  – nie zależnie od wieku.
Możesz być uczniem szkoły podstawowej, gimnazjum , liceum, studentem lub osoba dorosłą chcącą stać się programistą.

Używam języka nieformalnego i skrótów myślowych, tak by materiał był zrozumiały dla osób początkujących.

Kurs nie jest zakończony. Co tydzień jest rozbudowywany.

Zapraszam do fascynującej przygody z programowaniem w C#.

Konrad Dylewski

 

Wiersz poleceń – konsola Windows CMD – podstawowe komendy

cmd – wywołanie konsoli
dir – wyświetla zawartość katalogu
cd nazwa_katalogu – przejście do katalogu zawartego w aktywnym katalogu
md nazwa_katalogu – tworzenie nowego katalogu
cd c:\ – przejście do katalogu C
del nazwa_pliku – usuwanie pliku
ipconfig – możesz sprawdzić swoje IP
ipconfig/all – dokładne informacje o kartach sieciowych
ping nazwa_strony/IP – testowanie łączności ze strona internetową lub serwerem

 

 

Utworzenie pierwszego programu w C# przy użyciu konsoli CMD

Uruchom konsolę Windows. Przejdź do folderu w którym chcesz tworzyć programy w C#.
Utwórz plik o nazwie main wpisując: notepad main.cs

W pliku tym wpisz poniższy kod i zapisz zmiany.

using System;
class Program
{
   static void Main()
   {
      System.Console.WriteLine("Hello!");
   }
}

 

Kompilacja pierwszego programu w konsoli

Wpisz następującą komendę w konsoli:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc main.cs

Wersja kompilatora na twoim systemie może być różna od v4.0.30319 Jeżeli jest inna to skoryguj ją, sprawdzając wersję kompilatora na swoim komputerze w lokalizacji C:\Windows\Microsoft.NET\Framework\v4.0.30319.

 

Uruchomienie programu z konsoli

Znajdując się w folderze w którym znajduje się nasz program wpisz main lub main.exe

 

Uruchamiamy plik .exe przez kliknięcie w niego myszką, bez używania konsoli.

Program się uruchamia ale po chwili się zamyka, dlaczego?
Umieść na końcu programu kod, który powoduje, że konsola się nie zamyka do puki użytkownik nie naciśnie jakiegoś klawisza:

System.Console.ReadKey();

 

Strona internetowa, która pomaga nam debugować błędy

repl.it

Ta strona jest dobra na początek. Możesz używać jej też wtedy, gdy nie masz na komputerze zainstalowanego Visual Studio np. w bibliotece.

Pamiętaj, że najlepszym środowiskiem do programowania w C# jest Visual Studio. Im szybciej zaczniesz go używać tym lepiej. Visual Studio jest bezpłatne.
Na stronach typu repl.it uruchomisz poprawnie tylko najprostsze projekty.

Komentarze

Komentarz jednowierszowy zaczyna się od //

Komentarz wielowierszowy wygląda następująco:

/*
 * To jest komentarz wielowierszowy.
 * Jak ci się on podoba?
 */

Typy zmienne

int – liczby całkowite
long – liczby duże
float – liczby z ułamkami
double – liczby z ułamkami ale mamy większą dokładność
decimal – do obliczeń wartości pieniężnych
string – napis
char – znak
bool – wartość logiczna, przyjmuje wartość true albo falce

 

Zakresy typów danych

int -2,147,483,648 do 2,147,483,647

long -9,223,372,036,854,775,808 do 9,223,372,036,854,775,807

ulong 0 do 18,446,744,073,709,551,615

 

Deklaracja zmiennej typu long

long stanKonta = 22L;

 

Przypisywanie wartości do zmiennych

string imie = "Konrad";
double wzrost = 177.50;
int rok = 2018;
bool czyMamKlucz = true;

 

Sumowanie i przypisywanie wartości zmiennych do innej zmiennej

decimal skarbonka = 327.30;
decimal znalezione = 36.90;
decimal odMamy = 50;
decimal razem =  skarbonka + znalezione +  odMamy;

 

Łączenie zmiennych z napisami „stringami”

System.Console.WriteLine("Masz: " +  wzrost +  " wzrostu.");
System.Console.WriteLine("{0}, lat {1}, {2} cm wzrostu", "Jan Kowalski", 42, 170);

Inna metoda. Interpolacja łańcucha znaków.

int x = 3;
int y = 4;
Console.WriteLine($"to jest {x} a to jest {y}.");

 

Instrukca warunkowa

if (wzrost > 179)
{
   System.Console.WriteLine("Jesteś wysoki.");
}
else if (wzrost < 180 && rozmiar > 169)
{
   System.Console.WriteLine("Masz średni wzrost.");
}
else if (wzrost < 170 && rozmiar > 20)
{
   System.Console.WriteLine("Jesteś niski.");
}
else 
{
   System.Console.WriteLine("Podałeś nieprwidłową wartość.");
}

 

Operator porównania ==

Jeżeli chcesz porównać dwie wartości używaj == operatora porównania. Jeżeli obie wartości są różne to wynikiem porównania jest true (prawda).
W przeciwnym razie wynikiem jest false.
Jeżeli napiszesz = to przypiszesz  zmiennej inną wartość. Dojdzie do nieprzewidywalnych i trudnych do wyłapania błędów.

 

Jak sprawdzić czy wartości są różne?

Tym operatorem != możesz porównać czy wartości są różne.  Jeżeli są różne to wynikiem porównania jest true (prawda).

 

Operator && – and

Ten operator oznacza „i”. Obie wartości muszą być prawdziwe aby całe wyrażenie było prawdziwe.

 

Operator || – or

Ten operator oznacza „lub”. Jeden z dwóch wartości musi być prawdziwy aby całe wyrażenie było prawdziwe.

 

Inkrementacja

Jest to zwiększanie wartości zmiennej o 1.

int zmienna;

zmienna++;

Dekrementacja

Jest to zmniejszanie wartości zmiennej o 1.

int rok;

rok--;

Zwiększanie wartości zmiennej o inną wartość niż 1

int coTrzeci=0;

Console.WriteLine(coTrzeci);

coTrzeci += 3;

Console.WriteLine(coTrzeci);

 

Pętla while

W tej pętli warunek jest najpierw sprawdzany. Musi być prawdziwy aby uruchomił się kod wewnątrz pętli.

int i = 0;
while (i < 5)
{
   System.Console.WriteLine(i++);
}

 

Pętla do while

Ta pętla minimalnie raz się uruchomi. Następnie sprawdzany jest warunek, jeżeli nadal zwraca on prawdę, to ponownie uruchomi się kod z wewnątrz pętli.

int k=6;
do
{
   Console.WriteLine(k);
   k++; 
} while(k<6);

Na ekranie konsoli wyświetli się: 6

 

Pętla for

for (int k=0; k <5; k++)
{
   System.Console.WriteLine(k);
}

 

Break i continue

int b = 0;
do {
   b += 2;
   if (b == 12)
      break;
   else if ((b == 4) || (b == 10))
      continue;
    Console.WriteLine(b);
} while (true); // wyświetli się tylko 2,6,8

Uruchomienie powyższego kodu wyświetli tylko 2, 6 i 8.
break – powoduje całkowite zakończenie działania pętli.
continue – powoduje przerwanie jednego wykonania pętli.

 

Pętla foreach – instrukcja switch i goto

Pętli foreach używamy jeżeli chcemy przeglądnąć wszystkie elementy tablicy.

Instrukcji switch możemy używać zamiast instrukcji if else, dla uzyskania bardziej czytelnego kodu.

Instrukcja goto pozwala na sztywno uruchomić kod.

Przeanalizuj poniższy program:

using System;
class Program
{
   static void Main()
   {
      string[] pets = { "dog", "cat", "bird" };

      foreach (string value in pets)
      {
         switch (value)
         {
            case "dog":
               Console.Write("Pies");
               goto default;
            case "cat":
               Console.WriteLine("Kot");
               break;
            case "bird":
               Console.WriteLine("Ptak");
               break;
            default:
               Console.WriteLine(" to moj przyjaciel.");
               break;
         }
 
      }
   }
}

Jeżeli chcesz przejść do sekcji o etykiecie innej niż default, zastosuj składnię:

goto case "cat";

 

 

 

Operator modulo %

Oblicza resztę z dzielenia.
Np. 10 % 2 = 0
10 % 3 = 1
7 % 3  = 1

 

Pobieranie „stringu”, napisu wpisanego z klawiatury

string imie = Console.ReadLine();

 

Pobieranie jednego znaku

char znak = Console.ReadKey().KeyChar;

 

Pobieranie liczby wpisanej z klawiatury

int rozmiar = int.Parse(Console.ReadLine());


Może też być int32.Parse

 

Jak zrobić znak nowej lini wewnątrz stringu?

\n przejście do nowej lini

\t znak tabulacji

\” znak cudzysłowia

 

Literał

Jeżeli chcesz aby wszystko wyświetlało się literalnie to przed stringiem użyj @

Console.WriteLine(@" /\  /\  /\
/  \/  \/  \");

Przed znakiem ” musisz i tak użyć \”

 

Jak wyświetlić datę i godzinę?

Użyj boblioteki:

using System.Globalization;

utwórz zmienną:

DateTime localDate = DateTime.Now;

Wypisz czas i godzinę na ekranie.

System.Console.WriteLine(localDate);

 

Wypisanie samej daty lub godziny

using System.Globalization;
namespace ConsoleApp13
{
   class Program
   {
      static void Main(string[] args)
      {
         string x = DateTime.Now.ToLongDateString();
         string y = DateTime.Now.ToLongTimeString();
         Console.WriteLine(x);
         Console.WriteLine(y);
         Console.ReadLine();
    }
  }
}

Efekt działania kodu:

 

Zmiana koloru tekstu w konsoli

Console.ForegroundColor = ConsoleColor.Green;

 

Resetowanie koloru tekstu

Console.ResetColor();

 

Zmiana koloru tła konsoli

Console.BackgroundColor = ConsoleColor.DarkBlue;

Resetowanie koloru tła konsoli

Console.ResetColor();

Ta metoda resetuje kolor tła i zarazem kolor czcionki.

Drugi sposób – resetuje same tło:

Console.BackgroundColor = ConsoleColor.Black;

Ukrycie kursora

W konsoli miga kursor. Czasami warto go ukryć, np. gdy robimy grę.

Pod który do tego służy:

Console.CursorVisible = false;

 

Czyszczenie konsoli

Console.Clear();

 

Emisja dźięku

Console.Beep(200, 1000);

200 to częstotliwość dźwięku.
Może być ona od 37 do 33767 herzów.
Nie wszystkie częstotliwości są słyszalne przez człowieka.
Niektóre mogą mieć niekorzystny wpływ na człowieka, np. mogą wywoływać ból głowy.

Druga wartość to czas, przez który będzie emitowany dźwięk. 1000 oznacza 1 sekundę.

 

Losowanie liczby od 1 do 10

Random random = new Random();

int liczba losowa = random.Next(1,10);

 

Natychmiastowe zamknięcie programu

Ta metoda działa w Visual Studio. Na repl.it nie zadziała.

Environment.Exit(0);

 

Wczytywanie niestandardowych znaków

W wyszukiwarce Windows wpisz tablica znaków.

Wyszukaj odpowiedni znak np: uśmiechnięta buźka.

Wypisanie buźki w konsoli:

Console.WriteLine("\u263A");

\u oznacza że jest to znak unicode

263A to numer buźki.

 

Sprawdzanie długości stringu (napisu)

string miasto = „Londyn”;
Console.WriteLine(miasto.Length);     // Wyswietli sie 6

 

Porównanie dwóch stringów

int comparison = string.Compare("Tak", "nie", true);
Console.WriteLine(comparison);

W powyższym przykładzie porównujemy dwa wyrazy: Tak i nie. oba stringi są takie same (wielkość liter jest nieistotna) to otrzymamy zero.
Jeżeli stringi się różnią to otrzymamy 1.

 

Metoda ToLower()

string tx1 = "HELLO";
Console.WriteLine(tx1.ToLower());

Ten kod wyświetli na ekranie napis: hello.

 

Wyszukiwanie frazy w tekście przy użyciu metody IndexOf

 string tekst = "Ala ma kota. Ala lubi zwierzeta.";
 string szukaj = "Ala";
 Console.WriteLine(tekst.IndexOf("kota"));

W konsoli wyświetli się: 7, ponieważ napis „kota” znaleziony został na siódmej pozycji w tekście (notacja amerykańska).

Console.WriteLine(tekst.IndexOf(szukaj));

W konsoli wyświetli się: 0, ponieważ „Ala” została znaleziona na samym początku tekstu.

Console.WriteLine(tekst.IndexOf("pies"));

W konsoli wyświetli się: -1, ponieważ „pies” nie występuje w tekście.

 

Zamiana liczby na string (napis)

int liczba =12309;
string tekst;
tekst = liczba.ToString();

 

Jak odczytać jedną konkretną literę ze stringu (z napisu)?

string tekst = „Myśl pozytywnie”;
Console.WriteLine(text[0]);    // Zostanie wyświetlona litera M. Pierwsza litera ma indeks zero. Notacja amerykańska.
Console.WriteLine(text[3]);    // Zostanie wyświetlona litera l

 

Usuwanie liter ze stringu

Możesz usunąć jedną literę z napisu:

using System;

class MainClass {
   public static void Main (string[] args) {
 
   string c="Ala3ma";
   Console.WriteLine(c.Remove(0,1));

   }
}

Wynik tego programu to: la3ma

Możesz usunąć kilka liter ze stringu zaczynając od konkretnego miejsca:

using System;

class MainClass {
   public static void Main (string[] args) {
 
   string c="Ala3ma";
   Console.WriteLine(c.Remove(0,3));

  }
}

Wynik tego programu to: 3ma

Notacja amerykańska a europejska

Notacja amerykańska polega na liczeniu od zera.
Notacja europejska polega na liczeniu od jeden.

 

Tablica jednowymiarowa

Tworzenie tablicy jednowymiarowej o 5-ciu elementach.

 int[] tablica = new int[5];

Przypisanie wartości do każdego elementu tablicy:

 tablica[0] = 1;
 tablica[1] = 10;
 tablica[2] = 4;
 tablica[3] = 166;
 tablica[4] = 199;

Zwróć uwagę, że pierwszy element tablicy ma zawsze indeks zero a nie jeden (notacja amerykańska).

Wypisanie w konsoli elementu tablicy o indeksie 2.

Console.WriteLine (tablica[2]);

 

Tablica dwuwymiarowa

Deklaracja i inicjalizacja tablicy dwuwymiarowej.

 string[,] tablica = new string[2, 3];

Przypisanie wartości do każdego elementu tablicy. Tabela przechowuje dane pracowników. Imię, nazwisko i stanowisko pracy.

 tablica[0, 0] = "Adam";
 tablica[0, 1] = "Kowalski";
 tablica[0, 2] = "pracownik fizyczny";
 tablica[1, 0] = "Ewa";
 tablica[1, 1] = "Nowak";
 tablica[1, 2] = "pracownik biurowy";

Wyświetlenie tekstu z wartościami pobranymi z tablicy.

Console.WriteLine("Nagrode otrzyma {2}: {0} {1}", tablica[1, 0], tablica[1, 1], tablica[1, 2]);

 

Metoda String.ToCharArray()

Ta metoda pozwala rozbić string (napis) na osobne znaki i przypisać te znaki kolejnym elementom tablicy. Dzięki temu można odwoływać się do poszczególnych liter tekstu.

string text="Ala ma kota.";
char[] znaki;
znaki = text.ToCharArray();
Console.WriteLine ("9-ty znak tekstu to: " + znaki[9]);

Wynikiem tego kodu jest wyświetlany napis:
9-ty znak tekstu to: t

 

Metoda Convert.ToDoube

Ta metoda pozwala konwertować daną wartość np. tekst na liczbę zmiennoprzecinkową.

string tekst = "55.76";
double wartosc = Convert.ToDouble(tekst);
Console.WriteLine (wartosc + " * 2 = " + wartosc*2);

Wynikiem jego kodu jest wyświetlenie:
55.76 * 2 = 111.52

 

Konwersja znaku (char) do liczby całkowitej (int)

Najpierw musisz zamienić char na string, a dopiero potem na integer.

int liczba;
char znak = '1';
liczba = int.Parse(znak.ToString()) ;

 

Instrukcja try-catch

Instrukcja ta próbuje wykonać kod z bloku try.  Jeżeli w wyniku próby doszłoby do błędu to program przechodzi do sekcji catch i uruchamia jego kod.

try
{
   odp = Convert.ToDouble(Console.ReadLine());
}
catch
{
   Console.WriteLine ("Wpisano nieprawidłowy napis. Naciśnij dowolny klawisz aby zamknąć program.");
   Console.ReadKey();
   Environment.Exit(0);
}

Ten kod próbuje konwertować wczytany z klawiatury tekst na liczbę zmiennoprzecinkową.
Jeżeli jednak zostanie wpisana niepoprawna wartość np. ddj450, której nie można konwertować na double to zostanie wyświetlony napis:
Wpisano nieprawidłowy napis. Naciśnij dowolny klawisz aby zamknąć program.
Następnie program po wciśnięciu dowolnego klawisza się zamknie.

 

 

Metoda statyczna bez parametrów i nie zwracająca żadnej wartości

W aplikacji konsolowej wszystkie metody muszą być statyczne, ponieważ metoda Main jest statyczna. Dlatego każda nowa metoda ma słowo static.
Słowo void oznacza, że metoda nic nie zwraca.

using System;
namespace ConsoleApplication2
{
   class Program {
      static void Main(string[] args)
         {
            Alert();
         }
      static void Alert()
         {
            Console.WriteLine("Jest Alarm!");
         }
    }
}

 

Metody z parametrami, która coś zwraca

 

using System;
namespace ConsoleApplication2
{
   class Program {
      static void Main(string[] args)
      {
         int a = Dodawanie(2, 3);
         Console.WriteLine(a); 
      }

      static int Dodawanie(int x1, int x2)
      {
         return x1 * x2;
      }
   }
}

 

Przeciążanie metod

Piszemy kilka metod o tej samej nazwie. Jedyna różnica jest w parametrach.
Możemy wywołać metodę bez parametrów, z jednym lub kilkoma.
Każde wywołanie powoduje inny efekt.

Przeanalizuj poniższy przykład. Usuń parametry z linijki, która wywołuje metodę Wypisz(). Pogrubiłem je w kodzie.
Zmiana kolorów na stronie Repl.it jest nie widoczna. Skompiluj program w konsoli.

using System;
namespace ConsoleApplication2
{
   class Program {
      static void Main(string[] args)
      {
         Wypisz("Ala", 5, "Green");
      }

      static void Wypisz()
      {
         Console.WriteLine("Nic nie podales!");
      }
 
      static void Wypisz(string tekst)
      {
         Console.WriteLine(tekst);
      }
 
      static void Wypisz(string tekst, int ileRazy)
      {
         for(int i = 0; i < ileRazy; i++)
            Console.WriteLine(tekst);
      }
 
      static void Wypisz(string tekst, int ileRazy, string kolor)
      {
         if (kolor == "Green")
            Console.ForegroundColor = ConsoleColor.Green; 
         for(int i = 0; i < ileRazy; i++)
            Console.WriteLine(tekst);
         Console.ForegroundColor = ConsoleColor.White; 
      }
   }
}

 

Efekt działania powyższego kodu:

 

Pobieranie treści strony internetowej

Aby było to możliwe należy załączyć bibliotekę System.Net

Poniżej znajduje się program, który łączy się ze stroną internetową i przypisuje jej treść do zmiennej a następnie wyświetla treść strony w konsoli.

program ten nie skompiluje się na repl.it. do kompilacji użyj Visual Basic.

 

using System;
using System.Net;

namespace ConsoleApp9
{
   class Program
   {
      static void Main(string[] args)
      {
         var client = new WebClient();
         var text = client.DownloadString("https://www.bitmarket.pl/");
         Console.WriteLine(text);
         Console.ReadKey();
      }
   }
}

 

Losowanie znaków (char’ów)

 

Poniżej przedstawiam kod potrzebny do wylosowania znaku (char) z małych liter alfabetu, bez polskich znaków.

 Random _random = new Random();
 int num = _random.Next(0, 26); 
 char let = (char)('a' + num);
 Console.WriteLine(let);

 

Zapis do pliku

Pamiętaj o dopisaniu w głównej sekcji using System.IO;

Poniższy program zapiszę nazwę użytkownika i hasło do pliku 1.txt.
Jeżeli taki plik nie istnieje to zostanie on utworzony.

Zauważ, że w adresie stosujemy dwa backslash’e. \\
Adres można zapisać na dwa sposoby:
C:\\Users\\Konrad\\Desktop\\1.txt
C:/Users/Konrad/Desktop/1.txt


Zastosowaliśmy instrukcję try catch. Jeżeli uda się zapisać dane do pliku to dostaniemy o tym informację.
Jeżeli się nie uda to też zostaniemy o tym poinformowani.
strumień zapisu do pliku został zamknięty. Zastosowaliśmy w tym celu sw.Close();

Ta linijka kodu – Console.WriteLine(e.Message); – wypisze nam co poszło nie tak, np. brak dostępu do katalogu.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace ConsoleApp12
{
   class Program
   {
      static void Main(string[] args)
      {
         string userName = "Alex";
         string password = "Haslo880";
         try
         {
            using (StreamWriter sw = new StreamWriter(File.Create("C:\\Users\\Konrad\\Desktop\\1.txt")))
            {
               sw.WriteLine(userName);
               sw.WriteLine(password);
               sw.Close();
            }
         Console.WriteLine("Zapiasało się!");
         }
         catch (Exception e)
         {
            Console.WriteLine("Coś poszło nie tak");
            Console.WriteLine(e.Message); }

         Console.ReadLine();
      }
   }
}


Odczyt z pliku

Tez używaj System.IO
Jest podobnie jak z zapisem ale nie stosujesz StreamWriter lecz StreamReader.
Używasz też poleceń File.Open i FileMode.Open
Do stringów a i b przypisano wartość string.Empty;
Oznacza to, że stringi mają przypisaną wartość pustą, która nic nie zawiera.
Dzięki temu można odwoływać się a takiej zmiennej, nawet jeżeli nic jej w programie nie przypiaaliśmy.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace ConsoleApp12
{
   class Program
   {
      static void Main(string[] args)
      {
         string a= string.Empty, b = string.Empty;
         try
         {
            using (StreamReader sr = new StreamReader(File.Open("C:\\Users\\Konrad\\Desktop\\1.txt", FileMode.Open)))
            {
               a = sr.ReadLine();
               b = sr.ReadLine();
               sr.Close();
            }
            Console.WriteLine("Odczytano:\nUżytkownik: " + a + "\nHasło: " + b);
         }
         catch (Exception e)
         {
            Console.WriteLine("Coś poszło nie tak");
            Console.WriteLine(e.Message);
         }
         Console.ReadLine();
       }
    }
 }

 

Zegar który co 1 sekundę się odświeża

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp13
{
   class Program
   {
      static void Main(string[] args)
      {
         Console.CursorVisible = false; // Tu ukryłem wyświetlanie kursora
         string x = DateTime.Now.ToLongDateString();
         string y = DateTime.Now.ToLongTimeString();
         for(int i=0; i<100000;)
         {
            y = DateTime.Now.ToLongTimeString();
            if (x!=y)
            {
               Console.Clear();
               Console.WriteLine(y);
               x = DateTime.Now.ToLongTimeString();
               i++;
            }
         } 
      }
   }
}

Powyższy kod działa tak, że mamy dwie zmienne x i y, którym przypisujemy wartość czasu.
Następnie w pętli, przypisujemy zmiennej y nowy czas.
Czas badamy z dokładnością co do sekundy.

Jeżeli w końcu czas x i y różnią się to czyścimy konsolę, wypisujemy y.
Następnie x przypisujemy też ten nowy czas.

Efekt jest taki, że widzimy zegar, który się aktualizuje co sekundę.

 

Czekaj jedną sekundę. Zatrzymanie działania programu – wątku na jedną sekundę

Aby móc zatrzymać działanie programu na 1 sekundę musisz zaimportować na początku programu:

using System.Threading.Tasks;

Poniższy program wypisuje co jedną sekundę wartość zmiennej i.

using System;
using System.Threading.Tasks;

namespace ConsoleApp7
{
   class Program
   {
      static void Main(string[] args)
      {
         for (int i=0; i<20; i++)
         {
            System.Threading.Thread.Sleep(1000);
            Console.WriteLine("Hello World!" + i);
         }
      }
   }
}

 

Wątki

Są po to by np. w jednej grze poruszał się przeciwnik, jednocześnie byśmy mogli my sami się  poruszać i niezależnie od nas zmienia się pogoda.

Wątki nie czekają na siebie, działają niezależnie.

Na początku programu zadeklaruj.

using System.Threading;
using System.Threading.Tasks;

Stworzenie nowego wątku wywołującego metodę cosRobi

Thread watek1 = new Thread(cosRobi);

Zdefiniowanie metody cosRobi()

 static void cosRobi()
 {
 for(int i=0; i<10; i++)
 Console.WriteLine("drukuje"); 
 }

Wywołanie – uruchomienie wątku watek1

watek.Start();

Poniżej przedstawiam cały kod programu:

using System;
using System.Threading;
using System.Threading.Tasks;

class MainClass {
   public static void Main (string[] args) {

      Thread watek = new Thread(cosRobi);
      watek.Start();
      }
 
      static void cosRobi()
      {
         for(int i=0; i<10; i++)
         Console.WriteLine("drukuje"); 
      }

}


Potęgowanie

Pamiętaj, że wynik tej metody jest typu double.

Math.Pow(liczba, potęga);
ddd

Dodawanie odwołania – Add References

Jeżeli chcesz by program łączył się np. z bazą MySQL to musisz dodać do programu odwołanie (referencję).

Wykonujesz tę czynność w Visual Studio.

Na początku musisz pobrać plik na komputer, który użyjesz później do instalacji referencji.

Kliknij prawym przyciskiem myszy w element zaznaczony czerwoną strzałką.
Następnie klikaj lewym przyciskiem myszy w elementy oznaczone żółtymi strzałkami.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *