Showing posts with label c#. Show all posts
Showing posts with label c#. Show all posts

Wednesday, April 03, 2024

Mastery of Operators in C# 12 Programming Language, Everything You Need for Efficient Coding

Operators in the C# programming language are crucial elements for shaping, manipulating, and processing data. Understanding their proper usage not only facilitates software development but also enables efficient and readable code. In this lesson, we will explore several key operators in C# 12 and how to masterfully apply them to achieve optimal performance and code clarity. Mastery in using operators in C# 12 involves understanding their characteristics, execution priorities, and proper 
application in various contexts.

Efficient coding requires clear, readable, and optimized code that utilizes operators appropriately to achieve desired results. This lesson covers key aspects of operator usage in C# 12 and provides guidelines for achieving efficient and readable code, even if some examples go beyond beginner level. Rather than confusing or demoralizing, it should serve as guidance for your future endeavors. C# is a powerful programming language that provides various operators for data manipulation. In C# 12, some new features have been added to facilitate efficient coding.

A girl is learning programming

A girl is learning programming in C# 12 programming language

For example, “Primary Constructors”, introduced in C# 12 allow creating primary constructors in any class or structure. The parameters of the primary constructor are available throughout the class body. Adding a primary constructor prevents the implicit generation of a parameterless constructor. “Collection Expressions”, with the introduction of a new syntax, allow creating common collections. This includes array initialization and collection initialization. These operators and functionalities enable programmers to write efficient and readable C# code.

However, we will learn about these concepts when we cover classes, constructors, and collections. Meanwhile, we’ll primarily introduce more important operators through practical examples to ensure better understanding. In this lesson, you’ll be typing a lot and getting accustomed to writing code extensively. In C# programming language, operators have their own precedence when they are executed. For example, multiplication will always be performed before addition. Therefore, it is necessary and safer to always use parentheses before you find yourself in a situation where operator precedence leads to an incorrect result.

int number = 4 + 5 * 6; // Result is 34

 

// You might have expected the result to be 54

// Always use parentheses to clarify expressions

 

int number = (4 + 5) * 6; // Result is 54

The computer will always perform calculations according to operator precedence unless you change it with parentheses.

Mastering Arithmetic Operators in C# 12: Efficient Calculations Made Easy

Monday, April 01, 2024

Master the Fundamentals of C# 12 Programming, How to use Variables, Data Types, and Constants in Your Projects?

In the previous lesson, we created our first C# 12 program. We learned how to print text to the Terminal panel and explored the three types of comments used in the C# programming language. Additionally, we discovered how to set attributes in the *.csproj file, which affects the entire project. We also delved into creating regions, which allow us to organize code into blocks and navigate through it easily, regardless of the number of lines of code.

Furthermore, despite the convenience of C# 12’s top-level statements, we can still create programs with the traditional Main method that you might recognize from older versions of the C# programming language. However, everything we’ve learned so far would only suffice for printing text on consoles. Programming encompasses much more than that! Let’s first focus on what programming is and what it involves.

A boy is learning C# 12 programming at home

A boy is learning C# 12 programming at home to make a game

Programming is the process of creating computer programs, where programmers use a specific language and tools to communicate with the computer. Programming is the art of writing code that enables computers to perform specific tasks and Programmers use various languages (such as C#, Python, Java, etc.) to write instructions for the computer. In any case, programming requires creativity and problem-solving skills. It goes beyond mere code writing. It involves creating solutions, thinking about problems, and communicating with computers to achieve desired functionality.

Programmers often need to devise innovative ways to tackle challenges. But how do computers actually function? Programming involves giving instructions to the computer in the form of one or more grouped lines of code, known as statements. These statements are grouped into methods, and methods into classes, to avoid code repetition in a project and enable calling previously written and tested code from other parts of the project. 

The code you write must have a purpose and be written with a significant reason. It should also be correct and optimized. Your computer will always execute exactly what you've instructed, regardless of whether it's logical. Logic and proper code writing are up to you. Learning programming usually begins with console applications. Although console applications aren’t used for creating market-ready 
programs due to their purely textual user interface, they are excellent for testing methods and classes.

Understanding Declarations, Variables, Data Types, and the Role of Constants

Sunday, March 31, 2024

Step by Step, How to Start with C# 12 Programming?

If you’ve already read the introduction in the previous lesson, take a look here. You’ve become quite familiar with what the C# programming language is, its origins, the changes it has undergone, and you probably have a rough understanding of what the .NET Framework is. If you’ve prepared for learning, made important decisions about which operating system to use, and selected an IDE - Integrated Development Environment to start with, congratulations!

Also, if you’ve successfully installed .NET version 8 (since older versions won’t allow you to code in C# 12), and executed the “Hello, World!” program with a single line of code, then welcome to our second lesson in the C# tutorial. We’ll guide you step by step, in a practical manner, through C# 12 programming.

A student is learning C# 12 programming for the first time at home

A student is learning C# 12 programming for the first time at home

C# 12 programming is a robust and powerful skill that enables the creation of everything from simple applications to complex software systems. If you’re genuinely interested and ready to dive into the world of software development, C# 12 is the right path for you. The best way to learn programming is through practice. Experiment with different concepts and techniques, tinker with code, and solve problems. Cultivate good habits and regularly visit our blog.

In this step-by-step tutorial, we’ll explore the fundamentals of C# 12 programming and provide you with everything you need to start coding your first programs effortlessly. Whether it’s a basic calculator app or a sophisticated software system, practicing project development will enhance your skills and provide valuable experience. Remember that programming is an ongoing process of learning and refinement. Stay abreast of trends, explore new technologies, and learn from your mistakes. Always remain open to new knowledge and be adaptable to change.

My First C# Program: A Journey into Coding

Friday, March 29, 2024

Embark on a Journey into Programming with the C# 12 Programming Language

The C# programming language, pronounced ‘C-Sharp’, is heralded as one of the finest in the realm of coding, fully grounded in the principles of OOP - Object-Oriented Programming. It shares a familial bond with the C and C++ languages. Conceived by Anders Hejlsberg, Scott Wiltamuth, and Peter Golde in July 2000 as part of the .NET project, it was first introduced to the public in 2002 by Microsoft Corporation.

Its acclaim stems from its simplicity, readability, ease of learning, and the remarkable capabilities it offers for programming a vast array of applications. For those delving into the basics of C#, the international ISO standard ISO/IEC 23270:2006(E) from 2006 offers a foundational understanding, while also highlighting the latest enhancements brought forth by newer versions of the language.

Since 2014, Microsoft has revolutionized the C# programming language with a transformative compiler, known today as the C# language compiler. This pivotal change introduced ‘Roslyn’, the code name for the compiler that transitioned from a closed ‘black box’ to open-source code. This shift not only democratized the development process but also paved the way for more significant enhancements to the language itself.
 
A girl learn C# 12 in a cafe

People are learning and using C# 12 everywhere, even in cafes

Now, developers witness incremental changes in code that lead to substantial reductions in coding complexity and volume, with the promise of more to come. Microsoft proactively announces numerous updates, adding to the already extensive list of improvements. The C# language is highly recommended for any programmer or aspiring coder, particularly for those who may not find programming to be their strongest suit.

Prioritizing C# for programming, learning, and professional development can significantly simplify tasks and boost productivity compared to other languages. While proficiency in multiple programming languages is essential to being considered a professional developer, C# should remain a priority due to its comprehensive features and the continuous influx of new capabilities.

Over more than two decades, C# has traversed a long journey, altering numerous coding practices and programming processes alongside the .NET Framework. Unlike C++, C# is simpler and more accessible for programming, yet it is intrinsically linked with the .NET environment, without which it cannot exist or function, rendering it marginally slower.

Deciphering C#: A Comparative Analysis with Other Programming Languages

Thursday, September 17, 2020

Klasa Random, biranje slučajnih brojeva u C# programskom jeziku

Najbolja stvar kod računara je što vas sluša. Kod njega nema ni levo ni desno, nego samo tačno kako ste mu naredili. Njegova akcija je uglavnom predvidljiva i kad ne dobijete od računara ono što očekujete to definitivno znači da ste vi pogrešili, a ne on. Ili nešto nije u redu na dubljem nivou!  Međutim, postoje situacije kad ćete hteti da računar bira jedan od više ponuđenih brojeva ili opcija. Na primer kada programirate igrice, kvizove, testove ili programirate Loto programe koji biraju brojeve umesto vas. Reći računaru da nešto izabere nije baš za njega jednostavan proces. Zato on ima specijalnu klasu Random, koja nasleđuje Object koji predstavlja generator pseudo slučajnih brojeva ili još preciznije Object koji sadrži algoritam koji stvara niz brojeva koji zadovoljavaju određene statističke zahteve za slučajnost. Zahvaljujući tome, biranje slučajnih brojeva u vašem programiranju jeste jednostavno. Vi čak ne morate ni da dodatno uvozite imenski prostor za ovu delatnost jer se Random klasa nalazi u System imenskom prostoru.  

( Random klasa je zadužena za bilo kakvo biranje slučajnih brojeva )

Da stvar bude još jednostavnija, korišćenje naredbe Random u C# programskom jeziku je mnogo jednostavnije nego u C ili C++ programskom jeziku. Metoda Next() je preklopljena i njene druge verzije vam omogućavaju da odredite minimalnu i maksimalnu vrednost opsega. Ona podrazumevano vraća pozitivan integer u opsegu od 0 do maksimalne vrednosti Int32. Ali ako odredite opseg od jednog broja do drugog, možete birati i negativne brojeve. Na primer ako hoćete da birate broj između -100 i 101 onda će te inicijalizovati metodu ovako. 

Random rnd = new Random();

rnd.Next(-100, 101);

I to je sve. I ako imate potrebu da birate više puta, dovoljno je da koristite istu rnd promenjivu čak i sa drugačijim postavkama. Nema potrebe da razmišljate da će svaki put kad izvršite ovaj kod da dobijate isti broj jer podrazumevani konstruktor za klasu Random dodeljuje generatoru slučajnih brojeva početnu vrednost koja je vremenski zavisna, tako da se smanjuje sekvenca biranja istih brojeva. Klasa Random sa njenom metodom Next() je sasvim dovoljna da precizno radite testove, iako su u nekim projektima uključeni razne vrste algoritma da bi slučajni broj bio dodatno naizmeničan broj.

Kako da napravim jednostavan program za izvlačenje Loto brojeva?

Tuesday, April 07, 2020

Funkcije u C# programskom jeziku


Prošli put smo učili Nizove u C# programskom jeziku, dok ćemo danas učiti još jednu interesantnu i korisnu stvar; funkcije. Bez obzira da li ste početnik u programiranju i bez obzira da li ste do sada učili funkcije u C# programskom jeziku, definitivno ste ih koristili čak i u vašem prvom C# programu. Funkcije predstavljaju jednu izdvojenu celinu naredbi koji izvršavaju neki zadatak. Funkcije pravite kada imate potrebu da deo koda izdvojite i stavite u jednu celinu ili kad imate potrebu da jedan deo koda više puta koristite u programu. Jednostavnije je da pišete samo jednom kod i da ga pozovete kad god vam treba nego da pišete isti kod. Na primer imate funkciju koja latinična slova konvertuje na ćirilična slova. Kad god hoćete da nešto napišete na ćirilici samo pozovete funkciju koja to radi. Isto tako na primer; kad imate neku grešku, ispravljate je samo na jednom mestu u funkciji a ne sto puta u celom kodu. Funkcije često nazivaju metodama, što one i jesu. Ali mnogo programera danas meša pojam metode sa funkcijama jer postoji razlika. Metode nisu samo funkcije, već predstavljaju i druge članove klase i strukture koji ne predstavljaju podatke. Znači metode su i indekseri, operatori, konstruktori i destruktori. Čak i svojstva se ponekad smatraju metodama, ali treba znati da svojstva imaju samo karakteristike metoda i atributa, ali svojstva nisu ni metode ni atributi. Ovo je bitno da znate najviše radi testova koji se polažu za Microsoft sertifikate. I pored toga što su funkcije u C# programskom jeziku slične funkcijama u C i C++ programskom jeziku, funkcije u C++ programskom jeziku možete pogledati ovde; one se takođe razlikuju. C# programski jezik ne podržava globalne metode. Svaku funkciju morate pisati unutar klase. U C# programskom jeziku nije moguće koristiti blokove za grupisanje modifikatora poput public ili private već se u C# programskom jeziku funkcije ali i ostale metode moraju deklarisati sa modifikatorima. Modifiers - modifikatori vam određuju rang delovanja promenjive, funkcije, strukture, metode i klase na nivou celog Solution – rešenja. Osnovni modifikatori pristupa su:
  •          Public – javan, bez restrikcija.
  •      Protected Internal – limitiran na program, klasu i izvedene klase
  •          Internal – limitiran na program i klasu
  •          Protected – limitiran na klasu i izvedene klase.
  •          Private – limitiran samo na klasu

Pored navedeni modifikatora obavezno trebate obratiti pažnju i na ključnu reč: 
  • static – omogućava da nam nije potrebno da instaciramo klasu kako bi smo pristupili članu klase

Postoje i drugi modifikatori kojima pravimo anonimne ili asinhronizovane funkcije ali o njima će biti posebno pisano u narednim postovima. 
  

( Funkcije mogu da vraćaju i ne vraćaju vrednost )

C# programskom jeziku imate jednu specijalnu funkciju, funkcije koje ne vraćaju vrednost i funkcije koje vraćaju vrednost. Svaka od njih može uzimati argumente. Specijalna funkcija ili funkcija koju poznajete kao Main() funkcija se koristi kao startna pozicija svakog programa. Može postojati samo jedna funkcija Main() u jednoj klasi ali u drugačijem imenskom prostoru.

static void Main(string[] args) {}

Ako bi ste napravili neku klasu u istom inenskom prozoru i u njoj navedenu funkciju dobili bi ste grešku:
  • Program has more than one entry point defined. Compile with /main to specify the type that contains the entry point.

Zato možete imati na primer više formi u projektu gde svaka forma ima svoju Main() funkciju, ali to je zato što svaka forma ima drugačiji imenski prostor. Takođe vidimo da Main() funkcija prihvata argumente u args niz tipa string. I takođe vidimo ključnu reč void koja nam potvrđuje da navedena funkcija ne vraća nikakvu vrednost, već se program završava kad se funkcija izvrši do kraja. Ovu funkciju nikad ne trebate menjati i posebno ne trebate da pravite neku svoju.

Funkcije koje ne vraćaju vrednost

Thursday, March 19, 2020

Nizovi u C# programskom jeziku


Već ste učili kako se deklarišu i prave promenjive i konstante i kako da iste mogu da budu različitih tipova podataka. Ukoliko se ne sećate baš najbolje te teme, možete se podsetiti na ovom postu. Znači promenjive i konstante su odlične kada imate potrebu za manje podataka, ali šta da radite ako vam na primer treba 1000 promenjivih ili čak da vi ne znate koliko će vam tačno biti potrebno promenjivih? Nećete valjda deklarisati 1000 promenjivih, na šta bi taj vaš kod ličio? Zbog takvih situacija u C# programskom jeziku ali definitivno i u svim drugim programskim jezicima postoji nešto što zovemo nizovi. U informatičkoj literaturi piše da je Array – niz fiksan broj promenjivih koje zovemo elementi. To bi se tako moglo reći samo kad je niz definisan određenim brojem elemenata. Ako mene pitate, najjednostavnije rečeno, niz vam je indeksiran skup podataka istog tipa. Sintakse nizova u C# programskom jeziku su sledeće:

Jednodimenzionalan niz:
tip [] naziv_niza;

Dvodimenzionalni niz:
tip [ , ] naziv_niza;

Višedimenzionalan niz:
tip [ , , … ] naziv_niza;

Ortogonalni niz:
tip [ ] [ ] naziv_niza:
     

Nizovi nisu ograničeni samo na osnovne tipove podataka nego se mogu deklarisati i kao klase, strukture, numeracije ili neki tip podataka kojeg ste sami napravili. Broj elemenata koji može biti u nizu zavisi od vašeg procesora ali i operativnog sistema. Negde oko 4 biliona, ali imajte u vidu da Linux operativni sistem to više ograničava nego Windows 10 operativni sistem. Moj savet vam je da nikad ne pravite tako velike nizove gde se to može izbeći. Bolje napraviti više nizova.  


( Nizovi u C# programskom jeziku prikazani mapom uma )

Ukoliko ste vi neko ko poznaje C++ programski jezik, treba da imate na umu da i pored iste svrhe nizovi u C# programskom jeziku nisu isto što i nizovi u C++ programskom jeziku, niti je njihova deklaracija ista. Ukoliko vas interesuje na koji način funkcionišu nizovi u C++ programskom jeziku pogledajte ovde. Vi što ste nekada učili Visual Basic programski jezik, sećate se da je niz predstavljao promenjiva tipa SAFEARRAY, što znači da je rad sa nizom podrazumevalo izvesno angažovanje sistema, ali je olakšavao rad sa nizovima. I ono je bolje nego što su to nizovi u CC++  programskim jezicima. Jednostavno, C# programski jezik je prevazišao neke nedostatke koje nizovi imaju i sada nizove tretira kao svaki objekat sa vlastitim metodama i svojstvima što vama olakšava rad sa nizovima. C# programski jezik podržava čak nizove u formi izričitog različitog tipa. Niz u C# programskom jeziku je sam po sebi referentni tip, čak i kad su njegovi elementi vrednosti tipovi. To znači da promenjiva niza ukazuje na neprekidan blok memorije koji sadrži elemente niza u hip memoriji kao što je to slučaj sa klasama. Međutim da sada ne bismo vas plašili i otišli previše daleko pogledajte praktičan primer kako se lako koriste nizovi.

Jednodimenzionalni nizovi

Thursday, January 30, 2020

Programerske petlje u C# programskom jeziku


Da li ste ikad čuli za interaktivne iskaze? To vam je u suštini zastrašujuća nova terminologija koja se koristi u najnovijim prevodima informatičke literature koja samo zbunjuje programere. Reč je naravno o programerskim petljama. U jednom od zadnjih postova, učili smo if i switch iskaze odlučivanja sa kojima možete da ispitate neki uslov i onda na primer da prikažete rezultat baziran na ispunjavanju iskaza na ekranu. Na primer ako osoba ima 18 ili više godina onda je osoba punoletna ali ako osoba nema 18 ili više godina onda nije. Otkucate uslov u programu i jednostavno rezultat prikažete na ekranu. Ali šta ako na primer želite da ispišete 1000 puta na ekranu da je osoba punoletna? Znam da nema nikakve logike da to radite, ali čisto radi primera; kako će te to uraditi? Nećete valjda napisati 1000 if iskaza? Ili još jednostavniji primer, kako ćete reči računaru da vam ispiše brojeve od 1 do 1000 na ekranu? Da li će te vi ispisati svaki broj u programu da se ispiše na ekranu? Da li ćete ispisati u programu 1000 redova linijskog koda da bi ste uradili tako jednostavnu stvar? Naravno, da nećete; upravo zato imamo programerske petlje koje bez obzira koliko imate iteracija ili bolje rečeno bez obzira koliko se petlja puta bude izvršavala, vi je pišete samo jednom u par linija koda. Programerske petlje jednostavno se izvršavaju koliko god je neophodno puta sve dok ne izvrše zadati uslov i na taj način izuzetno i precizno rešavaju mnogobrojne zadatke na tako jednostavan način iteracijom.

( Programerske petlje u C# programskom jeziku )

Da stvari budu još bolje, vi imate čak četiri vrste programskih petlji u C# programskom jeziku koje još više olakšavaju rešavanje bilo kojeg zadatka koji zahteva iteraciju. Međutim da bi ste to postigli takođe je potrebno da znate i kada koju od tih četiri programerske petlje da koristite. Prvo da nabrojimo koje su to četiri petlje. Prva programerska petlja je for petlja. Na primer u Visual Basic .Net programskom jeziku ista petlja se zove i for next petlja. Druga je foreach programerska petlja, treća while programerska petlja i četvrta je do while programerska petlja. Možete ih zvati i interaktivni iskaz ili na primer for statement. To je do vas ili do pravila kompanije u kojoj radite. Na primer kad radite u nekoj kompaniji ne možete da prilikom komentarisanja vašeg koda u komentaru da pišete petlja, već statement iako je retkost da neka od kompanija dozvoljava da uopšte pišete komentare na srpskom jeziku. Sve u svemu, želim da razumete da ćete u programiranju često koristiti programerske petlje, ponekad i programerske petlje u drugim programerskim petljama najčešće u radu sa nizovima o kojima ćemo pisati u nekim od sledećih postova. Za sada ćemo se koncentrisati na svaku programersku petlju ponaosob, svaka će pratiti praktični primer i objašnjenje kad je koju najbolje koristiti. Čak iako ste upoznati sa programerskim petljama, pročitajte ovaj post do kraja. Koristiće vam više nego što mislite!

Programerska petlja for

Wednesday, December 04, 2019

Iskazi Odlučivanja u C# programskom jeziku


U prethodnom postu smo učili operatore poređenja i zahvaljujući poznavanju istih mi smo danas u mogućnosti da učimo iskaze odlučivanja. Zato je važno da ne preskačete postove već da učite redom jedan za drugim. Postovi na ovom blogu su povezani i omogućavaju vam da učite programiranje korak po korak. Važno je da isprogramirate sve primere. Ukoliko vam nešto nije dovoljno jasno ili ste zaboravite nešto što smo pre učili uvek se možete vratiti na neki od prethodnih postova. Ako imate neka pitanja uvek možete me pitati ovde. Takođe, iza svakog posta možete komentarisati sve što vas interesuje. Programiranje se uči programiranjem. Ali takođe treba da budete vredni i uporni. Profesionalni programeri programiraju skoro svaki dan godinama. Mnogi od njih imaju stotine svojih vlastitih malih programa koji rešavaju neke ključne male probleme i oni tačno znaju gde, kada i šta da koriste od koda i u velikim projektima. Takođe, uvek su zainteresovani za sve što je novo, bolje, praktičnije i jednostavnije. Ono što ih pokreće jeste upornost i što su sami inovativni. Uzmite bilo koji zadatak iz matematike i pokušajte sami da ga rešite na programerski način. Kad to uradite bićete ponosni sami na sebe što ste uspeli i zaista ćete se osećati srećno. Biti programer znači biti sposoban da rešite bilo koji problem na programerski način. Čak i ako ne znate kako da nešto isprogramirate, samo korak po korak i učenjem dolazite do rešenja. Programeri stalno uče i stalno ponavljaju naučeno.


( If ... else... statement ... iskaz odlučivanja )

Iskazi odlučivanja su bazirani na uslovima. Bez obzira koliko uslov bio kompleksan on se na kraju uvek svodi na boolean operator true - tačno ili  false – netačno. U programiranju je sve tačno ili netačno, ne postoji možda. Za iskaze odlučivanja koristimo if … else … iskaze ali i druge. Sintaksa if … else... ove komande je jednostavna:

if (uslov) iskaz;

Ponekad je mnogo bolje da prethodni iskaz pišete na sledeći način.

if (uslov)
{
        iskaz = true;

}

Ovo se uglavnom radi što ponekad postoji mogućnost da ćete imati u budućnosti više iskaza, pa je bolje ostaviti prostor za njih nego prepravljati if iskaz. U nekim kompanijama ovo je takođe obavezno da radite i kad mislite da za to nema potrebe.

if (uslov)
{

        iskaz1 = true;
        iskaz2 = true;
        iskaz3 = true;

}

Ponekad možete imati uslov koji će se izvršiti jedan iskaz ako je uslov tačan dok će izvršiti drugi iskaz ako nije tačan:

if (uslov)
{
        iskaz1;

}
else
{
        iskaz2;

}

Ponekad možete imate više uslova:

if (uslov1)
{
        iskaz1;

}
else if (uslov2)
{
        iskaz2;

}
else
{
        iskaz3;

}

Ponekad ćete hteti da u jednom uslovu, postavite drugi ili više njih i to možete da radite. To se zove grananje. Skoro sva AI - Artificial Intelligence – veštačka inteligencija je bazirana na iskazima odlučivanja i to je mnogo bitna stvar nego što vi sada možete i da pretpostavite. Iskazi odlučivanja se često koriste, skoro u svakom programu i one odlučuju tok celog vašeg programa. Takođe, vi ste jedino odgovorni ukoliko imate neke greške u očekivanim rezultatima tokom grananja if… else... iskaza i niko drugi.

Praktični primer If … else iskaza

Tuesday, April 17, 2018

Uvod u LINQ

Zvanično ili formalno LINQ – Language Intergrated Query – Upit integrisan u jezik; jeste jezik struktuiranih upita za pretraživanje i lokalnih kolekcija objekta ali i udaljenih izvora podataka na takav način da ne narušava bezbednost podataka. Za mene lično LINQ je jezik struktuiranih upita koji omogućava skraćeno pisanje code-a u radu sa bilo kakvim kolekcijama i dinamičkim sastavljanjem upita. LINQ  vam omogućava da radite sa različitim izvorima podataka dok koristite isti način kodiranja. Takođe pored C# programskog jezika, LINQ koriste i drugi programski jezici koji podržavaju .Net Framework 3.5 ili noviji. Znam da vam sve ovo zvuči kompleksno i sami po sebi LINQ upiti jesu kompleksni i neophodno je da se na neki način dosta isprakticirate u korišćenju istih kako bi vam bilo jasno kolika je prednost korišćenja LINQ-a u vašem kodiranju. LINQ isključivo radi sa sekvencama i elementima. Sekvenca vam je svaki objekat koji implementira interfejs IEnumerable<T> dok je elemenat svaka stavka sekvence. To takođe znači da se LINQ upiti mogu primenjivati nad bilo kojim izvorom podataka koji primenjuje interfejs IEnumerable<T>. Međutim LINQ se takođe deli na mnogo potrebnih i opcionih delova poput LINQ provajdera, proširenih metoda, lambda izraza i sintakse za razumevanje LINQ upita.


( LINQ Arhitektura )

LINQ provajderi, poput LINQ to Objects, LINQ to Entities, LINQ to XML itd. su komponente između LINQ upita i izvora podataka koje konvertuju standardne LINQ operacije u specifične komande koje izvori podataka mogu razumeti. Npr. LINQ to SQL provajder konvertuje LINQ upite u T-SQL tako da baze podataka mogu razumeti iste. Tako da vi ne morate pisati T-SQL komande u vašem code-u kako bi ste manipulisali podacima iz baze podataka. Proširene metode koje LINQ koristi su već izgrađene metode poput Where, Select, OrderBy itd. Klazula Where se zove i operator restrikcije jer ograničava podatke u rezultatu izvršavanju upita dok klazula Select specifira podatke koji će se pojaviti kao rezultat. Lambda izrazi se opciono koriste umesto imenovanih metoda i pojednostavljuju kodiranje. Lambda izraz je kratak i koncizan način pisanja anonimnih metoda, znači metoda koji nemaju ime; koji se koriste za izvršavanje upita. Lambda operator se piše ovako => Sintakse za razumevanje LINQ  upita su opcione C# ključne reči poput from, in, where, select, desceding itd. Oni pojednostavljuju upite koje pišete.

Kako je nastao LINQ ?

Friday, April 06, 2018

Uvod u Windows forme


Znam da će se mnogi čitaoci mog bloga sada malo začuditi; zašto idem u prošlost i sad pišem o Windows formama kad se danas prave WPF aplikacije. Razloga je više ali pre svega radi vaših pitanja. Mnoga pitanja za C# koja mi postavljaju su i danas vezana za aplikacije bazirane na Windows formama. Pretpostavljam da se u školama još uvek uče Windows forme; u poslovnom svetu C++ programeri još uvek razvijaju projekte bazirane na Windows formama. Ja ću pokušati na svom blogu da pokrijem sve vrste aplikacija koje se pišu u C# programskom jeziku u narednim mesecima, iako je to mnogo komplikovano i zahtevno i trebaće mnogo vremena. Bez obzira što ja lično Windows forme smatram zastarelom tehnologijom; isto tako smatram da one i pored toga nisu za odbaciti jer sa njima imate tu dosta toga da se nauči i neke korisne stvari mogu da se takođe koriste i u drugim aplikacijama često uz neke manje izmene. Postoji i mnoge druge prednosti programiranja Windows formi, npr. brzo učenje, lakše programiranje poslovnih aplikacija, mnoštvo materijala i kontrola mnogobrojnih različitih proizvođača i mnoštvo materijala za učenje.


 ( Windows Forms Designer )

Sve u svemu što se mene tiče osim vremena, ali ja nigde ne žurim; nemam šta da izgubim; dok korist od ovih postova će te vi videti i sami. Npr. mnogo ljudi ne zna code koji šalje dokument na štampanje i slične stvari koje se sa Windows formama lako obrađuju. Sve što vidite kad pokrenete pravljenje Windows Forms aplikacija u Microsoft Visual Studio Net-u su u stvari objekti i klase zasnovane na .NetFramework-u koje omogućavaju isključivo razvoj aplikacija za Windows operativni sistem. Ne možete praviti Windows Forms aplikacije u Linux-u, niti bi to imalo kakve logike. Za formiranje bogatog korisničkog okruženja kod Windows formi se najviše primenjuje standardna tehnika; prevuci, pusti i podesi propertije. Kod WPF  aplikacija se radi slično ali se mnogo češće piše XAML code, nego što se povlače kontrole. Kod Windows Forms aplikacija ćete maksimalno koristiti Windows Forms Designer dok ćete u prozoru Properties Window najčešće podešavati Name, Size, Anchor i Location propertije. Zato vaš IDE okruženje unapred pripremite sa prozorima ToolBox i Properties Window da su vam uvek vidljivi i pri ruci. Windows forme se najlakše uče isključivo svakodnevnim radom i kreativnošću, pa je zato najbolje da odmah kreirate svoju prvu aplikaciju. Prosto će te se iznenaditi koliko je to jednostavno.

Vaša prva Windows Forms aplikacija

Monday, March 26, 2018

Enumeracije ili nabrajanje tipa Enum u C# programskom jeziku


Enumerations - enumeracije su specijalni vrednosni tipovi podataka koji omogućava da zadate grupu imenovanih numeričkih konstanti. U Srbiji se enumeracija često naziva nabrajanje, ali onda je bolje da kažete nabrajanje tipa enum jer postoje i druge vrste nabrajanja u C# programskom jeziku. Programeri C++ programskog jezika ponekad nazivaju enumeraciju skraćeno enums. Zašto enums, zašto ne enum? Zato što je enum skraćenica od ENUM - Electronic number – elektronski broj; što je opet predlog za mapiranje svih telefonskih brojeva u IP adrese.


( Enumeracija čini vaš kod čitljivijim )

Zato je neophodno obratiti pažnju kada pričate sa kolegama o enumeracijama. Inače kada hoćete da deklarišete enumeraciju u C# programskom jeziku; koristite ključnu reč enum izvan funkcija kao što to radite sa strukturama.

enum ime_enumeracije
{
    vrednost1,
    vrednost2,
   
}

Jednom kad ste deklarisali enumeraciju, možete da je koristite na tačno isti način kao i bilo koji drugi numerički tip podataka. Vrednostima enumeracije možete dodeljivati jedino celobrojnu vrednost. Ukoliko želite vrednostima enumeracije da dodeljujete vrednosti tipa stringova, onda bolje razmislite o tome da koristite strukturu u kojoj će nabrajanje biti jedan od članova strukture. Nabrajanje pružaju funkcionalnost garantovanih fiksnih vrednosti i kad se koriste kao indikatori.

Kako se dodeljuju vrednosti strukturi enumeracija?

Tuesday, November 28, 2017

Rad sa WPF prozorima

Ukoliko niste pročitali post “Uvod u WPF – Windows Presentation Foundation“ savetujem vam da to obavezno uradite i steknete neki uvid u WPF; pre nego što pristupite praktičnoj primeni. Ali nemojte dozvoliti sebi da vas to obeshrabri. Učenje WPF shvatite više kao igranje, jer je zaista interesantno šta sve za razliku od Windows Forms možete da radite sa WPF kontrolama. Sve ono što vas je kočilo kod Windows Forms kontrola da napravite, u WPF je to moguće stavljanjem WPF kontrola u WPF kontrole i kombinovanje istih da rade kao jedna. Pitanje je samo koliko ima nešto smisla kombinovati ili ne. Znači mogućnosti su ono što vam treba biti motivacija. Ja sam svestan da čak i danas postoji mnogo hobista a ne programera koji i dalje ne žele da pređu sa Windows Forms na WPF, ali to više nije ni smešno. Neki to rade zato što im je računar previše star dok drugi jednostavno smatraju učenje XAML uz C# komplikovanim. XAML vam jednostavno olakšava linije i linije code-a, vreme i na jednostavan način povećava kreativnost. Da ne spominjem da vi većinu XAML code-a možete da kreirate podešavanjem svojstava u Properties upotrebom miša. Vaše WPF kontrole naravno možete obogatiti i već napisanim stilovima, animacijama i čime god vi želite, stime da vremenom skupljate i čuvate XAML code koji možete koristiti u više vaših aplikacija. Ali uzmite u obzir da nešto što ste pravili u Windows 7, npr. stil za ListBox kontrolu, neće biti isto transparentan na Windows 10. Ponekad će te u vašim stilovima i šablonima trebati promeniti i prilagoditi novijim operativnim sistemima. Iz tog razloga ukoliko pravite WPF aplikaciju u komercijalne svrhe, morate testirati vašu WPF aplikaciju na više računara, Windows operativnih sistema i korigovati razliku. Ali takođe u dokumentaciji morate navesti za koji operativni sistem je pravljena vaša WPF aplikacija, da ukoliko izađe sledeća verzija Windows-a i vaša aplikacija na njemu ne izgleda baš kao što treba da izgleda, vi ne snosite nikakvu odgovornost.   


( Pravljenje WPF aplikacija je kreativnost i igra ) 

Razlike između WPF i Windows Forms su pre svega što WPF omogućava da pravite mnogo robusnije, bolje i lepše prozore. Početnike najviše zbunjuje što pozicioniranje kontrola je u WPF totalno drugačije i zavisi od panela koji su ne vizualni ali omogućavaju automatsku promenu veličine svih kontrola u njima prilikom promene veličine prozora. Tačno je da za mnogo stvari koje ste radili u Windows Forms, to neće raditi na isti način. Ali će raditi na drugi način, često i bolji ili uopšte neće raditi. Poznato je da WPF aplikacije često imaju svoj vlastiti dizajn i da su često okrenute svom vlastitom šarenilu. Čak što više to se i traži od WPF aplikacija, iako ne treba preterivati. Međutim, postavlja se pitanje koliko je to poželjno s obzirom da nas praksa uči da boje prozora treba da kontroliše sam sistem i da korisnik kroz Windows operativni sistem treba da odredi izborom Windows teme kako će i prozori u vašim WPF aplikacijama biti obojeni. Rešenje je da u svojim WPF aplikacijama omogućite kroz opcije vaše aplikacije i takvu mogućnost. Visual Studio .Net je na primer takođe WPF aplikacija koja deli svoj dizajn na Color Theme kao što su Dark, Blue ili Light. Međutim vi možete pronaći mnoštvo kolor tema za Visual Studio .Net na Internet-u i njih koristiti. Npr. pogledajte moje video tutorijale za osnove C# i videćete da se u njima koristi ne standardna Visual Studio .Net kolor tema. Znači i vi možete omogućiti u vašim WPF aplikacijama da korisnici vaše WPF aplikacije koriste i teme za vašu aplikaciju. Imajte samo u vidu da vaše WPF aplikacije mogu koristiti i slabovidi korisnici i oni koji ne vide sve boje, i bilo bi poželjno omogućiti i njima neku temu. Dok učite dajte sebi slobodu i sa bojama i sa oblicima prozora kako samo vaša mašta može učiniti. Ali samo dok učite WPF; koristite sve boje; poenta je da uživate u vlastitoj kreativnosti. Što više budete eksperimentisali; vaše WPF aplikacije će biti bolje. Krenimo prvo od WPF prozora praktičnim primerima.

Šta je ResizeMode svojstvo i kako ga podesiti?