Podstawy programowania. Wykład 3 Konstrukcje sterujące. Krzysztof Banaś Podstawy programowania 1

Podobne dokumenty
OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Wstęp do Programowania, laboratorium 02

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Podstawy Programowania Podstawowa składnia języka C++

Proste algorytmy w języku C

Język C część 2. Podejmowanie decyzji w programie. if else. switch

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

Instrukcje sterujące. Programowanie Proceduralne 1

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

Proste algorytmy w języku C

1 Podstawy c++ w pigułce.

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

1 Podstawy c++ w pigułce.

Algorytm. a programowanie -

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Programowanie, algorytmy i struktury danych

Podstawy programowania w języku C

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

Język C zajęcia nr 5

Język ludzki kod maszynowy

Podstawy programowania. Wykład 2 Zmienne i obsługa wejścia/wyjścia. Krzysztof Banaś Podstawy programowania 1

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Język C, instrukcje sterujące (laboratorium)

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Język C - podstawowe informacje

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 3. Instrukcje wyboru

Platforma.NET. Laboratorium nr 1 Podstawy języka C#

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja!

Podstawy programowania C. dr. Krystyna Łapin

W wielu obliczeniach w matematyce bądź fizyce wykonanie niektórych kroków zależy od spełnienia warunku.

Programowanie strukturalne i obiektowe

Praktyka Programowania

Podstawy Programowania C++

Podstawy programowania - 1

Zapis algorytmów: schematy blokowe i pseudokod 1

Spis treści JĘZYK C - ZAGNIEŻDŻANIE IF-ELSE, OPERATOR WARUNKOWY. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

W języku C dostępne są trzy instrukcje, umożliwiające tworzenie pętli: for, while oraz do. for (w1;w2;w3) instrukcja

Odczyt danych z klawiatury Operatory w Javie

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

KURS C/C++ WYKŁAD 1. Pierwszy program

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Co nie powinno być umieszczane w plikach nagłówkowych:

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

Instrukcja warunkowa i wyboru

PHP w-3. Sterowanie w PHP

Podstawy Programowania.

Technologie informacyjne - wykład 12 -

Spis treści JĘZYK C - ZAGNIEŻDŻANIE IF-ELSE, OPERATOR WARUNKOWY. Metodyki i techniki programowania

2 Przygotował: mgr inż. Maciej Lasota

1. Wprowadzanie danych z klawiatury funkcja scanf

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

tablica: dane_liczbowe

typ_zwracanej_wartości nazwa_funkcji(lista deklaracji argumentów) { ciało(treść) funkcji return Val; //zwracana wartość }

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Podstawy Programowania

Wstęp do programowania. Wykład 1

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Wstęp do programowania

int f(); //f - funkcja zwracająca wartość typu int int (*f)(); //f - wskaźnik do funkcji zwracającej wartość typu int

Część 4 życie programu

Języki programowania zasady ich tworzenia

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Programowanie strukturalne język C - wprowadzenie

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Język C zajęcia nr 7. Uwagi dotyczące stylu programowania

Programowanie - instrukcje sterujące

1. WSTĘP. Dr inż. Robert Wójcik, p. 313, C-3, tel

Wprowadzenie do programowania w języku C

dr inż. Jarosław Forenc

Spis treści JĘZYK C - INSTRUKCJA WARUNKOWA IF, OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE, ZAGNIEŻDŻANIE IF-ELSE.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

I. Podstawy języka C powtórka

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Podstawy programowania skrót z wykładów:

Podstawy programowania (1)

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

3. Instrukcje warunkowe

Wstęp do programowania 1

1 Wielokrotne powtarzanie tych samych operacji

Błędy leksykalne są na ogół nietrudne do znalezienia.

Kontrola przebiegu programu

4. Funkcje. Przykłady

WYKORZYSTANIE PORTALU DYDAKTYCZNEGO W NAUCE JĘZYKÓW PROGRAMOWANIA

Transkrypt:

Podstawy programowania. Wykład 3 Konstrukcje sterujące Krzysztof Banaś Podstawy programowania 1

Kod źródłowy i wykonanie programu Kod źródłowy w języku programowania zawiera przepis wykonania programu W maszynie von Neumana procesor wykonuje kolejne rozkazy w kodzie binarnym przy kompilacji instrukcja po instrukcji oznacza to kolejne instrukcje kodu źródłowego chyba że... w kodzie pojawiają się instrukcje sterujące instrukcja sterująca umożliwia wybór kolejnego rozkazu do wykonania czyli ewentualne ominięcie pewnych rozkazów skok do przodu w kodzie binarnym cofnięcie się do wcześniejszych rozkazów skok do tyłu w kodzie binarnym Krzysztof Banaś Podstawy programowania 2

Kod źródłowy i wykonanie programu Dzięki instrukcjom sterującym pewne fragmenty kodu mogą nie być wykonane pewne fragmenty kodu mogą być wykonane wiele razy w konsekwencji liczba rozkazów wykonanych w trakcie działania programu nie ma związku z liczbą rozkazów w kodzie binarnym zależy raczej od (rozmiaru) danych wejściowych W kodzie binarnym instrukcje sterujące mają postać skoków (do przodu lub do tyłu) wykonanie skoku może zależeć od spełnienia pewnych warunków przez dane w programie W kodzie źródłowym występują instrukcje sterujące zdefiniowane dla danego języka programowania najważniejsze instrukcje sterujące w C/C++ to instrukcje wyboru (if, switch) pętle (for, while, do) Krzysztof Banaś Podstawy programowania 3

Instrukcje sterujące if( wyrażenie ) {...(instrukcja lub blok instrukcji)... } if( wyrażenie ) {... } else {... } if( wyrażenie_1 ) {... } else if (wyrażenie_2 ) {... } else if (wyrażenie_3 ) {... } else {... } Krzysztof Banaś Podstawy programowania 4

Instrukcje sterujące Switch printf("\nwprowadź cyfrę od 1 do 5: \n"); scanf(" %c",&c); switch (c) { case '0': printf("wprowadzono: 0\n"); break; case '1': printf("wprowadzono: 1\n"); case '2': printf("wprowadzono: 1 lub 2\n"); break; case '3': printf("wprowadzono: 3\n"); break; case '4': case '5': printf("wprowadzono: 4 lub 5\n"); break; default: printf("wprowadzono: znak spoza zakresu 0-5\n"); break; } Krzysztof Banaś Podstawy programowania 5

Rozwiązanie równania kwadratowego Definicja problemu: dane wejściowe: liczby a, b, c dane wyjściowe: liczby x 1 i x 2 będące pierwiastkami równania kwadratowego ax 2 + bx + c = 0 ( a*(x x 1 )*(x x 2 )=0 ) kontrakt procedury obejmuje także: warunki wstępne (precondition) typy i dopuszczalne wartości a, b, c (kiedy procedura ma sprawdzać dane wejściowe?) warunki końcowe (postcondition) dodatkowe informacje o x 1, x 2 (np. czy algorytm ma uwzględniać tylko pierwiastki rzeczywiste) sytuacje zgłaszania komunikatów o błędzie Krzysztof Banaś Podstawy programowania 6

Rozwiązanie równania kwadratowego Algorytm w pseudokodzie: wczytaj a, b, c oblicz delta = b*b 4*a*c jeżeli(delta<0) wypisz( złe dane ) i zakończ program jeżeli(delta>0) (tzn. w każdym innym przypadku) oblicz x1 = ( b sqrt(delta))/(2*a) oblicz x2 = ( b + sqrt(delta))/(2*a) wypisz wartości x1,x2 zakończ program (co jeśli a=0?) Krzysztof Banaś Podstawy programowania 7

Rozwiązanie równania kwadratowego Możliwa realizacja algorytmu (zbliżona do assemblera): wczytaj(a,b,c) delta = b*b 4*a*c PORÓWNAJ(delta,0) JEŚLI MNIEJSZE SKOCZ DO L1 x1 = ( b sqrt(delta))/(2*a) x2 = ( b + sqrt(delta))/(2*a) wypisz(x1,x2) SKOCZ DO L2 L1: wypisz( złe dane ) L2: STOP W przypadku uwzględnienia sprawdzania wartości a i b zapis jest jeszcze mniej czytelny Krzysztof Banaś Podstawy programowania 8

Rozwiązanie równania kwadratowego Krzysztof Banaś Podstawy programowania 9

Rozwiązanie równania kwadratowego #include <math.h> // USES (podobnie stdlib.h i stdio.h) // rozwiązanie równania kwadratowego ax^2 + bx + c = 0 int main(void) { int a, b, c; // rozważania o kontrakcie..., input - uodpornianie na błędy wczytywania danych printf("podaj parametr a: "); scanf("%d", &a); // adres! - podobnie wczytanie b i c if(a==0 && b==0){ // alternatywa: if( a==0 b==0 ) - zależnie od kontraktu printf("błędne dane: a i b równe 0. Przerwanie programu.\n"); exit(-1); } else{ if(a==0) { // równanie liniowe, co mówi kontrakt? }else{ double delta; // zakres widoczności nazwy - powiązanie z czasem życia delta = b*b - 4*a*c; if(delta<0){ printf("dwa pierwiastki zespolone - nie umiem obliczyć\n"); } else if (delta == 0){ printf("pierwiastek rzeczywisty: x = %lf\n", -b/(2.0*a) ); } else { double temp = sqrt(delta); printf("dwa pierwiastki rzeczywiste: x1 = %lf, x2 = %lf\n", (-b-temp)/(2.0*a), (-b+temp)/(2.0*a) ); } } // znaczenie wcięć i nawiasów klamrowych dla zwiększenia czytelności kodu } return(0); } Krzysztof Banaś Podstawy programowania 10

Problem skończonej precyzji Algorytm rozwiązania równania kwadratowego: x1 [x2] = ( b + [ ] sqrt( delta )) / (2*a) przykład (4 cyfry znaczące): a = 1, b = 320, c = 16 b2 = 102400, 4*a*c = 64, delta = 102400 64 = 102336 delta zaokrąglana do 102300, pierwiastek do 319.8 x1 = (320+319.8)/2 = 319.95 319.9» dokładnie x1 = 319,949992185 błąd względny 0,01% x2 = (320 319.8)/2 = 0.1» dokładnie x2 = 0,050007815 błąd względny 100% Zmiana algorytmu x1 = b +/ sqrt( delta )) / (2*a) ; x2 = c / (a*x1) przykład (4 cyfry znaczące): x1 = (320+319.8)/2 = 319.95 319.9 błąd względny 0,01% x2 = 16/319.9 = 0.05 błąd względny 0,015% Krzysztof Banaś Podstawy programowania 11