C / C++ / C# / C-objective - kroz Pawn Lang : Entry Masterclass

Započeo markosimic, Avgust 18, 2024, 04:40:19 PRE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.



C, C++, C#, C-objective kroz Pawn Lang : Entry Masterclass.
pod autorskim pravima od strane Marko Simić.

Ova tema sadrži sadržaj vezan za: C, C++, C#, C-objective.


1. C Programming Language

Korisni Linkovi

Šta je to C ?
C je opšti programski jezik koji se široko koristi za razvoj softvera, uključujući sistemski softver, operativne sisteme, i ugrađene sisteme. Kao osnovni jezik, C postavlja temelje za druge napredne jezike kao što su C++ i C#.

C je poznat po svojoj jednostavnosti, efikasnosti i kontroli koju pruža programeru nad hardverom. Kroz korišćenje varijabli, funkcija, petlji, i drugih osnovnih koncepata, C omogućava razvoj aplikacija koje direktno komuniciraju sa hardverom.

Osnove C-a
#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

- Objasnjene
#include <stdio.h> Direktiva preprocesora koja uključuje standardnu biblioteku za ulaz i izlaz.
int main() Funkcija koja označava početak izvršavanja programa.
printf("Hello, World!\n"); Funkcija za ispisivanje teksta na ekran.
return 0; Oznaka uspešnog završetka programa.


2. C++ Programming Language

Korisni Linkovi

Šta je to C++ ?
C++ je nadogradnja C jezika koja donosi objektno orijentisane funkcionalnosti. Ovo omogućava razvoj složenih i efikasnih aplikacija, uključujući igre, uređivače teksta, i sisteme za upravljanje bazama podataka.

C++ kombinuje snagu C-a sa fleksibilnošću objektnog modela, omogućavajući programerima da koriste klase, nasleđivanje, polimorfizam, i druge napredne koncepte u razvoju aplikacija.

Osnove C++-a
#include <iostream>

class Pozdrav {
public:
    void pozdrav_svet() {
        std::cout << "Zdravo, Svete!" << std::endl;
    }
};

int main() {
    Pozdrav p;
    p.pozdrav_svet();
    return 0;
}

- Objasnjene
#include <iostream> Direktiva preprocesora koja uključuje biblioteku za unos i ispis.
class Pozdrav { } Definicija klase sa javnim metodom za ispisivanje pozdrava.
std::cout Koristi se za ispisivanje teksta na konzolu.


3. C# Programming Language

Korisni Linkovi

Šta je to C# ?
C# je moderni, višenamenski programski jezik razvijen od strane Microsoft-a. C# je snažno tipiziran, objektno orijentisan jezik koji se koristi za razvoj širokog spektra aplikacija, od web aplikacija do igara.

C# integriše karakteristike jezika poput C++ i Jave, pružajući programerima robustan alat za razvoj aplikacija na .NET platformi.

Osnove C#-a
using System;

class Program {
    static void Main() {
        Console.WriteLine("Zdravo, Svete!");
    }
}

- Objasnjene
using System; Direktiva koja uključuje System biblioteku za ulaz i izlaz.
static void Main() Glavna metoda gde započinje izvršavanje programa.
Console.WriteLine() Metoda za ispisivanje teksta na konzolu.


4. Objective-C Programming Language

Korisni Linkovi

Šta je to Objective-C ?
Objective-C je objektno orijentisan programski jezik koji je bio osnovni jezik za razvoj aplikacija za macOS i iOS. Naslednik je C jezika, proširujući ga sa funkcionalnostima objektno orijentisanog programiranja.

Objective-C dodaje dinamičke funkcionalnosti i omogućava kreiranje klasa, objekata, i poruka, što omogućava razvoj složenih i fleksibilnih aplikacija.

Osnove Objective-C-a
#import <Foundation/Foundation.h>

@interface Pozdrav : NSObject

(void)pozdravSvet;
@end
@implementation Pozdrav

(void)pozdravSvet {
    NSLog(@"Zdravo, Svete!");
}
@end
int main() {
    @autoreleasepool {
        Pozdrav *p = [[Pozdrav alloc] init];
        [p pozdravSvet];
    }
    return 0;
}

- Objasnjene
#import <Foundation/Foundation.h> Direktiva za uključivanje Foundation biblioteke.
@interface Pozdrav : NSObject Definicija klase koja nasledjuje NSObject.
- (void)pozdravSvet; Definicija metode u Objective-C stilu.


Poređenje PAWN-a sa C, C++, C#, i Objective-C



Struktura programa

PAWN:
public OnGameModeInit() {
    printf("Zdravo, Svete!\n");
    return 1;
}
C:
#include <stdio.h>

int main() {
    printf("Zdravo, Svete!\n");
    return 0;
}
C++:
#include <iostream>

int main() {
    std::cout << "Zdravo, Svete!" << std::endl;
    return 0;
}
C#:
using System;

class Program {
    static void Main() {
        Console.WriteLine("Zdravo, Svete!");
    }
}
Objective-C:
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSLog(@"Zdravo, Svete!");
    }
    return 0;
}
Objašnjenje:

U PAWN-u, OnGameModeInit je početna funkcija koja se poziva pri inicijalizaciji. U ostalim jezicima, standardna funkcija main služi istoj svrsi.
]


Deklaracija i inicijalizacija varijabli

PAWN:
new broj = 10;
new tekst[64] = "Zdravo, Svete!";
C:
int broj = 10;
char tekst[64] = "Zdravo, Svete!";
C++:
int broj = 10;
std::string tekst = "Zdravo, Svete!";
C#:
int broj = 10;
string tekst = "Zdravo, Svete!";
Objective-C:
int broj = 10;
NSString *tekst = @"Zdravo, Svete!";

Objašnjenje:

U PAWN-u koristimo new za deklaraciju varijabli. U ostalim jezicima, varijable su deklarisane sa tipovima kao što su int za cele brojeve i string za tekst.



Petlje

PAWN:
for (new i = 0; i < 10; i++) {
    printf("Broj: %d\n", i);
}

new i = 0;
while (i < 10) {
    printf("Broj: %d\n", i);
    i++;
}
C:
for (int i = 0; i < 10; i++) {
    printf("Broj: %d\n", i);
}

int i = 0;
while (i < 10) {
    printf("Broj: %d\n", i);
    i++;
}
C++:
for (int i = 0; i < 10; i++) {
    std::cout << "Broj: " << i << std::endl;
}

int i = 0;
while (i < 10) {
    std::cout << "Broj: " << i << std::endl;
    i++;
}
C#:
for (int i = 0; i < 10; i++) {
    Console.WriteLine("Broj: " + i);
}

int i = 0;
while (i < 10) {
    Console.WriteLine("Broj: " + i);
    i++;
}
Objective-C:
for (int i = 0; i < 10; i++) {
    NSLog(@"Broj: %d", i);
}

int i = 0;
while (i < 10) {
    NSLog(@"Broj: %d", i);
    i++;
}

Objašnjenje:

Petlje u PAWN-u koriste sintaksu sličnu C-u. for i while petlje funkcionišu na sličan način kao u ostalim jezicima.



Višedimenzionalni nizovi

PAWN:
new niz[2][3] = {
    {1, 2, 3},
    {4, 5, 6}
};
C:
int niz[2][3] = {
    {1, 2, 3},
    {4, 5, 6}
};
C++:
int niz[2][3] = {
    {1, 2, 3},
    {4, 5, 6}
};
C#:
int[,] niz = {
    {1, 2, 3},
    {4, 5, 6}
};
Objective-C:
int niz[2][3] = {
    {1, 2, 3},
    {4, 5, 6}
};

Objašnjenje:

Višedimenzionalni nizovi su u osnovi slični u svim jezicima, i koriste se za skladištenje tabličnih podataka.



Stringovi

PAWN:
new tekst[64] = "Zdravo, Svete!";
C:
char tekst[64] = "Zdravo, Svete!";
C++:
std::string tekst = "Zdravo, Svete!";
C#:
string tekst = "Zdravo, Svete!";
Objective-C:
NSString *tekst = @"Zdravo, Svete!";

Objašnjenje:

U PAWN-u, stringovi se koriste kao nizovi karaktera sa ograničenom veličinom. U C-u i C++-u, stringovi su takođe nizovi karaktera, dok C++ i C# koriste klase sa bogatijim funkcijama za rad sa stringovima.



Funkcije

PAWN:
stock Zdravo() {
    printf("Zdravo, Svete!\n");
}

public OnGameModeInit() {
    Zdravo();
    return 1;
}
C:
void Zdravo() {
    printf("Zdravo, Svete!\n");
}

int main() {
    Zdravo();
    return 0;
}
C++:
void Zdravo() {
    std::cout << "Zdravo, Svete!" << std::endl;
}

int main() {
    Zdravo();
    return 0;
}
C#:
void Zdravo() {
    Console.WriteLine("Zdravo, Svete!");
}

static void Main() {
    Zdravo();
}
Objective-C:
- (void)zdravo {
    NSLog(@"Zdravo, Svete!");
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        [self zdravo];
    }
    return 0;
}

Objašnjenje:

Funkcije su u osnovi slične u svim jezicima, s različitim sintaksama za definisanje i pozivanje. PAWN koristi stock za definiranje funkcija koje su dostupne u celom programu.



Tajmeri

PAWN:
public OnGameModeInit() {
    SetTimer("TajmerFunkcija", 1000, true);
    return 1;
}

public TajmerFunkcija() {
    printf("Tajmer funkcioniše!\n");
}
C:

C ne nudi ugrađeni tajmer; obično se koristi sa funkcijama iz sistemskih biblioteka ili dodatnim bibliotekama za rad sa vremenskim intervalima.

C++:
#include <iostream>
#include <thread>
#include <chrono>

void TajmerFunkcija() {
    while (true) {
        std::this_thread::sleep_for(std::chrono::seconds(1));
        std::cout << "Tajmer funkcioniše!" << std::endl;
    }
}

int main() {
    TajmerFunkcija();
    return 0;
}
C#:
using System;
using System.Timers;

class Program {
    static void TajmerFunkcija(Object source, ElapsedEventArgs e) {
        Console.WriteLine("Tajmer funkcioniše!");
    }

    static void Main() {
        Timer timer = new Timer(1000);
        timer.Elapsed += new ElapsedEventHandler(TajmerFunkcija);
        timer.Start();
        Console.ReadLine();
    }
}
Objective-C:
#import <Foundation/Foundation.h>

void TajmerFunkcija(NSTimer *timer) {
    NSLog(@"Tajmer funkcioniše!");
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                                          target:nil
                                                        selector:@selector(TajmerFunkcija:)
                                                        userInfo:nil
                                                         repeats:YES];
        [[NSRunLoop currentRunLoop] run];
    }
    return 0;
}

Objašnjenje:

U PAWN-u, SetTimer funkcija omogućava lako postavljanje tajmera. U ostalim jezicima, tajmeri se obično implementiraju koristeći specifične biblioteke i API-je.



Povratne vrednosti

PAWN:
stock Saberi(int a, int b) {
    return a + b;
}

public OnGameModeInit() {
    new rezultat = Saberi(5, 10);
    printf("Rezultat: %d\n", rezultat);
    return 1;
}
C:
int Saberi(int a, int b) {
    return a + b;
}

int main() {
    int rezultat = Saberi(5, 10);
    printf("Rezultat: %d\n", rezultat);
    return 0;
}
C++:
int Saberi(int a, int b) {
    return a + b;
}

int main() {
    int rezultat = Saberi(5, 10);
    std::cout << "Rezultat: " << rezultat << std::endl;
    return 0;
}
C#:
int Saberi(int a, int b) {
    return a + b;
}

static void Main() {
    int rezultat = Saberi(5, 10);
    Console.WriteLine("Rezultat: " + rezultat);
}
Objective-C:
int Saberi(int a, int b) {
    return a + b;
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        int rezultat = Saberi(5, 10);
        NSLog(@"Rezultat: %d", rezultat);
    }
    return 0;
}

Objašnjenje:

Povratne vrednosti funkcija su slične u svim jezicima, ali sintaksa za deklaraciju i pozivanje funkcija može se razlikovati.



Operator if-else

PAWN:
new broj = 10;

if (broj > 5) {
    printf("Broj je veći od 5\n");
} else if (broj == 5) {
    printf("Broj je 5\n");
} else {
    printf("Broj je manji od 5\n");
}
C:
int broj = 10;

if (broj > 5) {
    printf("Broj je veći od 5\n");
} else if (broj == 5) {
    printf("Broj je 5\n");
} else {
    printf("Broj je manji od 5\n");
}
C++:
int broj = 10;

if (broj > 5) {
    std::cout << "Broj je veći od 5" << std::endl;
} else if (broj == 5) {
    std::cout << "Broj je 5" << std::endl;
} else {
    std::cout << "Broj je manji od 5" << std::endl;
}
C#:
int broj = 10;

if (broj > 5) {
    Console.WriteLine("Broj je veći od 5");
} else if (broj == 5) {
    Console.WriteLine("Broj je 5");
} else {
    Console.WriteLine("Broj je manji od 5");
}[
/code]
[b]Objective-C:[/b]
[code]
int broj = 10;

if (broj > 5) {
    NSLog(@"Broj je veći od 5");
} else if (broj == 5) {
    NSLog(@"Broj je 5");
} else {
    NSLog(@"Broj je manji od 5");
}

Objašnjenje:

if-else struktura je slična u svim jezicima, sa malim razlikama u sintaksi.



Završna Reč

Nadam se da ste kroz ovaj masterclass, koji je posebno prilagođen apsolutnim početnicima, stekli osnovno razumevanje C-a, C++-a, C#-a i C-objective-a.
Verujem da sada imate solidnu osnovu za dalji razvoj i istraživanje u svetu softwer programiranja.
Ako imate dodatnih pitanja ili vam je potrebna pomoć, slobodno ostavite komentar ispod.
Želim vam puno uspeha i radujem se vašim budućim projektima.

Srdačan pozdrav, Marko Simić
HTML / CSS / Javascript / Inspect : Entry Masterclass.
ReactJS / Tailwind CSS / PWA / Axios / SCSS / Redux, ViteJS : Entry Masterclass.
C / C++ / C# / C-objective - kroz Pawn Lang : Entry Masterclass
Grupisano Pravljenje Objekata : Filterscript.


Sta je to web development?
To je nesto ono kao, kako bih to rekao, izgubis volju za zivotom i zelis da se ubijes, ali to je okej.
Onda jednostavno shvatis da si bio glup i resis problem, das sam sebi lajk,
skuvas NES 3u1 i pripremis se za sledeci projekat.

svaka ti cast, zaslusujes veci rank na ovom forumu definitivno.

Nigdje nije spomenut null terminator za C stringove. Nigdje nema objasnjena realna razlika izmedju jezika. Za C# nigdje nije spomenut garbage collection, da je C# High Level jezik za razliku od C/C++ koji su Low Level. Da C i C++ kompajluju u masinski kod dok C# u CLR to jest ima JIT i VM. Da recimo C# ima bounds check na runtime i baca exception dok C/C++ nemaju to i dolazi do neocekivanog ponasanja i crasheva. O objektno orijentisanom necu ni da pocinjem, to nema veze s vezom. Spominju se razne biblioteke ali nigdje nema objasnjeno sta i kako, sta je STD i to da postoje 3rd party libraries koje rade iste stvari (obicno mnogo lakse/bolje). Mislim koristi se chrono ali nigdje da je to STD (standard) C++ library za baratanje sa veremenom (random primer).

Ukratko obican copy/paste bog zna odakle, pola stvari izvucene van konteksta, napisano pun kurac a na kraju nista sto se moze razumijeti. O objektno orijentisanom necu ni da pocinjem, ne znam ni zasto je spomenuto...

Citat: Bit Frosty poslato Avgust 18, 2024, 10:15:00 PRE PODNENigdje nije spomenut null terminator za C stringove. Nigdje nema objasnjena realna razlika izmedju jezika. Za C# nigdje nije spomenut garbage collection, da je C# High Level jezik za razliku od C/C++ koji su Low Level. Da C i C++ kompajluju u masinski kod dok C# u CLR to jest ima JIT i VM. Da recimo C# ima bounds check na runtime i baca exception dok C/C++ nemaju to i dolazi do neocekivanog ponasanja i crasheva. O objektno orijentisanom necu ni da pocinjem, to nema veze s vezom. Spominju se razne biblioteke ali nigdje nema objasnjeno sta i kako, sta je STD i to da postoje 3rd party libraries koje rade iste stvari (obicno mnogo lakse/bolje). Mislim koristi se chrono ali nigdje da je to STD (standard) C++ library za baratanje sa veremenom (random primer).

Ukratko obican copy/paste bog zna odakle, pola stvari izvucene van konteksta, napisano pun kurac a na kraju nista sto se moze razumijeti. O objektno orijentisanom necu ni da pocinjem, ne znam ni zasto je spomenuto...

Ne znam koji deo Entry nisi razumeo u samom naslovu, kao naznaku na nivo. Ovo je za apsolutne pocetnike, kroz standardna objasnjenja i usporedbu samog Pawn. Ovo nije nikakav tutorijal, nije kako se sta koristi, bukvalno je entry, znaci informativno za sve koji znaju Pawn a hteli bi uvideti razliku izmedju svega ovoga i toga. Objasnjena je razlika veoma lepo sa prikazom izmedju njih, a sobzrom da sam pisao isti u cetiri ujutro, moze biti neka i greska.
Nisam pomenuo dosta toga jer smatram da nije bitno za ovaj nivo, prvenstveno nisam neko ko se bavi tim jezicima, niti bih mogao da ja pricam o tome ista vise od entry levela, ali ipak imam dovoljno da mogu mozda zainteresovati nekoga.

Kao i svaki masterclass ovog levela koji sam postavio, svrha nije da ti ovde nesto naucis, nego da se informises. Web Development nemam sa cime da uporedim nikome ovde, pre svega sto nema dodirne tacke pa imam punu slobodu. Ovde sam se direktno bazirao na prikaz razliku izmedju - izmedju. Nije svrha da od ovoga postanes genije, nego da razumes informativno ono sto je potrebno, ako radis Pawn da znas razlike u nekim prostim stvarima.

Ne nije copy/paste zato sto sam ja licno ulozio svoje vreme i napisao ovo, kao sto sam napisao i dva prethodna, u istom formatu jer tako lepse izgleda.

Ti ukoliko zelis bolje da objasnis, napravis slobodno svoju temu i ja cu je zakaciti. No nesto ne vidim da je na forumu nesto to bilo, niti makar za zainteresuje ljude.

Uzivaj mi i budi pozdravljen, stvarno ne zelim da pricam dalje o ovome, iz razloga zato sto nema poente. Ovo je entry nivo, na tom nivou je napravljeno. Mozda sam u dva prosla ipak dao vise informacija, jer je bazirano na direktno samo na to, dok ovo ipak nije.
Poslednja Izmena: Avgust 18, 2024, 16:09:13 POSLE PODNE od markosimic
HTML / CSS / Javascript / Inspect : Entry Masterclass.
ReactJS / Tailwind CSS / PWA / Axios / SCSS / Redux, ViteJS : Entry Masterclass.
C / C++ / C# / C-objective - kroz Pawn Lang : Entry Masterclass
Grupisano Pravljenje Objekata : Filterscript.


Sta je to web development?
To je nesto ono kao, kako bih to rekao, izgubis volju za zivotom i zelis da se ubijes, ali to je okej.
Onda jednostavno shvatis da si bio glup i resis problem, das sam sebi lajk,
skuvas NES 3u1 i pripremis se za sledeci projekat.