Podstawowe definicje



Pobieranie 33,27 Kb.
Data24.05.2018
Rozmiar33,27 Kb.

Podstawowe definicje



Komputer – urządzenie elektroniczne służące do automatycznego

przetwarzania danych według zadanego algorytmu.


Algorytm – sposób przetwarzania informacji wejściowych (danych wej.)

na informacje wyjściowe (dane wyj. - wyniki),

w skończonej liczbie kroków.
Program komputerowy – algorytm zapisany w języku zrozumiałym przez

komputer (języku maszynowym).


Język maszynowy jest trudno przyswajalny przez człowieka (ciągi bajtów

reprezentujące instrukcje procesora). W praktyce algorytmy są zapisywane

za pomocą języków programowania wyższego poziomu, które udostępniają podstawowe elementy programowania strukturalnego.
Treść programu (tzw. kod źródłowy programu) jest najczęściej zapisywana za pomocą takich języków programowania, jak: C, Pascal, Java, Fortran, Basic, Cobol.
Kompilator – program przetwarzający kod źródłowy na kod wynikowy

(kod pośredni w języku maszynowym, który jest zrozumiały


dla komputera).
Linker – program łączący kody wynikowe odpowiednich modułów programu

w kod wykonywalny, który może być uruchomiony w komputerze.


Plik – wydzielony fragment pamięci (najczęściej dyskowej) posiadający nazwę.
Z punktu widzenia języków programowania plik jest ciągiem danych
o odpowiedniej strukturze (w najprostszym przypadku ciągiem bajtów).

Każdy plik posiada rozmiar określony w bajtach.


1 Bajt [B] = 1 znak, 1 KB = 1024 B, 1MB = 1024 KB, 1 GB = 1024 MB.
Linker łączy w jeden plik wykonywalny następujące elementy:


  • pliki wynikowe (obiektowe), otrzymane w wyniku kompilacji modułów programu;

  • standardowy kod startowy programu dla danego systemu operacyjnego;

  • kody wynikowe funkcji, wykorzystywanych w programie, zapisane
    w odpowiednich bibliotekach.


Etapy programowania



  1. Utworzenie za pomocą edytora tekstu pliku źródłowego w wybranym języku programowania, np. program.c (program w języku C).




  1. Kompilacja programu za pomocą kompilatora i utworzenie pliku wynikowego (obiektowego), np. program.obj.




  1. Połączenie za pomocą linkera kodu wynikowego programu, kodów wynikowych funkcji bibliotecznych oraz kodu startowego w jeden plik wykonywalny, np. program.exe.



DANE Programy (algorytmy) WYNIKI




Kompilacja


Kod

źródłowy programu

Kod

wynikowy

programu

Kod

wykonywalny

programu

Łączenie

Kod

startowy


Kod

wynikowy

z bibliotek

Podczas projektowania algorytmów można korzystać ze schematów blokowych. Należy pamiętać, aby opracowywane algorytmy posiadały niską złożoność obliczeniową.


Czasowa złożoność obliczeniowa – określa liczbę elementarnych kroków obliczeniowych (tzw. operacji elementarnych, np. porównań, sumowań, itp.).
Pamięciowa złożoność obliczeniowa – określa rozmiar pamięci niezbędnej do wykonania programu.
W praktyce złożoność obliczeniową określa się za pomocą funkcji ograniczających z góry ponoszony nakład obliczeniowy, np. O(n), O(nlogn).

Algorytmy efektywne – posiadają wielomianową lub logarytmiczną złożoność obliczeniową.




Charakterystyka języka C/C++



Geneza języka

Język kompilowalny ogólnego stosowania. Został opracowany w 1972 roku przez Dennisa Ritchie’go z firmy Bell Labs w ramach prac prowadzonych nad opracowaniem systemu operacyjnego UNIX (większość oprogramowania tego systemu została napisana w języku C). Język C pochodzi od języka B opracowanego w 1970 roku przez Kena Thompsona dla pierwszego systemu Unix działającego na komputerze PDP-7. Z kolei język B pochodzi od języka BCPL stworzonego przez Martina Richardsa.

Język C został ukierunkowany na użyteczność w tworzeniu oprogramowania (np. w odróżnieniu od języka Pascal, który ma służyć nauce podstawowych zasad programowania). Jest on powszechnym narzędziem pracy programistów.

Język C++ jest rozwinięciem języka C uwzględniającym elementy programowania obiektowego.




Podstawowe elementy języka

Język C jest wyposażony w podstawowe konstrukcje sterujące wykorzystywane w programowaniu strukturalnym:




  • grupowanie instrukcji ( { } );

  • podejmowanie decyzji ( if );

  • powtarzanie ze sprawdzaniem warunku zatrzymania na początku (while, for) lub na końcu pętli (do);

  • wybór jednego z kilku możliwych przypadków (switch);

  • funkcje (podprogramy).

Ponadto, w języku C występują wskaźniki, które służą do przechowywania adresów oraz wykonywania na nich różnych operacji. W oparciu o wskaźniki można zrealizować przekazywanie argumentów do funkcji. Możliwe są dwa sposoby przekazywania argumentów do funkcji:




  • przekazywanie przez wartości – argumenty są kopiowane do funkcji; nie jest możliwa zmiana wartości argumentów w miejscu wywołania funkcji;




  • przekazywanie przez wskaźniki – do funkcji są przesyłane adresy argumentów; funkcja ma możliwość zmiany wartości argumentów.

W języku C++ wprowadzono przekazywanie argumentów do funkcji za pomocą referencji. Również i w tym przypadku do funkcji są przekazywane adresy argumentów jednak dostęp do nich jest ułatwiony, gdyż wewnątrz funkcji można korzystać z nazw zmiennych (np. x), a nie ze wskaźników do zmiennych (np. x).

Funkcje można wywoływać rekurencyjnie. Zmienne lokalne funkcji są zwykle „automatyczne”, tzn. tworzone na nowo przy każdym jej wywołaniu. Definicje funkcji nie mogą być zagnieżdżone, natomiast zmienne można deklarować lokalnie wewnątrz funkcji zgodnie z regułami struktury blokowej (zmienne widziane lokalnie w bloku { }). Ponadto, funkcje programu mogą być zawarte w modułach zapisanych w różnych plikach i kompilowane osobno.
Zmienne w języku C można podzielić na:


  • zmienne wewnętrzne funkcji;

  • zmienne zewnętrzne, ale znane w obrębie jednego pliku źródłowego;

  • zmienne zewnętrzne o charakterze globalnym (widoczne w obrębie całego programu).

Zmienne wewnętrzne funkcji mogą być automatyczne lub statyczne (istnieją


i zachowują dane pomiędzy kolejnymi wywołaniami funkcji).

W języku C możliwe są konwersje typów danych (tzw. rzutowanie zmiennych i wskaźników). Natomiast język ten nie dostarcza narzędzi wejścia


i wyjścia umożliwiających automatyczny dostęp do plików, np. za pomocą READ (czytaj) lub WRITE (pisz). Są to w przypadku języka C mechanizmy wyższego poziomu dostępne poprzez odpowiednie funkcje standardowe, znajdujące się w bibliotekach dołączanych do programów.


Zalety języka C





  • Wysoka użyteczność – język udostępnia większość funkcji sterujących, które są pożądane w teorii i praktyce programowania strukturalnego.




  • Wydajność i uniwersalność – język charakteryzuje wysoki stopień precyzji, porównywany z asemblerem; prowadzi to do zwięzłości i małej objętości kodu wynikowego programów oraz ich dużej szybkości działania (język C jest wykorzystywany do tworzenia zaawansowanego oprogramowania, np. projektowania systemów operacyjnych (UNIX) lub kompilatorów).




  • Przenośność – programy korzystające z bibliotek standardowych mogą być łatwo przenoszone pomiędzy różnymi platformami (np. Windows, Unix); zazwyczaj wymagana jest zmiana zawartości plików nagłówkowych, dołączanych do pliku głównego; problemy mogą pojawić się z programami wykorzystującymi specyficzne funkcje systemu operacyjnego lub realizujące bezpośredni dostęp do urządzeń sprzętowych.




  • Ukierunkowanie na programistę – język zawiera wiele standardowych funkcji umożliwiających rozwiązywanie typowych zadań (np. qsort).


Wady języka C





  • Niektóre operatory mają źle określony priorytet.




  • Istnieje możliwość tworzenia skomplikowanych wyrażeń.




  • Istnieje możliwość popełnienia wielu pomyłek podczas korzystania

ze wskaźników.



©operacji.org 2017
wyślij wiadomość

    Strona główna