Witam i witam ponownie.
W tym wykładzie chciałbym porozmawiać o tym, co jest
potrzebne przy tworzeniu programu w C.
Mamy więc cztery podstawowe zadania w tworzeniu dowolnego programu c.
A jakie to zadania obejmują edycję, kompilację, łączenie
i wykonywanie.
Rozmawialiśmy o różnych krokach którego będziesz używać, pisząc program
w języku c, w ramach którego zamierzasz aby zrozumieć wymagania, zaprojektujesz swój kod
zamierzasz napisać swój kod, a następnie przetestujesz go i
zdebugujesz i tak dalej, a następnie utrzymuj go.
To, o czym tutaj mówię, to co faktycznie musisz to zrobić,
kiedy zaczynasz pisać program. Trochę rozmawialiśmy o edycji, kompilacji, ale łączeniu
i wykonywaniu są również ważne.
I o czym chcę porozmawiać oto szczegóły tego.
Więc te zadania staną się twoją drugą naturę, ponieważ zamierzasz to
robić za każdym razem, gdy piszesz program w C.
Będziesz edytować swój plik kod
źródłowy, będziesz kompilować, będziesz łączyć, a potem będziesz biec.
Będziesz robić to bardzo, bardzo często.
Zatem procesy edycji kompilowanie, łączenie i wykonywanie to to samo
przy programowaniu programy w dowolnym środowisku z dowolnym
językiem kompilowanym.
Nie jest to unikalne dla C.
Jeśli piszesz java - plik java program, masz zamiar
napisać kod źródłowy, idziesz skompilować kod źródłowy.
Łączenie - możesz nie być tak świadomy z w javie, ale zrobi
jakiś rodzaj linków i porozmawiamy o tym, czym jest linkowanie, a
następnie uruchomisz program.
Będziesz to wszystko robił.
Co tu opisuję znowu jak to się robi w c.
Więc edycja jest dokładnie tym, czym można by pomyśleć, że tak.
To proces tworzenia i modyfikując rzeczywisty
kod, kod źródłowy c.
Kod źródłowy c jest w toku być wewnątrz pliku.
I będzie zawierał wszystko oświadczenia i wszystkie
instrukcje, które piszesz.
Wszystkie pliki z kodem źródłowym c kończą się z. c i tak można zidentyfikować
że jest to plik z kodem źródłowym.
Przed tym . c trwa rozszerzenie aby nazywać
się nazwą bazową, chcesz, aby nazwy plików miały znaczenie.
Jeśli napiszesz program w C, który doda dwa numery, możesz mieć plik
o nazwie add. c, który zawiera kod źródłowy.
I pamiętaj, że większość c programy będą miały wiele
różnych plików.
Więc twoje pliki powinny mieć dobre nazwy.
Ale sposób, w jaki możesz się zidentyfikować c kod źródłowy to. c rozszerzenie.
Wszystkie zawierają. c rozszerzenie.
Teraz, gdy edytujemy nasz kod dla w tej klasie będziemy używać
zintegrowanego środowiska programistycznego.
Nie jedziemy po prostu użyć prostego edytora.
Przykład prostego edytora byłoby czymś w rodzaju WordPad.
Użyjemy czegoś który ma edytor, ale ma też wiele
innych rzeczy, które mogą ci pomóc napisz swój kod wydajniej.
IDE - i jest to określane jako IDE, Zintegrowane środowisko programistyczne.
Ten, którego będziemy używać dla tej klasy
są Code Blocks, opiszę szczegółowo, ale zamierzamy użyć bloków
kodu do zadania edycji.
Ale możesz użyć wszystkiego, co chcesz.
Jeśli chcesz korzystać z notatnika, jeśli
chcesz chcesz użyć czegoś jeszcze mniejszego, możesz Atom, jest Visual Studio IDE,
ale ten, który tutaj omówimy, jest tym, jak to zrobić do edycji kodu i bloków kodu.
A to jest fajny jaź, a powód, dla którego go wybrałem, omówimy
więcej szczegółów, ale tak jest wieloplatformowy i łatwy w użyciu.
Więc edycja to podstawa proces, pisząc kod.
Kompilacja.
Wiemy, co robi kompilator.
Po prostu wymaga tego wysokiego poziomu kod języka i konwertuje
go na język maszynowy, a także wykrywa i znajduje błędy w kodzie.
Po edycji kodu jesteś mam zamiar uruchomić kompilator.
Więc dane wejściowe do kompilatora to będzie cały twój
kod źródłowy, cały twój. c pliki wszystko, co edytujesz.
I znowu, program c może mają wiele plików źródłowych.
Ale dane wejściowe do kompilatora są te pliki źródłowe,
kompilacja sama konwertuje ten kod to proces dwuetapowy.
Pierwszy etap to tzw faza wstępnego przetwarzania.
Podczas którego Twój kod może być modyfikowane lub dodawane do.
Drugi etap to rzeczywista kompilacja, generuje kod
języka asemblera.
O tym porozmawiamy więcej szczegółowo, ta faza wstępnego przetwarzania.
Ale musisz tylko wiedzieć teraz, gdy kompilacja obejmuje
dwa etapy.
Ten, na którym się skupimy lub ten, który jest łatwy do
zrozumienia, to generowanie kodu wynikowego.
Więc kompilator to zrobi spójrz na każde stwierdzenie
i upewni się, że plik składnia jest poprawna, a semantyka
języka jest zachowana.
Składnia polega na upewnieniu się, że plik struktura kodu jest
prawidłowa, że masz średniki na
koniec stwierdzenia, że używasz typów danych, że jesteś - jesteś przestrzeganie zasad języka.
Semantyka to znaczenie słów.
Więc jeśli używasz if słowo kluczowe, to warunek.
Semantyka zachodzi w faza kompilacji poprzez utworzenie tabeli symboli
i tak dalej.
Ale kompilator jest ważny.
To będzie generować ten kod wynikowy.
Powie ci, jeśli ty mają jakieś błędy w składni.
Czasami też potrafi rozpoznać czy masz martwy kod, w którym
zasadniczo kod nie jest używany.
Nie znajduje błędów logicznych.
Znajduje tylko błędy składniowe.
Ponownie składnia to zasady i język.
Znaczenie mają błędy logiczne.
Jak gdybyś się pomylił logicznie, możesz popełnić błąd
w funkcjonalności.
Twój kod może działać, może się kompilować, ale może nie działać zgodnie z przeznaczeniem i jest
to określane jako błąd logiczny.
Kompilator nie powie jeśli masz błąd logiczny.
Jeśli zamierzałeś poprosić użytkownika o rozszerzenie numer zamiast ciągu znaków lub poprosisz użytkownika o
jego ostatnie imię przed imieniem to
błąd logiczny. Kompilator nie jedzie aby poinformować Cię o tego typu błędach.
Typowe błędy zgłaszane przez kompilatorem będą takie
rzeczy jak niezadeklarowane zmienne, wyrażenie który nie jest
zgodny ze składnią, nie masz do tego prawa nawiasy, znasz bloki,
które nie mają bloków końcowych.
Staniesz się bardzo, bardzo dobrze zaznajomiony z błędami
kompilatora i ich znaczeniem.
Miejmy nadzieję, że już się nauczyłeś język c i
uruchomisz kompilator, zobaczysz błąd i będziesz
mógł go natychmiast naprawić.
Powiedz, że nie pamiętam składni lub ups
zapomniałem średnika, och, zapomniałem podać prawo nawias zamykający ten blok kodu.
To stanie się drugą naturą.
Więc po naprawieniu wszystkich plików błędy i twoja kompilacja
zakończy się powodzeniem, to się uda przetłumaczyć na język asemblera i wygenerować
ten kod wynikowy.
A więc rzeczywisty obiekt kod to. o plik.
To jest rzeczywiste podsumowanie kod języka, który jest uruchamiany.
Posiada przedłużenie. obj lub. o. obj zazwyczaj w systemie Windows będzie przedłużeniem. o w systemie Linux lub Macintosh system będzie rozszerzeniem.
Zobaczycie ten plik wygenerowane po skompilowaniu kodu.
A to tylko faza
końcowa kompilacji, to rzeczywisty język asemblera.
To będzie binarne nie wygląda jak tekst, którego nie
będziesz mógł zobaczyć.
Po prostu będzie mieć . o rozszerzenie i to właśnie
generuje kompilator.
Sposób, w jaki uruchamiasz kompilator w c, czy faktycznie używasz polecenia.
Prawdopodobnie nie będziesz
musiał tego robić wiele, ponieważ ide, edytor w zintegrowanym rozwoju jest zrobię to za Ciebie, klikając
opcję menu, ale tak jest ważne, aby wiedzieć, co się dzieje.
Więc kiedy wydajesz kompilator polecenie,
zwykle używa kompilatora GNU, którym jest polecenie gcc.
Ale na podstawowym poziomie po prostu biegasz program kompilujący cc lub gcc.
Uruchom ten program i następnie określasz dane wejściowe.
Pamiętaj, że kompilator zajmuje jako wejście do plików źródłowych.
Dane wejściowe określasz za pomocą pliku -c, a następnie
określanie plików źródłowych, jeden po drugim.
Oto przykłady cc-cmyprog. c lub jeśli używasz kompilatora GNU, który jest
popularny gcc-c.
A jeśli pominiesz flagę c, plik program zostanie automatycznie połączony,
co jest następnym krokiem.
Ale naprawdę łatwo to uruchomić kompilator, jeśli jesteś w interfejsie
wiersza poleceń.
Jest jeszcze łatwiej, jeśli po prostu użyj opcji menu, którą prawdopodobnie będziemy robić
w tej klasie.
Ale znowu, to zajmuje input, pliki źródłowe c.
W blokach kodu, jak wspomniałem,
będziesz po prostu klikając opcję menu i tak się stanie
automatycznie skompiluj łącze, a następnie możesz kliknąć inne menu opcja uruchomi się automatycznie.
Ale znowu, co się dzieje pod okapem jest to, że faktycznie wydajesz
polecenie kompilatora z opcją -c flagi i wejściowe pliki źródłowe.
Po kompilacji łączysz. Jak powiedziałem, każdy język programowania ma powiązania,
ale dużo czasami jest przezroczysty, nawet nie wiesz, co
się dzieje.
W c, ważny jest proces łączenia ponieważ nie zawsze jest przejrzysty.
Jednak w przypadku większości
nowoczesnych środowisk IDE tak jest, ale muszę podkreślić, że jest to ważne w c.
Więc po programie zostały na to przetłumaczone. stary kod jego kod wynikowy, to wtedy
jest gotowy do połączenia.
Powodem, dla którego łączymy się, jest to,
że jesteśmy korzystając z bibliotek zewnętrznych, musimy pobrać wszystkie inne biblioteki i umieść je w jednym programie.
Łączenie to po prostu uzyskanie wszystkiego zależności w miejscu
i budowanie rzeczywistego pliku wykonywalnego.
Więc. o plik to obiekty.
Następnie łączysz wszystkie pliki . os w jeden plik wykonywalny.
I znowu tak jest
zwykle przezroczysty, zwykle dzieje się automatycznie podczas kompilacji.
Ale znowu może nie i być może będziesz musiał wykonać oddzielną komendę, na
przykład -l lub coś w tym rodzaju.
Ale wymaga wszystkich tych obiektów pliki i tworzy jeden plik wykonywalny.
A plik wykonywalny jest tym, co uruchamiasz.
Więc to wszystko połączy.
A potem też się połączy.
I możesz mieć. czy to są dodatkowe biblioteki, inne programy, których możesz chcieć
użyć ktoś inny napisał
lub inne biblioteki, które pochodzą z języka c.
Masz zamiar wziąć wszystko te i złóż je razem.
I faza łączenia będzie wykrywaj i zgłaszaj błędy.
To dwie oddzielne fazy.
Znowu tworzenie linków zwykle wyglądałoby tak, jak błędy redefinicji lub próbujesz wywołać
funkcję, która nie istnieje.
Więc jeśli tego nie masz. o plik do tworzą cały program,
wystąpi błąd łączenia.
Musisz mieć wszystkie pliki. o.
I znowu. o może nawet nie być twoje.
Mogą przyjeżdżać z tym samym językiem, mogą być częścią standardowej biblioteki lub mogą
pochodzić z innej program, który napisał ktoś inny.
Ale potrzebujesz tego wszystkiego. o tworząc jeden plik wykonywalny.
Dlatego biblioteki programów obsługują i rozszerzyć język C o procedury wykonywania operacji które
nie są częścią języka.
Biblioteki wejściowe i wyjściowe to przykład, biblioteka matematyczna,
biblioteki do manipulacji na ciągach znaków.
To jest to samo, jeśli jesteś zaznajomiony z programem java, to to
samo, co interfejs API java.
To to samo, co paczki.
To jest ta koncepcja,
której chcę zapisywać dane do pliku, którego sam
nie chcę wdrażać, jestem zamierza użyć istniejącej biblioteki, która jest dostarczana z językiem.
Nadal jest napisane w c, to jest po prostu ktoś z tym przychodzi.
Więc jest wiele
rodzajów różne biblioteki, o których będziemy się uczyć i których będziemy używać.
Dzieje się to częściowo faza łączenia.
A więc awaria podczas fazy
łączenia oznacza, że jeszcze raz musisz wrócić
i edytować kod źródłowy, aby go utworzyć Upewnij się, że możesz
znaleźć ten plik obiektowy, więc zwykle jest wiele błędów oznacza, że wystarczy załączyć plik lub coś w tym rodzaju. To stanie się również drugą naturą.
Sukces, jeśli skończysz kompilacja zakończyła się pomyślnie, linkowanie zakończyło
się pomyślnie utworzy plik wykonywalny.
W środowisku Windows plik wykonywalny
będzie miał rozszerzenie. exe rozszerzenie.
W Linuksie i Windowsie tak będzie po prostu mają domyślnie plik. na zewnątrz.
Możesz zmienić nazwę pliku. na zewnątrz do czegoś
bardziej znaczącego, po prostu wydając coś razem za pomocą polecenia kompilatora.
Ale większość IDE jest
również w blokach kodu będzie miał program do
kompilacji i łączenia w jednej operacji i tak będzie utworzyć plik wykonywalny, a następnie wystarczy dwukrotnie kliknąć plik
wykonywalny lub możesz uruchomić plik wykonywalny z polecenia lub z opcji menu.
Ale nie na niskim poziomie, jeśli jesteś w systemie
Linux zobaczysz plik a. domyślnie jako plik wykonywalny. W oknach zobaczysz plik. exe.
Program o dowolnej wielkości będzie składać się z kilku plików z kodem źródłowym,
o czym wspomniałem wcześniej.
Każdy plik kodu źródłowego wymaga rozszerzenia kompilator do
wygenerowania pliku obiektowego, który należy połączyć.
Program jest znacznie łatwiejszy zarządzaj, dzieląc go na
kilka mniejszych plików źródłowych.
Będziesz chciał użyć wielu źródeł plików i nie chcesz pliku źródłowego,
który zawiera 5000 wierszy kodu.
To nie jest spójne.
To nie jest łatwe do zarządzania.
Więc zamierzasz tworzyć pliki które
zawierają kod źródłowy, a kod źródłowy będzie konkretny.
Będzie miał specyficzna funkcjonalność.
To znacznie ułatwia znacznie
łatwiejsze do debugowania i bardziej spójne.
Więc będziesz mieć wiele mniejszych plików źródłowych.
Nie chcesz dużych plików źródłowych z tysiącami linii kodu.
Wszystkie te pliki źródłowe są będzie składać się na cały program.
Wszyscy będą mieli swoje posiadać . o i wszystkie
zostaną wprowadzone do kompilatora.
Wszystkie te koncepcje, które sprawiają, że w
górę programu, zasadniczo są również uważane za projekt.
Możesz myśleć o tym jako to na wyższym poziomie.
To twój projekt, to twój program.
Po tym, jak w końcu wszystko zrobisz to i połączyłeś to, masz
swój plik wykonywalny, możesz następnie uruchomić program.
W większości IDE jest to po prostu będzie
kliknięciem menu lub dwukrotnym kliknięciem w oknach, możesz dwukrotnie kliknąć exe.
A jeśli używasz Linuksa, po prostu wpisz. na zewnątrz.
Teraz, gdy. musisz mieć pewne uprawnienia, więc być może musisz wydać polecenie zmiany
trybu, ale żeby go uruchomić, możesz powiedzieć. /za. out i to uruchomi program
z wiersza poleceń Linux.
Ale znowu zwykle nie musisz martw się o to. Tak więc etap wykonywania
jest miejscem, w którym uruchamiasz swój program.
Każda z wypowiedzi programu jest sekwencyjnie wykonywany po kolei.
Jeśli program zażąda danych
od użytkownika, program zatrzyma się i otrzyma te dane wejściowe.
Możesz uzyskać dane wejściowe za pośrednictwem klawiatura lub może uzyskać dane wejściowe za pośrednictwem graficznego interfejsu
użytkownika, jeśli masz biblioteki do tego w kodzie C.
Wyświetlane wyniki przez program pojawiają się
w oknie zwanym konsolą.
I zamierzamy to pokazać przykłady tego, kiedy mówimy
o blokach kodu.
Ale kiedy uruchamiasz program, zazwyczaj zobaczysz wynik.
Nie zawsze, czasami programy tak robić rzeczy, które nie dają wyniku.
Ale zwykle dają wynik i
zobaczysz dane wyjściowe bezpośrednio na terminalu lub konsoli.
Generuje się również etap wykonania szeroka gama błędów.
Więc możesz popełnić błąd
wyjście, które jest tylko błędem logicznym i musisz się cofnąć i edytuj kod źródłowy.
Może tam siedzieć i nic nie robić ponieważ masz problemy z logiką.
A potem wreszcie
może się zawiesić Twój komputer, co jest najgorszym scenariuszem, co oznacza, że zrobiłeś
coś naprawdę złego w swoim programie i
było tak źle że program właśnie umarł, albo po prostu,
albo faktycznie spowodował inne programy w systemie operacyjnym, aby spowodować awarię całego komputera.
A więc uruchomienie rzeczywistej aplikacji c może powodować problemy. Jeśli program nie wykona zamierzona funkcjonalność, musisz wrócić i edytować
źródło kod, który
być może będziesz musiał zreorganizować lub przeprojektować, i
tu właśnie my rozmawiali o różnych krokach.
Jest to znane jako debugowanie fazę, aby znaleźć i naprawić błędy.
Będziemy mieć całość sekcja
dotycząca debugowania, ponieważ jest to tak ważne.
Wspomniałem wcześniej o tym z najlepszych sposobów uczenia się jest
uczenie się na błędach.
Będziesz ciągle wracał edytuj kod źródłowy i debuguj.
Cały proces kompilacji,
łączenie i wykonywanie programu jest powtarzane, aż skończysz, dopóki
nie skończysz mają wszystkie wyniki potrzebne do działania tego kodu.
Więc znowu, kolejny fajny ilustracja, którą lubię dostarczać.
To pochodzi z książki zwany Beginning C przez Hortona.
Ale to jest proces że będziesz miał.
Zamierzasz edytować swój kod źródłowy.
Zamierzasz utworzyć plik z rozszerzeniem . c i zrozumiałą nazwę.
Będziesz używać edytora do tego lub
IDE, zintegrowane środowisko programistyczne, coś w rodzaju Code Blocks.
Następnie skompilujesz to.
Kompilator to zrobi wygeneruj plik obj lub plik o.
Jeśli nie wygeneruje tego
pliku, oznacza to, że masz błędy i musisz wrócić i je naprawić.
Po utworzeniu plików obj, pliki obiektowe, musisz następnie połączyć je wszystkie
razem aby utworzyć plik wykonywalny.
Ty też mogłeś błędy w tej fazie,
w której nie są poprawnie połączone.
Musisz wrócić i edytuj swój kod źródłowy.
Kiedy już faktycznie nie masz żadnych
błędów i masz plik wykonywalny, możesz następnie uruchomić swój program.
I znowu, po uruchomieniu swojego nadal możesz mieć błędy, ponieważ mogą
występować błędy logiczne.
Więc wtedy wrócisz i edytuj kod źródłowy.
Więc to będzie powtarzalny
proces, z którym będziesz bardzo dobrze zaznajomiony.
Edytuj, kompiluj, łącz, wykonuj.
I to znowu jest typowe co robisz we wszystkich językach.
Będziesz to robił w kółko w kółko, aż
Twój program spełni wszystkie Twoje wymagania.