Podstawy informatyki

32
Podstawy informatyki

description

Podstawy informatyki. Algorytm – (Wikipedia). Algorytm - skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania. Cechy algorytmu: Jednoznaczność (potrzebne dane, czynności i ich kolejność, oczekiwany wynik) - PowerPoint PPT Presentation

Transcript of Podstawy informatyki

Page 1: Podstawy informatyki

Podstawy informatyki

Page 2: Podstawy informatyki

Algorytm – (Wikipedia)Algorytm - skończony, uporządkowany ciąg

jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania.

Cechy algorytmu: Jednoznaczność (potrzebne dane,

czynności i ich kolejność, oczekiwany wynik)

Możliwość zastosowania do wielu podobnych zadań (klasa zadań rozwiązywanych za pomocą algorytmu)

Page 3: Podstawy informatyki

Przykład – książka w biblioteceProblem- chcemy odszukać książkę znając autora i tytuł.Algorytm: Weź książkę (pierwszą z lewej z najwyższej półki) Sprawdź, czy jest to szukana książka. Jeśli tak – książka znaleziona, koniec algorytmu. Czy pozostały jeszcze niesprawdzone książki? Jeśli nie – książki nie ma w tej bibliotece, koniec

algorytmu. Weź następną książkę (kolejna z prawej a gdy już nie

ma pierwsza z lewej z niższej półki). Przejdź do punktu 2.

Page 4: Podstawy informatyki

Poprawność, wykonalnośćPoprawny algorytm – dla określonej klasy

danych zawsze otrzymujemy wynik zgodny z oczekiwaniami np. największą z możliwych wartość wskaźnika podczas optymalizacji.

Wykonalny algorytm - dla określonej klasy danych algorytm zawsze się kończy (własność stopu). Algorytm musi być wykonalny aby mógł być poprawny.

Page 5: Podstawy informatyki

Złożoność obliczeniowa Złożoność czasowa – czas najczęściej zależy od

wymiarowości zadania. O czasie wykonania obliczeń decyduje niewielka część najczęściej wykonywanych operacji. Typowe zależności:

Czas stały niezależny od wymiarowości Liniowa (n) Logarytmiczna (log2n) Liniowo-logarytmiczna (n * log2n) Kwadratowa (n2 )

Złożoność pamięciowa – często istnieje wymienność, szybsze obliczenia kosztem większego zapotrzebowania na pamięć

Przykład – szukanie książki (w zbiorze n książek) Złożoność pesymistyczna – n sprawdzeń Złożoność średnia – n/2 sprawdzeń

Page 6: Podstawy informatyki

Katalog uporządkowany Dla katalogu nieuporządkowanego nie

znamy lepszego algorytmu wyszukiwania niż „pełny przegląd” (n)

Dla katalogu uporządkowanego istnieje szybszy algorytm – „wyszukiwanie binarne” ((log2n)

Page 7: Podstawy informatyki

Język programowaniaPrzeznaczenie: definiowanie algorytmów.Wymagane cechy: Jednoznaczność Przejrzystość Zwarty zapis Precyzja. CzytelnośćJęzyk programowania służy do: Komunikowania się programisty z komputerem Komunikowania się programisty z innymi

programistami Komunikowania się programisty z samym

sobą.

Page 8: Podstawy informatyki

Podstawowe elementy Komentarze – uwagi pomagające

zrozumieć opis algorytmu Deklaracje – używane biblioteki,

przestrzeń nazw, opcje,… Zmienne – nazwa, typ (int, float, text) Stałe – dane używane w obliczeniach Struktury kontrolne (if, for, while,..) Procedury, funkcje, klasy

Page 9: Podstawy informatyki

Zmienne i stałe Stała – pewna wartość używana podczas

obliczeń np. 0.22 , ”abc” Zmienna – nazwana wielkość używana w

obliczeniach, która może w trakcie obliczeń przyjmować różne wartości.

Do przechowywania zmiennych rezerwuje się potrzebną ilość pamięci

Podstawienie wartości na zmienną x=50 lub x=x+y

Zmienne wykorzystujemy w wyrażeniach arytmetycznych i logicznych np.:

if (x <100 && x>40) x=x+30;

Page 10: Podstawy informatyki

Struktury kontrolne Zmieniają kolejność wykonywania

komend języka if ( x > 100 ) { x1 = x } else { x1 = x+x1 } for (i = 0; i < 10; i++) { a[i] = a[i+1];} do {i++;} while (i < 10); switch (s) { case ”a”: x=”b”; break; … goto et100;

Page 11: Podstawy informatyki

Procedury i funkcje Przeznaczenie: wygodne wydzielenie

powtarzalnego fragmentu kodu np.:

int xy(int x, int y) {

… powtarzany fragment kodu

} int – typ zwracanego wyniku xy – nazwa funkcji x – przekazywany parametr y – przekazywany parametr

Page 12: Podstawy informatyki

Rekurencja Wywoływanie funkcji przez siebie Przydatny sposób do realizacji

algorytmów dotyczących struktur wykazujących podobieństwo na różnych poziomach np. struktur hierarchicznych

Realizacja z wykorzystaniem stosu – możliwe przepełnienie stosu

Page 13: Podstawy informatyki

Klasy Wspólna definicja obiektów opisywanych

tym samym zestawem atrybutów i funkcji Dziedziczenie – definiowanie nowej klasy

na podstawie już zrealizowanej

Page 14: Podstawy informatyki

Wyrażenia arytmetyczne i logiczne W językach programowania można

używać swobodnie złożonych wyrażeń arytmetycznych i logicznych

Page 15: Podstawy informatyki

Semantyka i syntaktyka W językach programowania ściśle określa się

syntaktykę (gramatykę) – dopuszczalną budowę zdań języka (kolejność elementów, relacje między nimi,…)

semantykę – znaczenie poszczególnych elementów języka (co spowoduje użycie pewnej konstrukcji językowej)

Notacja BNF (Backus-Naur form) – ścisłe definiowanie gramatyki języków programowania (bezkontekstowe)

Przykład:<liczba_binarna> ::= <liczba_binarna> <cyfra>

<liczba_binarna> ::= <cyfra><cyfra> ::= 0 | 1

Page 16: Podstawy informatyki

Języki proceduralne Biblioteki procedur podzielone na grupy

funkcjonalne Wszystkie dane potrzebne do wykonania

przekazywane jako parametry podczas wywołania procedury (funkcji)

Page 17: Podstawy informatyki

Języki obiektowe Definiujemy klasę obiektów podając listę

atrybutów określających obiekt oraz listę funkcji, za pomocą których można wpływać na działanie obiektu.

Tworzymy egzemplarze obiektów (słowo kluczowe new) np. przyciski w okienku.

Do atrybutów można odwoływać się poprzez nazwę obiektu i nawę atrybutu np. nazwa.atrybut

Funkcje obiektu można uruchomić podając nazwę obiektu i nazwę funkcji np.nazwa.funkcja()

Page 18: Podstawy informatyki

Języki programowania

Prolog Lisp Perl, PHP JavaScript

Assembler Fortran Algol Cobol PL-1 C Simula, Smalltalk C++ Java, C#

Page 19: Podstawy informatyki

Assembler i macro-assembler Język programowania niskiego poziomu Asembler operuje na rejestrach procesora i

komórkach pamięci Komendy odpowiadają rozkazom procesora Różne zestawy komend dla różnych modeli

komputerów – brak przenośności oprogramowania pisanego w assemblerze

Macro-assembler – możliwość definiowania szablonów, krótszy i bardziej czytelny kod ale trudności podczas testowania.

Page 20: Podstawy informatyki

Rejestry procesora x86 AX – akumulator DX – rozszerzenie akumulatora do

mnożenia i dzielenia CX – licznik iteracji BX – główny rejestr adresowy SP – wskaźnik stosu BP – wskaźnik ramki SI, DI – pomocnicze rejestry adresowe IP – licznik instrukcji FLAGS – rejestr wskaźników

Page 21: Podstawy informatyki

Typowe rozkazy procesora kopiowanie danych z pamięci do rejestru kopiowanie danych rejestru do pamięci zapamiętywanie danych na stosie pobieranie danych za stosu dodawanie zawartości rejestrów odejmowanie zawartości rejestrów dodawanie i odejmowanie jedności zmiana znaku liczby działania na bitach iloczyn logiczny, suma

logiczna, suma modulo 2 (różnica symetryczna), negacja, przesunięcie bitów w lewo lub prawo

skoki bezwarunkowe skoki warunkowe

Page 22: Podstawy informatyki

Przykładowy program w assemblerze

start: mov ah, 9

mov dx, info

int 21h

mov ah, 0

int 16h

mov ax, 4C00h

int 21h

Info db „Hello world$"

Page 23: Podstawy informatyki

FORTRAN – formula translator zespół Johna Backusa 1954-57, IBM Uniwersalny język do obliczeń inżynierskich Programowanie z użyciem kart perforowanych Wyrażenia arytmetyczne, tablice, funkcje

Page 24: Podstawy informatyki

Algol – algorithmic language John Backus, Peter Naur – specyfikacja przy

współpracy międzynarodowej (Algol 60) Uniwersalny język algorytmiczny oparty na ściśle

zdefiniowanej gramatyce (notacja BNF) Instrukcje blokowe (begin end) Tablice dynamiczne (rozmiar definiowane w

trakcji obliczeń a nie podczas translacji) Rekurencja – wywoływanie procedur przez

siebie Przekazywanie parametrów do procedur przez

wartość

Page 25: Podstawy informatyki

COBOLCommon Business Oriented Language

Język przetwarzania danych biznesowych Bardzo czytelny zapis – niepotrzebna

dodatkowa dokumentacja Rozbudowana składnia Tylko zmienne globalne Brak dynamicznej alokacji pamięci, rekurencji Proste programowanie ale dużo pisania

Page 26: Podstawy informatyki

PL-1 Programming Language One Opracowany w IBM na początku lat 60-tych „Wszystkomający” uniwersalny język

programowania dla celów naukowych, inżynierskich i biznesowych

Wiele typów danych Struktury danych Rozbudowane operacje we-wy dla wielu

urządzeń Obszerna dokumentacja

Page 27: Podstawy informatyki

Język C Opracowany dla własnych potrzeb do realizacji

jądra systemu operacyjnego Unix 1969-73 w Laboratoriach Bell’a

W 1978 Brian Kernighan i Dennis Ritchie opublikowali jego dokumentację

Zwarty zapis np. { } zamiast begin end, i++ zamiast i = i + 1

Standardowa biblioteka funkcji (funkcje matematyczne, operacje we-wy, współpraca z systemem operacyjnym)

Użycie zmiennych wskaźnikowych

Page 28: Podstawy informatyki

Simula Rozszerzenie Algolu Opracowany w 1967 w Oslo jako

uniwersalny język dla potrzeb symulacji Wprowadzono koncepcje klasy i obiektu Obiekty należące do tej samej klasy są

opisywane przez te same parametry i funkcje

Obiekty mogą być tworzone i usuwane

Page 29: Podstawy informatyki

Smalltalk Powstał w latach 70-tych w firmie Xerox Pierwszy czysto obiektowy język

programowania Wszystkie dane (nawet stałe) są obiektami Koncepcja maszyny wirtualnej –

implementacja na różnych platformach Garbage collection – odzyskiwanie

nieużywanej pamięci Zgrabny język o dużych możliwościach

definiowania nowych funkcjonalności

Page 30: Podstawy informatyki

C++ Powstał w latach 80-tych, Bjarne Stroustrup Rozszerzenie obiektowe języka C Klasy, dziedziczenie Konstruktory i destruktory – metody wywoływane

podczas tworzenia i usuwania obiektów Bezpośrednie zarządzanie dostępną pamięcią.

Operatory new i delete do alokacji pamięci dla danych, struktur i klas

Przestrzenie nazw …Bogaty ale dość złożony język, którym łatwomożna zrobić wszystko włącznie z błędami.

Page 31: Podstawy informatyki

Java Opracowany w Sun Microsystems w latach

1991-94, James Gosling Podstawowe koncepcje przejęte z języka

Smalltalk, składnia wzorowana na C++ ale starano się usunąć te elementy, które były przyczyną błędów programistycznych w C++

Kompilowany do kodu bajtowego – implementacja na wielu platformach

Garbage collection Dziedziczenie tylko od jednej klasy Bogate biblioteki klas Nacisk na zastosowania sieciowe i

programowanie rozproszone Uruchamianie programów – NetBeans, JBuilder

Page 32: Podstawy informatyki

C# - C Sharp Odpowiedź Microsoftu na język Java Powstał w 2000 w zespole kierowanym przez

Andersa Hejlsberga Kod kompilowany do języka CIL, wymaga

środowiska uruchomieniowego .NET lub Mono DotGNU

Garbage collection Dziedziczenie tylko z jednej klasy Możliwość dynamicznego tworzenia kodu w

trakcie działania programu Bogate biblioteki klas .NET firmy Microsoft Silne wsparcie przy uruchamianiu programów w

Visual Studio