Uvod u profesionalno programiranje u jeziku C
Najnovija verzija programskog jezika C, C23, poboljšava sigurnost, bezbednost i upotrebljivost jezika. Ovo drugo izdanje knjige Efikasni C temeljno je ažurirano kako bi obuhvatilo verziju C23, nudeći moderan uvod u C koji će vas naučiti najboljim praksama za pisanje profesionalnih, efikasnih i bezbednih programa koji rešavaju stvarne probleme.
Efikasni C je pravi proizvod C zajednice. Robert C. Sikord, dugogodišnji član Odbora za standardizaciju jezika C sa preko 40 godina iskustva u programiranju, napisao je knjigu u saradnji sa drugim C stručnjacima, kao što su Aron Balman, vodeći Clang održavalac i urednik C projekta ŽanHejd Mened. Zahvaljujući naporima ove grupe stručnjaka, naučićete kako da:
Svet pokreće kod napisan u jeziku C. Efikasni C će vam pokazati kako da izvučete maksimum iz ovog jezika i izgradite robusne programe koji odolevaju testu vremena.
Novo u ovom izdanju: Ovo izdanje je detaljno prerađeno kako bi se uskladilo sa modernim praksama programiranja i iskoristile najnovije funkcionalnosti verzije C23.
Osnovna svojstva programskog jezika C - efikasnost, prenosivost i prilagodljivost - razlog su za njegovu uspešnost i trajnost, a ovo je knjiga koju će svaki programer hteti da stalno ima pored sebe dok piše kod. Precizno i logično su obrađeni i primerima ilustrovani svi elementi jezika, standardna biblioteka i procesi prevođenja i testiranja programa pomoću GNU alatki GCC, make i GDB.
Ova zbirka zadataka je pomoćni udžbenik za učenje programiranja na jeziku C++. Zadaci prate gradivo autorove knjige Programski jezik C++ sa rešenim zadacima. Podrazumeva se, kao i u toj knjizi, da je čitalac savladao programiranje na jeziku C. Zbirka je namenjena za upotrebu u fakultetskoj nastavi, ali može da se koristi i za samostalno produbljivanje znanja iz programiranja.
Rešenja svih zadataka su potpuna u smislu da priloženi programi mogu da se izvršavaju na računaru. Pored samih tekstova programa priloženo je samo malo objašnjenja, prvenstveno u obliku slika i formula. Očekuje se da će izvođač nastave dati dodatna usmena objašnjenja slušaocima. Uz malo više napora zadaci mogu da se shvate i samostalno. Uz svaki program dat je i primer izvršavanja da bi se olakšalo razumevanje rada programa.
Kroz zadatke, pored elemenata samog jezika, prikazani su osnovni principi objektno-orijentisanog programiranja: sakrivanje podataka, ponovno korišćenje koda, nasleđivanje i polimorfizam. Prikazani su i najčešće korišćeni postupci u programiranju: pretraživanje i uređivanje nizova, obrada znakovnih podataka, rad s bitovima, rad s dinamičkim strukturama podataka (kao što su liste i stabla) i rad s datotekama. Posebna pažnja posvećena je i inženjerskim aspektima programiranja: preglednosti, razumljivosti i efikasnosti.
Ova zbirka zadataka je pomoćni udžbenik za učenje programiranja na jeziku C. Zadaci prate gradivo autorove knjige Programski jezik C sa rešenim zadacima. Zbirka je namenjena za upotrebu u fakultetskoj nastavi, ali može da se koristi i za samostalno produbljivanje znanja iz programiranja. Rešenja svih zadataka su potpuna u smislu da priloženi programi mogu da se izvršavaju na računaru. Pored samih tekstova programa priloženo je samo malo objašnjenja, prvenstveno u obliku slika i formula.
Očekuje se da će izvođač nastave dati dodatna usmena objašnjenja slušaocima. Uz malo više napora zadaci mogu da se shvate i samostalno. Uz svaki program dat je i primer izvršavanja da bi se olakšalo razumevanje rada programa.
Kroz zadatke, pored elemenata samog jezika, prikazani su najčešće korišćeni postupci u programiranju:
pretraživanje i uređivanje nizova, obrada znakovnih podataka, rad s bitovima, rad s dinamičkim strukturama podataka (kao što su liste i stabla) i rad s datotekama. Posebna pažnja posvećena je i inženjerskim aspektima programiranja: preglednosti, razumljivosti i efikasnosti.
Jezik C je dosta složen. Nisu svi detalji neophodni svakome, a naročito ne početnicima. zadaci koji mogu da se preskoče u prvom čitanju, bilo zbog složenosti, bilo zbog manjeg značaja, obeleženi su sa Δ.
Zbirka sadrži preko 400 odabranih zadataka koji čitaoca postepeno uvode u svet programiranja, omogućavajući svakome da lako i prirodno savlada programski jezik C.
Svako poglavlje sadrži teorijski uvod koji čitaocu omogućava da se upozna sa osnovnim konceptima objašnjenim u odgovarajućem poglavlju. Nakon uvoda sledi deo s primerima u kome se nalaze urađeni zadaci koji ilustruju način rada s materijom obrađenom u poglavlju. Iza primera su zadaci čija su rešenja data na kraju poglavlja, i koji su koncipirani tako da uvežbavaju čitaoca za sve složenije zadatke. Nakon njih su dati zadaci za vežbu koji služe za samostalno uvežbavanje pređene materije. Zadaci na koje treba obratiti posebnu pažnju obeleženi su odgovarajućim slovom pored broja zadatka: T – težak zadatak i B – bitan zadatak.
Knjiga se bavi materijom koja se odnosi na programiranje u programskom jeziku C i predstavlja sveobuhvatan pregled bitnih koncepata na kojima se zasniva rad tog programskog jezika, njegova klasifikacija sa savremenog stanovišta i uporedne karakteristike sa razvijenim programskim jezicima pre, a i posle njega. Vidna je sistematičnost kojom su autori napisali celu knjigu, te postepenost uvođenja u problematiku od jednostavnijih ka složenijim programskim strukturama. Knjiga je napisana tako da njen sadržaj bez poteškoća može pratiti i čitalac bez predznanja iz oblasti obrađene u knjizi. Ovome doprinosi i enorman broj primera koji su objašnjeni do nivoa pojedinačnih naredbi kojima se čitalac usmerava na obrađeno u knjizi.
Najnovije izdanje pokriva verzije 20 i 23
Skoro 300 uzoraka koda za kompajliranje
Učeći jednu lekciju dnevno, možete da steknete sve veštine koje su vam potrebne za početak programiranja u C++ jeziku. Ovaj kompletan vodič će vam pomoći da brzo ovladate osnovama objektno-orijentisanog programiranja, kao i naprednim funkcijama i konceptima jezika C++. Potpuno ažurirana za standard C++20, ova praktična knjiga je dizajnirana da vam pomogne da napišete C++ kod koji je brži, jednostavniji i pouzdaniji.
- Naučite osnove C++ jezika i objektno-orijentisanog programiranja
- Koristite Standard Template Library (STL) da brzo razvijete moćnije i pouzdanije aplikacije
- Naučite moderne funkcije C++20 verzije, kao što su koncepti, opsezi, prikazi, adapteri i moduli
- Saznajte koje bi dokazane akcije trebalo da koristite, a koje ne, da biste iskoristili najbolju praksu i izbegli zamke, od prvog dana
- Testirajte svoje znanje i stručnost vežbama nakon svake lekcije
- Naučite da koristite skoro 300 uzoraka koda za kompajliranje koji su dostupni za preuzimanje besplatno i koji su detaljno objašnjeni u knjizi
Učite kad želite, sopstvenim tempom
- Nije potrebno iskustvo u programiranju: ubrzo ćete umeti da pišete dobro organizovane, efikasne C++ programe!
- Ovladajte objektno-orijentisanim konceptima kao što su klase, nasleđivanje, polimorfizam, enkapsulacija i apstrakcija
- Kreirajte pouzdane programe bogate funkcijama pomoću STL klasa, kontejnera i algoritama
- Pojednostavite svoj kod pomoću automatskog utvrđivanja tipa i drugih funkcija
- Programirajte objekte funkcija pomoću modernih C++ Lambda izraza
- Ubrzajte učenje korišćenjem skoro 300 uzoraka koda objašnjenih u knjizi
- Iskoristite nove C++20 koncepte, opsege, prikaze, adaptere i module
- Pregledajte poboljšanja koja se očekuju u verziji C++23
Savladavanje veština programiranja je jedan od najvažnijih ciljeva u planovima i programima studijskih programa iz oblasti elektrotehnike i računarstva i softverskog inženjerstva, kao i drugih grana inženjerstva. Programerske veštine se uče kroz ovladavanje sintakse određenog programskog jezika, ali pre svega kroz samostalan rad na problemima iz prakse.
Jedan od najvažnijih programskih jezika koji se izučava na studijskim programima iz oblasti elektrotehnike i računarstva i softverskog inženjerstva je svakako programski jezik C. Programski jezik C je nastao 1972. u Belovim laboratorijama u Sjedinjenim Američkim Državama od strane grupe računarskih entuzijasta na čelu sa Denisom Ričijem za potrebe pisanja jezgra i sistemskih alata operativnog sistema Unix. Zbog svojih karakteristika je doživeo ogromnu popularnost tokom osamdesetih godina dvadesetog veka, da bi i danas prema relevantnim indeksima popularnosti programskih jezika, kao što je TIOBE indeks, bio rangiran u samom vrhu najviše korišćenih programskih jezika. Programski jezik C je danas dominantno jezik sistemskog programiranja, ali isto tako i osnova za učenje mnogih drugih programskih jezika na koje je uticao. Stoga se veoma često uči na uvodnim kursevima programiranja.
Na Elektrotehničkom fakultetu Univerziteta u Beogradu se programski jezik C izučava dugi niz godina na različitim godinama i nivoima studija kroz kurseve kao što su bili: Razvoj mikroprocesorskog softvera, Programski jezici i metode programiranje, Programski jezici. Od promena u studijskim programima koje su izvedene 2003. godine, izučava se u okviru kurseva Programiranje 2 i Praktikum iz programiranja 2 na studijskim programima Elektrotehnika i računarstvo (ER) i Softversko inženjerstvo (SI). Programiranje 2 je obavezan predmet na studijskim programima Elektrotehnika i računarstvo i Softversko inženjerstvo, dok je Praktikum iz programiranja 2 obavezan predmet na studijskom programu Softversko inženjerstvo, a izborni na studijskom programu Elektrotehnika i računarstvo.
Zbirka rešenih ispitnih zadataka iz Programiranja 2 je pre svega namenjena studentima prve godine Elektrotehničkog fakulteta Univerziteta u Beogradu, ali svakako može biti korisna i studentima drugih tehničkih fakulteta, kao i širem krugu čitalaca. Nastala je iz potrebe da se obogati ponuda nastavne literature iz oblasti programskog jezika C kroz prikaz rešenja zadataka sa većeg broja kolokvijuma i ispita. Direktno se naslanja na već postojeći udžbenik „Programski jezik C sa rešenim zadacima” i zbirku zadataka „Rešeni zadaci iz programskog jezika C” autora Lasla Krausa koje se već duži niz godina uspešno koriste na predmetu.
Napišite savremeni, proširivi i izdržljivi softver koji možete održavati pomoću modernog jezika C++. Ova knjiga, ažurirana za nedavno objavljeni standard C++ 20, obavezna je za svakog programera, softverskog arhitektu ili vođu tima koji su zainteresovani za dobro izrađen C++ kod i koji takođe žele da uštede na troškovima razvoja. Ako želite da naučite da napišete bolji C++ kod, knjiga „Čist C++ 20“ je upravo ono što vam treba. Napisana je za C++ programere svih nivoa veština i na primerima pokazuje kako se može napisati razumljiv, fleksibilan, održiv i efikasan C++ kod. Čak i ako ste sezonski programer za C++, u ovoj knjizi postoje informacije i tačke podataka koje će vam biti korisne u vašem radu.
Ako ne vodite računa o svojoj bazi kodova, možete proizvesti veliku, neurednu i neodrživu „zver“ na bilo kojem programskom jeziku. Međutim, posebno projekti na C++-u često postaju neuredni i obično postaju „noćna mora“ kada je reč o održavanju. Postoji mnogo C++ koda koji izgleda kao da je napisan osamdesetih godina prošlog veka i koji ignoriše principe i praksu dobro napisanog i modernog jezika C++.
Čini se da su programere C++ zaboravili oni koji „propovedaju“ principe izrade softvera i čistog koda. Veb je prepun primera C++ koda koji mogu biti veoma brzi i visokooptimizovani, ali su njihovi programeri potpuno ignorisali elementarne principe dobrog dizajna i dobro napisanog koda. U ovoj knjizi je objašnjeno kako da to izbegnete i kako da najbolje iskoristite vaš C++ kod. Otkrićete da vaše pisanje koda postaje efikasnije i, što je najvažnije, zabavnije.
Šta ćete naučiti:
Steći ćete zdrave principe i pravila za čisto kodiranje na jeziku C++.
Izvršićete razvoj koji je vođen testovima (TDD).
Bolje ćete modulirati svoju C++ bazu koda.
Otkrićete i primenićete projektne obrasce i idiome C++jezika.
Napisaćete C++ kod u objektno-orijentisanom i u funkcionalnom stilu programiranja.
Kome je namenjena ova knjiga
Namenjena je bilo kojem C++ programeru ili softverskom inženjeru koji želi da proizvede bolji kod.
Upotreba mikroservisa, DevOps platforme i Azure projektnih obrazaca u arhitekturi softverskih rešenja
Prevod drugog izdanja
Softverska arhitektura je praksa primene struktura i sistema koji ubrzavaju proces razvoja softvera i podižu kvalitet aplikacije. Uspešan arhitekta softvera mora posedovati znanje i ključne veštine i poznavati najbolje prakse predstavljene u ovom revidiranom i proširenom drugom izdanju, koje obuhvata i najnovije .NET 5 i C#9 funkcije.
Ovo izdanje sadrži dodatno objašnjenje principa softverske arhitekture, uključujući i nova poglavlja o sistemskim platformama Azure Service Fabric, Kubernets i Blazor. Takođe, sadrži obimniju diskusiju o bezbednosti, mikroservisima i DevOps platformi, kao i savete za primenu GitHub hosting platforme u ciklusu razvoja softvera.
Prvo ćete naučiti da transformišete korisničke zahteve u arhitektonske potrebe i utvrdićete razlike između funkcionalnih i nefunkcionalnih zahteva. Zatim ćete naučiti da izaberete pravo Cloud rešenje za svoju infrastrukturu, uz pažljivu primenu faktora koji pomažu pri upravljanju aplikacijom u Cloud okruženju.
Nakon toga ćete otkriti obrasce dizajna softvera i razne softverske pristupe koji će vam omogućiti da rešite uobičajene razvojne probleme. Na kraju, moći ćete da kreirate i isporučite visoko skalabilne aplikacije, koje ispunjavaju poslovne zahteve organizacije za koju radite i koje su spremne za upotrebu.
Naučićete:
različite tehnike prevazilaženja stvarnih arhitektonskih izazova i razmatranja dizajnerskih rešenja
da primenjujete slojevitu arhitekturu, arhitekturu orjentisanu na usluge (SOA) i mikroservise
da efikasno upravljate mikroservisima pomoću alata Containers, Docker, Kubernets i Blazor
da ubrzate isporuku globalnih rešenja upotrebom Azure alata i funkcija
da programirate i održavate Azure funkcije pomoću jezika C#9 i njegovih najnovijih funkcionalnosti
kada je razvoj vođen testiranjem (TDD) najbolji pristup razvoju softvera
pisanje automatizovanih funkcionalnih testova
najbolje DevOps principe koji omogućavaju okruženje kontinuirane integracije/kontinuirane isporuke (CI/CD)
Raspberry Pi se tradicionalno programira pomoću Pythona. Iako je ovo vrlo moćan jezik, mnogi programeri ga možda ne poznaju. S druge strane, C je možda najčešće korišćeni programski jezik i svi ugrađeni mikrokontroleri se mogu programirati pomoću njega.
C jezik se uči na većini tehničkih univerziteta i skoro svi studenti inženjerstva su upoznati sa njegovom upotrebom u svojim projektima. U ovoj knjizi se govori o korišćenju Raspberry Pi-a sa C jezikom za razvoj niza projekata zasnovanih na hardveru. Koriste se dve najpopularnije C biblioteke, wiringPi i pigpio.
Knjiga započinje uvodom u C jezik, a većini učenika i novajlija ovo će poglavlje biti neprocenjivo. U knjizi su navedeni mnogi projekti, uključujući upotrebu Wi-Fi mreže i Bluetooth-a za uspostavljanje komunikacije sa pametnim telefonima.
Uključeni su mnogi projekti zasnovani na senzorima i hardveru. I biblioteke wiringPi i pigpio koriste se u svim projektima. Kompletni listinzi programa su dati sa potpunim objašnjenjima. Svi projekti su u potpunosti testirani i funkcionišu.
„Ovaj udžbenik predstavlja originalno delo, jer ne stavlja akcenat na sam programski jezik i ne bavi se detaljima koji su karakteristika samog jezika, vec se oslanja na suštinu i akcenat stavlja na elemente koji su zajednicki za sve programske jezike i samim tim predstavlja izuzetno štivo za pocetnike u programiranju koji žele da steknu temeljnu osnovu za dalje obrazovanje u ovoj oblasti.”
dr Danijela Boberic Krsticev
vanredni profesor, Prirodno-matematicki fakultet u Novom Sadu
„Udžbenik Uvod u programiranje sa primerima u programskom jeziku C pokriva sve najbitnije elemente programiranja i predstavlja kvalitetno štivo za pocetnike u programiranju. Sva objašnjenja su jasna i nedvosmislena, svi složeni koncepti dodatno su pojašnjeni na originalnim i ilustrativnim primerima i zadacima meu kojima ima lakših, ali i veoma teških.”
dr Dragan Ivanovic
vanredni profesor, Fakultet tehnickih nauka u Novom Sadu
Objektno orijentisano programiranje (OOP) je osnova savremenih programskih jezika, kao što su C++, Java, C#, Visual Basic .NET, Ruby, Objective-C i Swift. Objekti takođe predstavljaju osnovu za mnoge veb tehnologije kao što su JavaScript, Python i PHP.
Od bitnog je značaja da se osnovni koncepti objektnog orijentisanog razmišljanja nauče pre nego što se počne sa korišćenjem objektno orijentisanih razvojnih okruženja. OOP potpomaže dobre prakse projektovanja, prenosivost i ponovno korišćenje koda – ali, da bi se potpuno shvatilo, potrebna je promena u načinu razmišljanja. Programeri koji su početnici u OOP-u trebalo bi da se odupru iskušenju da krenu direktno na neki određen programski jezik ili jezik modelovanja, već bi pre toga morali da posvete neko vreme učenju onoga što autor Matt Weisfeld naziva „objektno orijentisani način razmišljanja”.
Knjiga Objektno orijentisani način mišljenja, koju je pisao programer za programere koji žele da unaprede svoje razumevanje objektno orijentisanih tehnologija, pruža pristup objektno orijentisanom programiranju usmeren ka rešenjima. Čitaoci će naučiti da shvataju pravilnu primenu nasleđivanja i kompozicije, razliku između agregacije i asocijacije, i važno razlikovanje interfejsa i implementacija.
Dok su se tehnologije programiranja menjale i razvijale tokom godina, objektno orijentisani koncepti ostaju konstantni – bez obzira na platformu. Ovo prerađeno izdanje se usredsređuje na tehnologije OOP-a koje su se održale tokom proteklih 20 godina i koje ostaju u njegovom središtu, sa novim i proširenim pokrivanjem projektnih obrazaca, izbegavanja zavisnosti i SOLID principa da bi softverski obrasci bili razumljivi, fleksibilni i održivi.
Kako napreduje vaša karijera u softverskoj industriji, sve je veći broj fundamentalnih problema koje morate da rešavate u vidu softverske arhitekture, dizajna i organizacije. Dizajn šabloni su dokazana rešenja velikog broja problema na koje će vaši timovi nailaziti i strategija koja će vam omogućiti da na najefikasniji način pomognete timu da definiše optimalni dizajn. Sticanjem više iskustva, nove odgovornosti i izazovi u svakodnevnom radu će zahtevati da sve bolje suštinski razumete kako se primenjuju rešenja problema na koje vaši timovi nailaze.
Ako se bavite .NET tehnologijama, ova knjiga će vam omogućiti da suštinski razumete kako se koriste dizajn šabloni pomoću realnih primera koje možete da nađete u .NET i ASP.NET projektima.
Knjiga „C# 8.0 i .NET Core 3.0 – Moderno međuplatformsko programiranje (četvrto izdanje)“, čiji je autor predavač i stručnjak Mark J.Price, obezbeđuje sve što je potrebno da započnete programiranje C# aplikacija. U ovom najnovijem izdanju knjige koristićemo popularni Visual Studio Code editor za rad u svim glavnim operativnim sistemima. Knjiga je u potpunosti ažurirana i proširena novim poglavljima o sistemima za upravljanje sadržajem (CMS) i o mašinskom učenju pomoću ML.NET-a. U njoj su obrađene sve teme koje su vam potrebne. U Delu 1 ćete učiti o osnovama C# jezika, uključujući objektno-orijentisano programiranje i nove funkcije verzije C# 8.0, kao što su referentni tipovi koji prihvataju null, pojednostavljeno podudaranje obrazaca i metodi podrazumevanog interfejsa. Deo 2 obuhvata .NET Standard API, kao što su upravljanje podacima i slanje upita za podatke, nadgledanje i poboljšanje performanse, upotreba fajl sistema, async tokovi podataka, serijalizacija i enkripcija. Deo 3 sadrži primere međuplatformskih aplikacija koje možete da izgradite i rasporedite, kao što su veb aplikacije (upotrebom ASP.NET Corea) i mobilne aplikacije (upotrebom Xamarin.Formsa). U knjizi su predstavljene tehnologije za izgradnju Windows desktop aplikacija Windows Forms, Windows Presentation Foundation (WPF) i Universal Windows Platform (UWP i za izgradnju veb aplikacija, veb servisa i aplikacija za mobilne uređaje.
Ovaj udžbenik je lak za praćenje i predstavlja idealan izvor znanja za sve koji žele da nauče algoritme i vežbaju za programerska takmičenja. Poznavanje osnova programiranja je preduslov, dok prethodno iskustvo u konstrukciji algoritama ili programerskim takmičenjima nisu neophodni. Zahvaljujući širokom spektru obrađenih tema različite težine, ovu knjigu mogu da koriste i početnici, ali i iskusniji čitaoci.
Kad god imate pitanja u vezi s jezikom C# 7.0, .NET CLR-om i osnovnim sklopovima Frameworka, ovaj popularan vodič ima odgovore koji vam trebaju. Od samog svog početka 2000. godine, C# je jezik neuobičajene fleksibilnosti i širine, ali njegov neprekidni rast znači da uvek ima još ponešto da se nauči.
"... najbolji uvod u kriptografiju koji sam ikada video... Knjiga za koju bi Nacionalna agencija za bezbednost SAD poželela da nikada nije objavljena..."
- časopis Wired
"... veličanstveno ... fascinantno ... sveobuhvatno delo o kriptografiji za programere..."
- Dr. Dobb’s Journal
"... spada u najmerodavnije priručnike u svojoj oblasti."
- PC Magazine
"... biblija za hakere."
- The Millennium Whole Earth Catalog
Prevod drugog izdanja klasika kriptografije daje sveobuhvatni pregled savremene kriptografije. U knjizi je detaljno opisan način na koji programeri i profesionalci u oblasti elektronskih komunikacija mogu koristiti kriptografiju (tehniku šifrovanja i dešifrovanja poruka) kako bi sačuvali privatnost računarskih podataka. Opisane su desetine kriptografskih algoritama, obuhvaćeni su praktični saveti o njihovoj primeni u kriptografskom softveru i pokazano je kako se oni mogu upotrebiti za rešavanje problema bezbednosti. Objašnjavajući dostignuća u tehnikama primene kriptografije, ovo izdanje pokazuje projektantima računarskih aplikacija, mreža i sistema za skladištenje podataka kako da ugrade bezbednost u svoje programe i sisteme.
Između ostalog, knjiga obuhvata sledeće:
- Informacije o čipu Clipper, uključujući i načine razbijanja mehanizma za deponovanje ključeva
- Algoritme za šifrovanje, uključujući i algoritme iz bivšeg SSSR i Južne Afrike, kao i šifru toka RC4
- Protokole za digitalne potpise, proveru identiteta, bezbedno sprovođenje izbora, korišćenje digitalnog novca itd.
- Detaljne informacije o upravljanju ključevima i primenama kriptografije
USPEŠNO DODATO U KORPU