Strona Główna
OCENY1
Juz niedługo
Linux ubuntu
Strona www
instalacja apache
apt-get install apache2
konfiguracja apache w ten sposób
http://www.mojadres.pl/~nazwa_usera.
Włączenie modułu:
a2enmod userdir
su $user
mkdir ~/public_html && chmod 0755 ~/public_html
exit
Kurs C++
Wprowadzenie.
Cześć! Ten kurs pomoże Ci zrozumieć jak programować bez żadnej wiedzy/doświadczenia.
Stworzyłem go dla osób które chcą się przygotować na egzamin z programowania i mam nadzieję że Tobie pomoże.
Autorzy kursu:
Jakub Pajor
mgr. Andrzej Pławecki
Czym jest C++? Bądź czym może być? To pytanie też sam sobie zadawałem i znalazłem odpowiedź. Jest to zmiana z języka jakiego widzimy na język C a potem na język asemblera i dopiero z asemblera na kod binarny. Schemat:
C++ -> C -> Asembler -> kod binarny
Stworzył go w 1983 roku Bjarne Stroustrup, poprzez ulepszenie języka C. Był to przełom w jego czasach. Jest on używany do dzisiaj, np. napisano w nim grę Counter Strike Global Offensive o której na pewno Słyszaleś/aś.
Kompilatory - czym są i ich rodzaje.
Kompilator to program który zamienia kod C++ na kod binarny. Tylko jak on działa? Krótko opiszę jak:
"tekst" dostaje parser który zamienia "tokeny" (np. '{' ) na polecenia dla kompilera.
Polecenia są zamieniane na język C a potem na język asemblera.
Na sam koniec Linker dosłownie scala pliki z kodem asemblera i zmienia na kod binarny, dodając biblioteki z jakich "korzysta" dany kod.
Rodzaje najważniejszych kompilatorów:
cross-compilery (cross-platoform-compiler) - kompilery które mogą kompilować na innej platformie niż są uruchomione
bootstrap compilery - kompilują w języku w którym są napisane
Najpopularniejsze compilery:
GCC - GNU Compiler Collection (cross-platform)
(link)
MSVC Compiler (bootstrap compiler)
(link)
Środowiska programowania.
Najpopularniejsze z nich:
- Dev-C++
(link)
- Code Blocks
(link)
- Microsoft Visual Studio
(link)
#1 Pierwsze kroki i zmienne
! zmienne !
double - zmienna z miejscami po przecinku
float - zmienna rzeczywista (podobna do double)
int - liczba całkowita
string - tekst
short - krótsza wersja int
long - dłuższa wersja int
char - pojedynczy znak
bool / boolean - zmienna bitowa (zawiera 1 albo 0)
Prosty program do wyświetlania tekstu:
////////////////////////////////////////
#include <iostream>
using namespace std;
int main() {
cout << "przykladowa wiadomosc\n";
return 0;
}
////////////////////////////////////////
#include <iostream> // definiujemy że używamy biblioteki "iostream"
using namespace std; // definiujemy że używamy namespace standard o skrócie std
int main() { // startowa funkcja i początek bloku
cout << "przykladowa wiadomosc"; // wyświetlamy przykładową wiadomość
return 0; // kończymy działanie programu statusem 0
} // koniec bloku startowej funkcji
Zadanie 1: Napisz program który wyświetli Twoje imię oraz nazwisko.
Zadanie 2: Napisz program który wyświetli Imiona całej klasy. Do tego zadania użyj tokenu '\n' do napisania w kolejnej linijce kodu.
Zadanie 3: Napisz program który wyświetli pole kwadratu o boku 7.
#2 Wyjście i wejście
std::cout // wyjście
std::cin // wejście
////////////////////////////////////////
int main() {
std::cout << "Wprowadz bok kwadratu: ";
double bok;
std::cin >> bok;
std::cout << "Pole kwadratu wynosi " << (bok * bok) << "\n";
}
////////////////////////////////////////
int main() {
std::cout << "Wprowadz bok kwadratu: "; // komunikat
double bok; // definiujemy zmienną o nazwie "bok"
std::cin >> bok; // zmienna "bok" przyjmuje wartość wprowadzoną przez użytkownika
std::cout << "Pole kwadratu wynosi " << (bok * bok) << "\n"; // komunikat oraz operacja mnożenia (bok * bok)
}
Zadanie 1: Napisz program który wyświetli pole trójkąta o boku N, gdzie N to liczba wprowadzona przez użytkownika
Zadanie 2: Napisz program który wyświetli pole prostokąta o bokach N oraz H, gdzie N oraz H to liczby wprowadzone przez użytkownika
Zadanie 3: Napisz program który wyświetli liczbę 3 razy większą niż N, gdzie N to liczba wprowadzona przez użytkownika
#3 operacje matematyczne
operacje wbudowane:
- "+" - dodawanie
- "-" - odejmowanie
- "*" - mnożenie
- "/" - dzielenie
- "%" - reszta z dzielenia
wybrane operacje z biblioteki <math.h>:
- sin(X) - sinus X
- cos(X) - cosinus X
- tan(X) - tanges X
- sqrt(X) - pierwiastek 2. stopnia z X
Zadanie 1: Napisz program który wyświetli pole sześcianu o boku N, gdzie N to liczba wprowadzona przez użytkownika
Zadanie 2: Napisz program który wyświetli pierwiastek 2. stopnia z N, gdzie N to liczba wprowadzona przez użytkownika
Zadanie 3: Napisz program który wyświetli liczbę o tan(N) większą niż N, gdzie N to liczba wprowadzona przez użytkownika
#4 Operacje logiczne
operacje logiczne:
- znak większości/mniejszości, np.
if (X > Y) {
std::cout << "X jest wieksze niz Y";
}
- znak równości, np.
if (X == Y) {
std::cout << "X jest rowne Y";
}
- znak większości/mniejszości i równości, np.
if (X >= Y) {
std::cout << "X jest wieksze niz lub rowne Y";
}
Zadanie 1: Napisz program który wyświetli czy N jest większe niż 10, gdzie N to liczba wprowadzona przez użytkownika
Zadanie 2: Napisz program który wyświetli czy N jest większe niż 20 i czy jest mniejsze niż 50, gdzie N to liczba wprowadzona przez użytkownika
Zadanie 3: Napisz program który wyświetli czy N jest mniejsze lub równe 2137, gdzie N to liczba wprowadzona przez użytkownika
#5 zmienna string
Najciekawszą zmienną jest string - w skrócie tekst. Najczęstsze operacje w niej to:
- size() - długość tekstu
- pop_back() - usuwamy ostatnią literę
- operator "+=" - dodaje tekst do zmiennej string
Przykładowe zastosowanie zmiennej string:
int main() {
std::cout << "Wprowadz przykladowy tekst: ";
std::string tekst;
std::cin >> tekst;
std::cout << "Wprowadzony tekst to: \n" << tekst << "\n";
}
Zadanie 1: Napisz program który wyświetli N bez 4 ostatnich liter, gdzie N to tekst wprowadzony przez użytkownika
Zadanie 2: Napisz program który wyświetli długość M, gdzie N to tekst wprowadzony przez użytkownika
Zadanie 3: Napisz program który wyświetli słowa "dzień dobry" + N gdzie N to imię wprowadzone przez użytkownika
#6 Pętla for
Składnia pętli for :
for (zmienna; warunek; opcjonalna funkcja po wykonaniu jednego przejścia) {
}
Najczęściej używa się tego typu pętli:
for (int i = 0; i < n; i++) {
//todo
}
gdzie n to liczba powtórzeń.
Drugi (rzadziej używany) to:
for (zmienna x : vector zmiennych) {
//todo
}
W drugim typie pętli for nie trzeba definiować liczby powtórzeń, i można "zastosować" dany segment kodu dla każdej zmiennej w vectorze.
Zadanie 1: Napisz program który wyświetli N razy dowolny tekst, gdzie N to liczba wprowadzona przez użytkownika
Zadanie 2: Napisz program który wyświetli N 50 razy, gdzie N to tekst wprowadzony przez użytkownika
Zadanie 3: Napisz program który wyświetli pierwsze 5 tekstów wprowadzonych przez użytkownika
#7 Pętla while i do while
składnia pętli while:
while (warunek) {
//todo
}
składnia pętli do while:
do {
//todo
} while (warunek);
przykład nieskończonej pętli while:
while (1) {
//todo
}
przykład nieskończonej pętli do while:
do {
//todo
} while (1);
Aby opuścić pętlę w dowolnym momencie należy użyć polecenia "break". Przykładowo, jeśli chcemy 10 razy powtórzyć kod w pętli, możemy użyć iteracji. Przykład iteracji:
zmienna++ - zmienna powiększa się o 1
zmienna-- - zmienna zmniejsza się o 1
Przykład zagadnienia z zastosowaniem pętli while:
int i = 0;
while (i < 10) {
//todo - kod
i++;
}
Przykład zagadnienia z zastosowaniem pętli do while:
int i = 0;
do {
//todo - kod
i++;
} while (i < 10);
Zadanie 1: Napisz program który wyświetli N razy dowolny tekst, gdzie N to liczba wprowadzona przez użytkownika
Zadanie 2: Napisz program który wyświetli N 50 razy, gdzie N to tekst wprowadzony przez użytkownika
Zadanie 3: Napisz program który będzie wyświetlać tekst wprowadzony przez użytkownika który można zmienić w każdym momencie
#8 Konsola oraz windows.h
system(polecenie) - używa polecenie z Windows Command Prompt (cmd)
#define _WIN32_WINNT 0x0500 - definiujemy wersje minimalną wersję windows'a na której można uruchomić aplikację, w tej definicji to Windows 2000
Wszystkie definicje:
- 0x0400 // Windows NT 4.0
- 0x0500 // Windows 2000
- 0x0501 // Windows XP
- 0x0502 // Windows Server 2003
- 0x0600 // Windows Vista
- 0x0600 // Windows Vista
- 0x0600 // Windows Server 2008
- 0x0600 // Windows Vista
- 0x0601 // Windows 7
- 0x0602 // Windows 8
- 0x0603 // Windows 8.1
- 0x0A00 // Windows 10
- 0x0A00 // Windows 10
HWND - obiekt okna w windows.h
struct - definicja struktury
RECT - struktura składająca się z 4 zmiennych long
Jeśli chcemy wyczyścić okno konsoli z tekstu:
system("cls");
Jeśli chcemy zapałzować program na czas następnego wejścia z klawiatury:
system("pause");
Przykładowo gdy chcemy zablokować możliwość zmiany wysokości i szerokości okna konsoli, należy użyć:
HWND console = GetConsoleWindow(); // bierzemy instancje okna konsoli jako zmienną console
SetWindowLong(console, GWL_STYLE, GetWindowLong(console, GWL_STYLE) & ~WS_MAXIMIZEBOX & ~WS_SIZEBOX); // wyłączamy możliwość zmainy wysokości i szerokości okna konsoli
RECT consoleRect;
GetWindowRect(console, &consoleRect); // ta funkcja zmienia wartości zmiennej consoleRect na wymiary okna konsoli
MoveWindow(console, consoleRect.left, consoleRect.top, 800, 600, TRUE); // zmieniamy wysokość i szerokość okna konsoli na 800x600 pikseli
Struktury:
Składnia struktury:
struct nazwa {
zmienne
};
Przykłady:
struct vector3d {
double x;
double y;
double z;
};
struct uczen {
std::string imie;
std::string nazwisko;
};
Czyszczenie konsoli:
FreeConsole();
Proste wyświetlanie tesktu przy użyciu windows.h (MessageBox):
MessageBox(0, "komunikat", "tytul", MB_OK);
Wyświetlanie tekstu przy użyciu funkcji MessageBox:
std::wstringstream ss;
ss << zmienna;
MessageBox(0, ss.str().c_str(), "tytul", MB_OK);
Zadanie 1: Napisz program który wyświetla tekst, kasując wcześniejszy
Zadanie 2: Napisz program który wyświetla strukturę składającą się z 5 dowolnych zmiennych
Zadanie 3: Napisz program który będzie wyświetlać tekst na MessageBox, wprowadzony przez użytkownika w konsoli
#9 std::string
Biblioteka: <string>
Podstawowe operatory/polecenia z std::string :
operator += // dodaje do std::string tekst
pop_back(); // usuwa ostatnią literę/char
c_str(); // konwertuje std::string do const char*
size(); // długość tekstu
clear(); // czyści cały tekst
Dołączanie dowolnej standardowej zmiennej do string:
Biblioteka: #include <sstream>
Przykładowe łączenie zmiennej w std::string
std::stringstream ss;
ss << zmienna;
std::string str = ss.str();
#10 klasy (class)
Klasy najczęściej służą do przechowywania danych w pamięci, przykładowo:
class uczen {
private: // funkcje i zmienne prywatne
std::string name;
std::string nazwisko;
public: // funkcje i zmienne publiczne
uczen() { // konstruktor w którym można zawrzeć operacje po stworzeniu klasy
name = "Andrzej";
}
void setName(std::string a) {
name = a;
}
void setNazwisko(std::string a) {
nazwisko = a;
}
std::string getNazwisko() {
return nazwisko;
}
std::string getName() {
return name;
}
}
Najczęściej klasy zawiera się w headerach a implementacje funkcji w plikach źródłowych, np:
[klasa.h]
class uczen {
private:
std::string name;
std::string nazwisko;
public:
uczen();
void setName(std::string a);
void setNazwisko(std::string a);
std::string getNazwisko();
std::string getName();
}
[klasa.cpp]
uczen::uczen() { // konstruktor
}
void uczen::setName(std::string a) { // przykładowa funkcja ustawiająca zmienną name na zmienną argumentową
name = a;
}
void uczen::setNazwisko(std::string a) {
nazwisko = a;
}
std::string uczen::getNazwisko() { // przykładowa funkcja zwrotna
return nazwisko;
}
std::string uczen::getName() {
return name;
}
#11 std::vector i tabele
std::vector jest listą w C++
Prosta tabela zmiennych 3x3 typu int:
int zmienne[3][3];
aby użyć / zmienić z tabeli o wymiarach NxN element XxZ, gdzie N, X, Z są dodatnie:
tabela[X - 1][Z - 1]
Biblioteka:
#include <vector>
konstruktor:
std::vector<typ_zmiennej> zmienna;
lub
std::vector<int> zmienna;
Używając std::vector nie musimy znać rozmiaru by dodać element na koniec, np.
std::vector<int> zmienna; // deklaracja
zmienna.push_back(5); // dodajemy 5 na sam koniec
Użycie zmiennej z vectora vec z indexem N:
vec[N]
#12 kółko i krzyżyk
////////////////////////////////////////
#include <iostream>
#include <string>
char mem[9]; // tabela
int input; // index wybranego pola
bool player; // "kogo jest tura"
std::string player1; // imie gracza 1
std::string player2; // imie gracza 2
char winner = ' '; // kod gracza który wygrał
void printCmd() { // wyświetlanie
std::cout << "\n\n";
std::cout << " [" << mem[0] << "|1] [" << mem[1] << "|2] [" << mem[2] << "|3]\n\n";
std::cout << " [" << mem[3] << "|4] [" << mem[4] << "|5] [" << mem[5] << "|6]\n\n";
std::cout << " [" << mem[6] << "|7] [" << mem[7] << "|8] [" << mem[8] << "|9]\n\n";
std::cout << " \n";
std::cout << "Kolej gracza: [" << (player == true ? player1 : player2) << "]\n\n[1-9]>";
}
void tick() { // funkcja w której dostajemy wejście z konsoli od gracza
std::cin >> input;
if (input < 1 || input >> 9) {
std::cout << "\nWybierz liczbe od 1 do 9!\n";
return;
}
input--;
if (mem[input] != ' ') {
std::cout << "\nTo pole juz zawiera znak [" << (player == true ? "X" : "O") << "]!\n";
return;
}
if (player) {
mem[input] = 'X';
} else {
mem[input] = 'O';
}
player = !player;
}
void printWin() { // wyświetlamy zwycięzce
std::cout << "\n\n\n";
std::cout << "Wygral: " << (winner == 'X' ? player1 : player2) << "\n\n";
system("pause");
exit(0);
}
void win(char p) {
winner = p;
}
bool isWin() { // strawdzamy czy ktoś nie wygrał
// X X X
// 0 0 0
// 0 0 0
if (mem[0] == mem[1] && mem[1] == mem[2] && mem[0] != ' ') {
win(mem[0]);
return true;
}
// 0 0 0
// X X X
// 0 0 0
if (mem[3] == mem[4] && mem[4] == mem[5] && mem[3] != ' ') {
win(mem[3]);
return true;
}
// 0 0 0
// 0 0 0
// X X X
if (mem[6] == mem[7] && mem[7] == mem[8] && mem[6] != ' ') {
win(mem[6]);
return true;
}
//
// X 0 0
// X 0 0
// X 0 0
if (mem[0] == mem[3] && mem[3] == mem[6] && mem[0] != ' ') {
win(mem[0]);
return true;
}
// 0 X 0
// 0 X 0
// 0 X 0
if (mem[1] == mem[4] && mem[4] == mem[5] && mem[1] != ' ') {
win(mem[1]);
return true;
}
// 0 0 X
// 0 0 X
// 0 0 X
if (mem[2] == mem[5] && mem[5] == mem[8] && mem[2] != ' ') {
win(mem[2]);
return true;
}
//
// X 0 0
// 0 X 0
// 0 0 X
if (mem[0] == mem[4] && mem[4] == mem[8] && mem[0] != ' ') {
win(mem[0]);
return true;
}
// 0 0 X
// 0 X 0
// X 0 0
if (mem[2] == mem[4] && mem[4] == mem[6] && mem[2] != ' ') {
win(mem[1]);
return true;
}
//
return false;
}
int main() {
system("title Kolko i krzyzyk");
for (int i = 0; i < 9; i++) {
mem[i] = ' ';
}
std::cout << "Imie gracza 1 [X]: ";
std::cin >> player1;
std::cout << "Imie gracza 2 [O]: ";
std::cin >> player2;
printCmd();
while (true) {
isWin();
if (winner != ' ') {
printWin();
break;
}
if (mem[0] != ' ' && mem[1] != ' ' && mem[2] != ' ' && mem[3] != ' ' && mem[4] != ' ' && mem[5] != ' ' && mem[6] != ' ' && mem[7] != ' ' && mem[8] != ' ') {
std::cout << "\n\nREMIS!\n";
system("Pause");
break;
}
tick();
printCmd();
}
return 0;
}
////////////////////////////////////////
Windows !0
Resetowanie hasła win10
Resetowanie zapomnianego hasła do systemu Windows 10 - www.soisk.pl
odpalamy komputer z zewnętrznego nośnika i wybieramy konsolę cmd
move D:\Windows\System32\sethc.exe D:\Windows\System32\sethc.exe.bak
copy D:\windows\system32\cmd.exe D:\windows\system32\sethc.exe
5xSHIFT
net user
net user użytkownik hasło
koniec ;)
odblokowanie konta administratora: net user Administrator /active:yes
dodanie zwykłego użytkownika do grupy administratorzy: net localgroup Administratorzy użytkownik /add
można dodać nowego użytkownika: net user użytkownik /add