JęzykANSI

część1 środowiskopracy

JarosławGramacki InstytutInformatykiiElektroniki

• Literatura – Brian W.Kernighan,Dennis M.Ritchie,JęzykANSI C,WNT(wskrócie K&R ) – CezarySobaniec,Systemoperacyjny przewodnikuŜytkownika,Nakom,Poznań,2002 – Dokumentacjawykorzystywanychśrodowiskprogramistycznych • HistoriajęzykaC

– BPCL>B>C

– C1972,,dlasystemunaminikomputerzeDECPDP11

– ANSIC 1998,standardANSIjęzykaC • Dalszaewolucja

– C>C++>Java >C#>Usługisieciowe>… C>C++( Operator++wC(wC++teŜ)oznaczazwiększenieojeden,więcC++towięcejniŜ C) C#(gdzie#oznaczakrzyŜyk)topopolskuCis(dźwiękstojącyopół tonuwyŜejniŜ C) • Narzędzia,środowisko

Windows

– Dev C++,win32, CDT,MicrosoftVisualC++[numerwydania] Express...

– MinGW,Cygwin,...

Linux

– konsolaviapuTTY (poprzezSSH)

– gcc,gdb,make,vi,vim,mc,...

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 2 1.ŚrodowiskoWindows

(odtegozaczynamy)

• Dostępneśrodowiskaprogramistyczne,kompilatory,debuggery,…

– np.: http://www.thefreecountry.com/compilers/cpp.shtml – Turbo C2.01New – MicrosoftVisualC++2010ExpressNew – AMDOpen64 Suite Środowiska wyróŜnione zostaną – Apple Xcode forMacOSX – Open Source Watcom /OpenWatcom C/C++Compiler pokazanenakilkunastępnych – Digital MarsC/C++Compiler (Symantec C++Replacement) slajdach – UPSDebugger (CInterpreter) – The BDSCCompiler – Bloodshed DevC++C++Compiler – IntelC++Compiler forLinux NonCommercial Version – PCC Portable CCompiler – DeSmet C – SunStudio and Tools – Open64Compiler Tools – Apple's Macintosh's Workshop (Cand C++compilers) – Tiny CCompiler Smallest Linux CCompiler – Portable Object Compiler – Mingw32C&C++Compilers – GNUC/C++Compiler – Pelles CCompiler – Compaq CCompiler – Ch Embeddable C/C++Interpreter(StandardEdition) – DJGPPCand C++Compilers – ANSICBased Compiler – Sphinx C Compiler – LSIC86CCompiler – ACCCCompiler – CINTCand C++Interpreter – SDCCCCrosscompiler – LADSoft CC386CCompiler – Cygwin Project(C&C++Compilers) – LCCWin32CCompiler – LCC ARetargetable Compiler forANSIC – Pacific CCompiler – Cyclone C – TenDRA C/C++Compiler (mirror site) – LeonardoIDE – EclipseCDT(C/C++DevelopmentTooling) – … drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 4 • Środowiskopracy:Eclipse

– EclipseCDT(C/C++DevelopmentTooling) • Eclipse +konfiguracjadlaprogramistyC/C++ – Wymagazewnętrznegozestawunarzędziprogramistycznych (kompilator,debugger,programmake,…) – NajczęściejuŜywaneto: • Cygwin (bardzorozbudowaneśrodowisku,raczejdlabardziej zaawansowanych) • MinGW ("MinimalistGNUforWindows",isaminimalistdevelopment environmentfornativeMicrosoftWindowsapplications) – Instalacja • 1.MinGW • 2.Eclipse CDT • 3.Odrobinaręcznejkonfiguracji (http://www.sebastianpawlak.pl/)

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 5

• Środowiskopracy:Eclipse

c:\Programy\MinGW \bin>gcc version gcc (GCC) 4.5.0 Copyright(C)2010FreeSoftwareFoundation,Inc. Thisisfreesoftware;seethesourceforcopyingconditions.ThereisNO warranty;notevenforMERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.

c:\Programy\MinGW\bin>gdb version GNU gdb (GDB) 7.1 Copyright(C)2010FreeSoftwareFoundation,Inc. LicenseGPLv3+:GNUGPLversion3orlater Thisisfreesoftware:youarefreetochangeandredistributeit. ThereisNOWARRANTY,totheextentpermittedbylaw.Type"showcopying" and"showwarranty"fordetails. ThisGDBwasconfiguredas"mingw32". Forbugreportinginstructions,pleasesee: .

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 6 • Środowiskopracy:Eclipse

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 7

• Środowiskopracy:Eclipse 1.Tzw.predefiniowane perspektywy

2.Polecenie(zewnętrznegow stosunkudoEclipse)kompilatoragcc

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 8 • Środowiskopracy:Eclipse

1.Wykonaniezpoziomuzwykłegocmd

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 9

2.Przeszliśmydo • Środowiskopracy:Eclipse perspektywy przygotowanejdo debuggowania

3.PoznajróŜnicepomiędzyF5aF6

4.BardzoduŜouŜytecznychopcji

1.TrochęwiększyprzykładniŜ„Hello World”

5.Aktualnaliniawykonywanegoprogramu

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 10 • Środowiskopracy:Eclipse

1.Aktualnystanwybranych zmiennychwprogramie

2.Słabowidocznyew.punkt zatrzymania(ang.brakepoint) drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 11

Ustawieniadebuggera pozwalające • Środowiskopracy:Eclipse napraceonline wokniekonsoli (analogiadowykonywaniaprogramu bezpośredniozcmd)

Uwaga!Białeznakiwnazwiepowodująbłąd:nie będziemoŜnadebuggować kodujakpokazanodalej

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 12 • Środowiskopracy:Eclipse

Dladociekliwych:gdb/mi– interfejs komunikacjizdebuggerem gdb

Dladociekliwych:włączaby podejrzećkomunikacjęz debuggerem

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 13

Iwyniknaszychustawień: • Środowiskopracy:Eclipse

...pracujemyze„zwykłą” konsolącmd ! ZamiastuŜywania(wpewnychprzypadkach) niewygodnejkonsoliwEclips ... drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 14 • Środowiskopracy:DevC++

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 15

• Środowiskopracy:DevC++

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 16 • Środowiskopracy:DevC++

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 17

– Uruchamianiezliniipoleceńjest • Środowiskopracy:DevC++ wygodniejszeniŜzpoziomuGUI

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 18 • Środowiskopracy:DevC++

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 19

• Środowiskopracy:lccwin32

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 20 • Środowiskopracy:lccwin32

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 21

• Środowiskopracy:lccwin32

Gotowyszablon.Myzaczniemy jednakodprostszychkodów:)

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 22 • Środowiskopracy:lccwin32

WygenerowanyplikMakefile moŜnaoczywiściuŜywaćipoza graficznymśrodowiskiem,ale…

Podkoniecsemestrubędziemy robićtakierzeczyalew... konsoliLinux !

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 23

• Środowiskopracy:lccwin32

1.Uruchomiliśmydebugger programu

2.Wtejliniizastawiona pułapka 3.Tylkoinformacyjnie.Za wcześnienatakiesprawy:)

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 24 • Środowiskopracy:lccwin32

Kompilator(awzasadzieśrodowisko)lccwin32 wyposaŜonowbardzoduŜąilośćbibliotek tematycznych!!!

Wieleznichmastrukturęobiektową drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 25

• Środowiskopracy:MicrosoftVisualC++2008 Express

Opisprojektunadysku„w formacie”VisualC++

VisualStudio97 VisualStudio6.0(1998) VisualStudio.NET(2002) VisualStudio.NET2003 VisualStudio2005 VisualStudio2008 VisualStudio2010

C/C++(via VisualC++ ) VB.NET(viaVisualBasic.NET) C#(viaVisualC#) F#(viaVisualStudio2010)

Logwszystkichwykonanych czynności:kompilacja,linkowanie, zbudowanieplikuwykonywalnego

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 26 • Środowiskopracy:MicrosoftVisualC++2008Express

4.Output programu 1a.Aktualnypunkt wykonywaniaprogramu

1b.Miejscezastawieniapułapki

3.Podglądzmiennych 2.Pułapkawlinii21.Bezwarunkowa. Zatrzymanieprzypierwszymdojściu.

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 27

• Środowiskopracy:MicrosoftVisualC++2008Express

1.Taknaszprogramwjęzyku Cwidzikomputer(procesor)

2.Takjestto„poukładane” wpamięcikomputera

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 28 • Środowiskopracy:MicrosoftVisualC++2008Express

Niepotrzebujemyodrazu wszystkiego:)))

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 29

2.ŚrodowiskoLinux

(koncówka semestru) środowiskotekstowe konsola • Środowiskopracy:Linux

poćwiczzróŜnymi ustawieniami

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 31

• Środowiskopracy:Linux

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 32 • Środowiskopracy:Linux

– wrazie potrzeby: otwórzkilka sesjiirozmieść wygodnieokna naekranie

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 33

• Środowiskopracy:Linux – wraziepotrzeby: uŜyjbardzowygodnego poleceniascreen

– odpowiednikAltF1,AltF2,… nakonsoliserwera

Ctrl a ...idalejdowolnepoleceniescreena: (szczegóły:poczytajman screen) drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 34 • Środowiskopracy:Linux dziękiscreenowi bardzo – komendyscreena łatwonp."zapuścić" zadanienaserwerze, Komenda Opis komendy wylogować sięiwrócićdo niegonadrugidzień! C Wyczyszczenieekranu [ Kopiowanietekstudobufora Odłączeniescreen'a odterminala(koniecpracy) ? Wyświetlenielistyrozkazów K ZabiciebieŜącegookna x Blokadaterminala(lockscreen) n Przejściedonastępnegookna N InformacjaonumerzebieŜącegookna ^A Przejścienainneokno p Przejściedooknapoprzedniego l CałkowiteodświeŜeniebieŜącegookna Z Reset bieŜącegookna c Dodaniekolejnegooknaiprzejściedoniego '(apostrof) Wywołaniemonituproszącegoopodanienumeru okna,doktóregochcemyprzejść z Zatrzymanieprocesu background w ListauŜywanychokien s Wysyła^SdobieŜącegookna q wysyła^QdobieŜącegookna ] Wklejenietekstuuprzednioskopiowanego 0..9 Przechodzeniepomiędzyoknamiookreślonym numerze drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 35

• Środowiskopracy:Linux

– mcpowinienzawszebyćdostępny,ale...

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 36 • Środowiskopracy:Linux

– koniecznakonfiguracjakonsoli drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 37

• Środowiskopracy:Linux

– koniecznakonfiguracjakonsoli drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 38 "m" modified.DuŜoułatwieńw • Środowiskopracy:Linux stosunkudooryginalnego edytoravi,którybyłbardzo "niedzisiejszy"

– klasykgatunku!

– vi,vim,...

– dwatrybypracy (trybwprowadzaniai wydawaniakomend)

– Esc /i (przełączanietrybów)

– polecenia: :q,:q!,:w

– naprawdęwartogopoznać izniegokorzystać

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 39

• Środowiskopracy – edytorvi(m)maogromnemoŜliwości – szczegółypatrzdokumentacjanaserwerze,katalog: /usr/share/vim/vim63/doc/usr_*.txt

:split,:vsplit dokonanopodziałuoknanatrzyczęści :nplik dojednegozokienwczytanoinnyplik :setnonumber wjednymokniewyłaczono numerację wierszy :setnowrap (:setwrap) niezawijaj(zawijaj)tekst CtrlW przechodzeniepomiędzyoknami drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 40 • Środowiskopracy – edytorvi(m)madoskonały"wbudowany"systempomocy – uruchompoprostuedytorviiwydajpolecenie:help

Ctrl] wejściedodanej"zakładki"systemu poleceń CtrlT "Jump back"

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 41

• Środowiskopracy ENG

PL

WsystemiezUTF8jesttozbędne

Wyjściezmanuala:q

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 42 • Środowiskopracy:Linux

KilkaróŜnychuwag: – korzystajz"dobrodziejstwa"dopełnianiapoleceńtabulatorem cd /usr/local/tomcat5.0.28/logs/ – strzałkawgóręistrzałkawdół historiawydawanychpoleceń – powrótdokatalogudomowego cd ~ – konsolanapełenekran AltEnter – wielezadań,wieleotwartychsesji.Niejesteśmyograniczenidojednegooknakonsoli – labxxx jestwłaścicielemswojegokatalogudomowego.MoŜegowięcdowolnieudostępniać

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 43

• Środowiskopracy:Linux – FTP(File TransferProtocol) – poniŜejprzykładowa tekstowa sesja pobierająca plikizserweramykonos nadyskloklany komputera – przykładzliniipoleceńwsystemieWindows – nauczsiętegokoniecznie.Wielerazytaumiejętnośćuratujeciebie!!!

D:\Documents and Settings\Administrator> ftp ftp> op mykonos.iie.uz.zgora.pl Connected tomykonos.iie.uz.zgora.pl. 220mykonos.iie.uz.zgora.pl FTPserver (Version 6.4/OpenBSD/Linuxftpd0.17) ready. User (mykonos.iie.uz.zgora.pl:(none)): jarek2 331Password required forjarek2. Password: 230 Linux mykonos 2.4.18bf2.4#1Son Apr 1409:53:28CEST2002i686GNU/Linux 230 230 ********************************************** 230 *Witamynaserwerze* 230 *mykonos.iie.uz.zgora.pl * 230 *Debian GNU/Linux * 230 ** 230 *UniwersytetZielonogorski * 230 *InstytutInformatykiiElektroniki* 230 ** 230 *Administrator:* 230 *[email protected] * 230 ********************************************** 230 230User jarek2logged in. ftp> drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 44 • Środowiskopracy:Linux

c.d. ftp> help Commands may beabbreviated.Commands are: !delete literal prompt send ?debug ls put status append dir mdelete pwd trace ascii disconnect mdir quit type bell get mget quote user binary globmkdir recv verbose bye hash mls remotehelp cd help mput rename close lcd open rmdir ftp> ls -la 200PORTcommand successful. 150Opening ASCIImode dataconnection for'/bin/ls'. total 48 drwx 5jarek2staff 4096Oct 412:00. drwxrwsrx 7root staff 8192Oct 117:18.. rwrr 1jarek2staff 266Oct 117:18.alias rw 1jarek2staff 94Oct 411:11.bash_history rwrr 1jarek2staff 567Oct 117:18.bash_profile rwrr 1jarek2staff 1834Oct 117:18.bashrc rwrr 1jarek2staff 375Oct 117:18.cshrc drwx 2jarek2staff 4096Oct 117:19.mc rwrr 1jarek2staff 59Oct 117:18.zshrc drwxrx 2jarek2staff 4096Oct 400:47glowny 226Transfercomplete. ftp:596bytes received in 0,02Seconds28,38Kbytes/sec. ftp>

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 45

• Środowiskopracy:Linux

c.d. ftp> cd glowny 250CWDcommand successful. ftp> lcd D:\ Local directory now D:\. ftp> dir 200PORTcommand successful. 150Opening ASCIImode dataconnection for'/bin/ls'. total 271612 drwxrxrx 2jarek2staff 4096Oct 310:57Editor rwrr 1jarek2staff 95232Oct 120:33autorun.exe rwrr 1jarek2staff 47Oct 120:33autorun.inf rwrr 1jarek2staff 539285Oct 120:34data1.cab rwrr 1jarek2staff 13642Oct 120:34data1.hdr rwrr 1jarek2staff 277177755Oct 123:07data2.cab 226Transfercomplete. ftp:381bytes received in 0,03Seconds12,70Kbytes/sec. ftp> binary 200Type settoI. ftp> hash Hash mark printing Onftp:(2048bytes/hash mark). ftp> get autorun.exe 200PORTcommand successful. 150Opening BINARYmode dataconnection for'autorun.exe'(95232bytes). ############################################## 226Transfercomplete. ftp:95232bytes received in 0,08Seconds1190,40Kbytes/sec.

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 46 • Środowiskopracy:Linux Linux c.d. ftp> prompt Interactive mode Off . ftp> mget *.cab 200Type settoI. 200PORTcommand successful. 150Opening BINARYmode dataconnection for'data1.cab'(539285bytes). ########################################################################## ############################################################### 226Transfercomplete. ftp:539285bytes received in 0,30Seconds1791,64Kbytes/sec. 200PORTcommand successful. 150Opening BINARYmode dataconnection for'data2.cab'(277177755bytes). ########################################################################## ########################################################################## ########################################################################## ... 226Transfercomplete.

D:\>dir aut* Windows 2006100120:3395 232 autorun.exe ... D:\>dir *.cab 2006100120:34539 285 data1.cab 2006100423:267 045 120 data2.cab ... transmisjęprzerwanowtrakcie,stądzamałobajtów! D:\>

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 47

• Środowiskopracy:Linux

– FTP

– poniŜejprzykładowa tekstowa sesja wysyłająca plikinaserwermykonos ftp> dir 200PORTcommand successful. 150Opening ASCIImode dataconnection for'/bin/ls'. total 271612 drwxrxrx 2jarek2staff 4096Oct 310:57Editor rwrr 1jarek2staff 95232Oct 120:33autorun.exe rwrr 1jarek2staff 47Oct 120:33autorun.inf rwrr 1jarek2staff 539285Oct 120:34data1.cab rwrr 1jarek2staff 13642Oct 120:34data1.hdr rwrr 1jarek2staff 277177755Oct 123:07data2.cab 226Transfercomplete. ftp:381bytes received in 0,00Seconds381000,00Kbytes/sec. ftp> cd Editor 250CWDcommand successful. ftp> dir 200PORTcommand successful. 150Opening ASCIImode dataconnection for'/bin/ls'. total 6372 rwrr 1jarek2staff 1707856Oct 120:29InstMsiA.Exe rwrr 1jarek2staff 1821008Oct 120:30InstMsiW.Exe rwrr 1jarek2staff 2863104Oct 120:32Nile.msi rwrr 1jarek2staff 110592Oct 120:32Setup.Exe rwrr 1jarek2staff 35Oct 120:32Setup.Ini

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 48 • Środowiskopracy:Linux c.d. 226Transfercomplete. ftp:312bytes received in 0,00Seconds312000,00Kbytes/sec. ftp> lcd D:\ Local directory now D:\. ftp> binary 200Type settoI. ftp> put error2.jpg 200PORTcommand successful. 150Opening BINARYmode dataconnection for'error2.jpg'. ############## 226Transfercomplete. ftp:29174bytes sent in 0,01Seconds2917,40Kbytes/sec. ftp> dir 200PORTcommand successful. 150Opening ASCIImode dataconnection for'/bin/ls'. total 6404 rwrr 1jarek2staff 1707856Oct 120:29InstMsiA.Exe rwrr 1jarek2staff 1821008Oct 120:30InstMsiW.Exe rwrr 1jarek2staff 2863104Oct 120:32Nile.msi rwrr 1jarek2staff 110592Oct 120:32Setup.Exe rwrr 1jarek2staff 35Oct 120:32Setup.Ini rwr 1jarek2staff 29174Oct 423:16 error2.jpg 226Transfercomplete. ftp:372bytes received in 0,00Seconds372000,00Kbytes/sec. ftp>

drinŜ.JarosławGramacki,InstytutInformatykiiElektroniki,UZ(ver.1.61) 49