Inf1 Wyklad1 [tryb zgodno[ci]

45
Informatyka 1 Wstęp dr inż. Małgorzata Detka

Transcript of Inf1 Wyklad1 [tryb zgodno[ci]

Informatyka 1

Wstęp

dr inż. Małgorzata Detka

2

Plan

Informacje organizacyjne

Literatura

Wprowadzenie

Algorytm

Przykłady algorytmów

3

Informacje organizacyjne

Wykładowca: dr inż. Małgorzata Detka

Numer pokoju: 5.08, budynek D

Numer telefonu: 41 34-24-157

Adres e-mail: [email protected]

4

Literatura

Brian W. Kernighan, Dennis M. Ritchie, „Język ANSI C. Programowanie”, Wydanie 2, Wydawnictwo Helion, Gliwice 2010

PiotrWróblewski, „Algorytmy, struktury danych i techniki programowania”, Helion, Gliwice 1997

Jon Bentley, „Perełki Oprogramowania”, WNT, Warszawa 1992

Alfred V. Aho, John E. Hopcroft, Jeffrey D. Ullman „Algorytmy i struktury danych”, Helion, Gliwice 2003

5

Literatura

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, „Wprowadzenie do algorytmów”, WNT, Warszawa 1998

Donald E. Knuth, „Sztuka programowania”, WNT, Warszawa 2002

Steven S. Skiena, “The Algorithm Design Manual”,Springer-Verlang, London 2010 (w języku angielskim)

6

Literaturazasoby internetowe

Wikibooks: Język C

The GNU C programming tutorial

Learning GNU C

The GNU C Library

7

Programowanie

Historia Programowania

8

Programowanie

Programowanie komputerów – jest to zespół czynności,którego celem jest przygotowanie programu dla systemukomputerowego. W skład tych czynności wchodzą:opracowanie modelu problemu, który chcemy rozwiązać zapomocą komputera, opracowanie algorytmu (lub algorytmów)rozwiązania, zakodowanie tego algorytmu za pomocąwybranego języka programowania oraz usunięcie błędówskładniowych i logicznych.

9

Program komputerowy

Program komputerowy – to zapis algorytmu lub algorytmówrozwiązania pewnych problemów w określonym językuprogramowania.

10

Algorytm

Algorytm – jest to skończony zbiór precyzyjniezdefiniowanych czynności koniecznych do wykonaniaokreślonego zadania.

Zapis algorytmu działania w wybranym języku programowania nazywamy implementacją algorytmu.

11

Język programowania

Językiem programowania nazywamy zestaw zasadtekstowego lub graficznego opisu algorytmu za pomocąprzyjętych elementów języka.Po implementacji algorytmu w wybranym języku opisutekstowego powstaje kod źródłowy programu, czyli tekstprogramu.

12

Program komputerowy

Tworzenie programu komputerowego dzielimy na dwa etapy:

ETAP 1Po zrodzeniu się pomysłu powinien powstać algorytm. Algorytm wymuszastosowanie podziału programu na funkcje, zmienne oraz obiekty, na którychprogram będzie operował, jak również wprowadzenie procedur, któreopisują wykonywane operacje.

ETAP 2Algorytm zapisujemy w wybranym języku programowania, stosującdostępne struktury danych i funkcje – tworzymy kod źródłowy programu. Wtrakcie tworzenia programu kod poddajemy debugowaniu, a efekt pracymożemy sprawdzić po kompilacji kodu na program wykonywalny.

13

Program komputerowy

DEBUGGINGW trakcie pisania programu w kodzie źródłowym mogą pojawić się błędy, np. literówki lub funkcje, które nie zostały zdefiniowane. Aby wychwycić wszystkie niebezpieczne miejsca w kodzie źródłowym, kod poddaje się debugowaniu (wyszukiwaniu błędów – robaków).

KOMPILACJAKod źródłowy napisany jest w języku programowania czytelnym dla programisty, ale nie dla komputera. Dlatego musi być zamieniony na instrukcje zrozumiałe dla komputera, a właściwie na ciąg zer i jedynek. Proces ten nazywa się kompilacją, a programy, które realizują ten proces nazywamy kompilatorami.Po kompilacji otrzymuje się program wykonywalny , tzn. gotowy do bezpośredniego uruchomienia przez komputer.

14

Języki programowania Kod maszynowyKomputer jako urządzenie elektroniczne działa na zasadzie przekazywaniapodzespołom sygnałów binarnych – „1” (np. od 2,7 V do 5 V) lub „0” (np. od 0 V do1,8 V). Kod maszynowy jest odpowiednikiem sygnałów binarnych, reprezentującychciąg instrukcji obsługiwanych przez sprzęt (zapis kodu za pomocą instrukcjiprocesora).Języki niskopoziomowePrzedstawiają one instrukcje udostępniane przez system komputerowy w postaciprostych oznaczeń (o ograniczonej liczbie, zakodowane w procesorze). Do językówniskopoziomowych należą Assemblery.Języki wysokopoziomoweSą to języki o wyższym poziomie abstrakcji, bardziej zrozumiałe dla człowieka iniezależne od architektury elektrycznej sprzętu komputerowego.Np. wyświetlenie tekstu na ekranie używając assemblera wymaga napisaniakilkudziesięciu instrukcji. W języku wysokopoziomowym wystarczy wpisać np.print(‘tekst’).Pascal, C, C++, Java.

15

Języki programowania

Języki wysokopoziomowe dzielimy na dwie grupy:• Interpretowalne• Kompilowalne.

Języki interpretowalne nie wymagają kompilacji – HTML, PHP, JavaScript, używane do tworzenia serwisów WWW.

Języki kompilowalne wymagają procesu kompilacji kodu źródłowego do postaci kodu maszynowego, aby program mógł być wykonywany – Pascal, C, C++, Java.

16

Środowiska programistyczne

Do utworzenia programu w danym języku niezbędne są edytor tekstu,debugger i kompilator.

Programy te mogą tworzyć integralne środowisko pracy, udostępniającekombinacje tych funkcji – mówimy wówczas o środowiskuprogramistycznymnp.. Code::Blocks.

17

Algorytm

Jeżeli mamy do wykonania jakieś zadanie, budujemy sposób, przepisrealizacji tego zadania. Taki przepis to algorytm. Dopiero po zapisaniu wkonkretnym języku programowania algorytm staje się programem.

Algorytm to sposób postępowania, który prowadzi do rozwiązania wskończonej liczbie kroków.

18

Własności algorytmu

Skończoność – wykonanie algorytmu zawsze musi się zatrzymać po skończonej liczbiekroków. Procedura, która ma wszystkie cechy algorytmu, poza skończonością nazywanajest procedurą obliczeniową.

Dobre zdefiniowanie – każdy krok algorytmu musi być opisany precyzyjnie, dla każdegoprzypadku akcje muszą być opisane ściśle i jednoznacznie,

Dane wejściowe – algorytm ma zero lub więcej danych wejściowych, tj. wartości, które sąznane przed rozpoczęciem wykonania algorytmu,

Dane wyjściowe – algorytm generuje jedną lub więcej danych wyjściowych, czyli wartościw określony sposób powiązanych z danymi wejściowymi.

Efektywność – z praktycznego punktu widzenia, algorytm nie tylko powinien daćsię wykonać w skończonym czasie, ale również ten czas powinien być możliwiekrótki.

19

Zapis algorytmu

Algorytmy mogą być zapisane w postaci zrozumiałej dlaczłowieka lub nadającej się do wykonania przez komputer. Wpierwszym przypadku może on być opisany słownie lubprzedstawiony za pomocą schematu blokowego.

20

Zapis algorytmuJęzyk naturalnySchematy blokoweJęzyki formalne

21

Zapis algorytmu

Schemat blokowy – szczególna forma zapisu algorytmu,złożona z bloków działań w formie figur geometrycznychpołączonych skierowanymi liniami obrazującymi możliweprzebiegi działań.

22

Elementy schematu blokowego

Start – początek programu

Stop – koniec programu

Blok wejścia – wprowadzanie danych

23

Elementy schematu blokowego

Blok wyjścia – wyprowadzanie wyników

Blok operacyjny – przetwarzanie danych

Blok decyzyjny

24

Elementy schematu blokowego

Pętla „dopóki” - z warunkiem na początku

Pętla „powtórz” - z warunkiem na końcu

25

Elementy schematu blokowego

Pętla „dla” - liczona

26

Algorytmy

Algorytmy dzielimy na:

algorytmy liniowe, jeśli wykorzystują operacje

bezpośredniego następstwa,

algorytmy warunkowe, jeśli wykorzystują operacje

warunkowe,

algorytmy iteracyjne, jeśli wykorzystują pętle.

27

Algorytm dodawania dwóch liczb

Przykład 1

28

Przykład 1

#include <stdio.h>#include <stdlib.h>

int main(){

int a,b,suma;

printf("Podaj a: ");scanf("%d",&a);printf("Podaj b: ");scanf("%d",&b);suma=a + b;printf("Suma: %d",suma);return 0;

}

29

Algorytm wyznaczania minimum z trzech liczb

Przykład 2

30

Przykład 2#include <stdio.h>#include <stdlib.h>

int main(){

int a,b,c,min;printf("Podaj a: ");scanf("%d",&a);printf("Podaj b: ");scanf("%d",&b);printf("Podaj a: ");scanf("%d",&c);min=a;if(b<min) min=b;if(c<min) min=c; printf("Liczba minimalna: %d",min);return 0;

}

31

Algorytm obliczania wartości funkcji

Przykład 3

32

Przykład 3

main(){float x,f;printf("Podaj x: ");scanf("%f",&x);if(x<=5)

f=pow((x-5),2);else

f=sqrt(x-5);printf("Wartosc funkcji

dla %f wynosi:%f",x,f);}

33

Algorytm obliczania wartości funkcji

Przykład 4

34

Przykład 4int main(){

float x,f;

printf("Podaj x: ");scanf("%f",&x);if(x<=-1)

f=x;else

if(x>1)f=-x;

elsef=-1;

printf("%f",f);

return 0;}

35

Rozwiązanie równania kwadratowego

Przykład 5

36

Przykład 5#include <stdio.h>#include <stdlib.h>

int main(){

float a, b, c, delta, x, x1, x2;

printf("Podaj a: ");scanf("%f",&a);printf("Podaj b: ");scanf("%f",&b);printf("Podaj c: ");scanf("%f",&c);delta = b*b-4*a*c;if(delta<0) printf("Brak

pierwiastkow rzeczywistych");

else if(delta==0) {x=-b/(2*a);printf("x=%f",x);

}else{x1=(-b-sqrt(delta))/(2*a);x2=(-b+sqrt(delta))/(2*a);printf("x1=%f, x2=%f",x1,x2);

}return 0;

}

37

Algorytm sumowania ciągu podanych liczb

Przykład 6

38

Przykład 6

main(){int n,x,suma;

printf("Podaj ilosc elementow n: ");

scanf("%d",&n);suma=0;for(int i=0; i<n;i++){

printf("Podaj x:");scanf("%d",&x);suma=suma+x;

}printf("Suma: %d",suma);

}

39

Przykład 7

Algorytm Eukildesa wyznaczania największego wspólnegodzielnika dodatnich liczb całkowitych (NWD).

ProblemDane są dwie liczby całkowite M i N, należy znaleźć ich największywspólny dzielnik, tj. największą dodatnią liczbę całkowitą, któradzieli całkowicie zarówno M, jak i N.

40

Przykład 7main(){

int M,N,R;

printf("Podaj pierwsza liczbe naturalna M:");

scanf("%d",&M);printf("Podaj druga liczbe

naturalna N:");scanf("%d",&N);R=M % N;while(R!=0){

M=N;N=R;R=M%N;

}printf("%d",N);return 0;

}

41

Code::Blocks

42

Code::Blocks

43

Code::Blocks

44

Code::Blocks

45

Informatyka 1

Dziękuję za uwagę