Wykład 3. Instrukcje powtarzające

Podobne dokumenty
PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

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

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,

dr inż. Jarosław Forenc

for (i=0; i<10; i=i+1) instrukcja; instrukcja zostanie wykonana 10 razy for (inicjalizacja; test; aktualizacja) instrukcja;

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

Pętla for. Wynik działania programu:

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

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

while (test) instrukcja; int i=0; while (i<10) i++; dopóki test prawdziwy wykonuj instrukcję Wykonano: 35% / \ fałsz test prawda instrukcja

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

Język C zajęcia nr 5

Wstęp do wskaźników w języku ANSI C

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

KURS C/C++ WYKŁAD 8. Deklaracja funkcji informuje komplilator jaką wartość funkcja będzie zwracała i jakiego typu są jej argumenty.

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

Wykład 5. Operacje na tablicach

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

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

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

Programowanie komputerowe. Zajęcia 2

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

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

Język C zajęcia nr 11. Funkcje

( wykł. dr Marek Piasecki )

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Katedra Elektrotechniki Teoretycznej i Informatyki. sem. II - wykład 6. Dr hab. inż. M. Czyżak

4. Funkcje. Przykłady

Podstawy Programowania 1 Instrukcje sterujące. Plan. Instrukcje sterujące. Blok instrukcji. Notatki. Notatki. Notatki. Notatki.

. Podstawy Programowania 1. Instrukcje sterujące. Arkadiusz Chrobot. 21 października 2015

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

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

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

Programowanie - wykład 4

Programowanie w C/C++ Instrukcje - konstrukcje powtórka. LABORKA Piotr Ciskowski

#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 C++

BHP JĘZYK C - INSTRUKCJE ITERACYJNE

Wstęp do Informatyki

tablica: dane_liczbowe

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

1 Podstawy c++ w pigułce.

Ćwiczenie 4 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Funkcja (podprogram) void

2 Przygotował: mgr inż. Maciej Lasota

if (warunek) instrukcja1; if (warunek) instrukcja1; else instrukcja2; a > b - a większe od b if (warunek) instrukcja1; a <= b - a mniejsze lub równe b

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

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 3 - sem.iii. Dr inż. M. Czyżak

Programowanie strukturalne i obiektowe

Programowanie w C Wartości pseudolosowe i pomiar czasu

INSTRUKCJE REPETYCYJNE PĘTLE

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

Instrukcje sterujące. Programowanie Proceduralne 1

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Ćwiczenie 5 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Podstawy programowania w języku C

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

1 Podstawy c++ w pigułce.

Podstawy programowania C. dr. Krystyna Łapin

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

Algorytmy i struktury danych. Wykład 4

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

Laboratorium 2: Pętle i instrukcje warunkowe. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

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

Politechnika Białostocka

#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 ); }

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

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

Funkcje i tablice. Elwira Wachowicz. 23 maja 2013

Wstęp do Programowania, laboratorium 02

Podstawy Programowania C 03

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

IX. Wskaźniki.(3 godz.)

Struktury Struktura polami struct struct struct struct

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

Warszawa dnia 2 stycznia 2011 r. Zbiór zadań z programowania w języku C do samodzielnego wykonania

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

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Funkcje. czyli jak programować proceduralne. Programowanie Proceduralne 1

LISTA 5. C++ PETLE for, while, do while

Struktura pliku projektu Console Application

1. Cel projektu. 2. Metoda podziału i ograniczeń dla problemu komiwojaŝera - algorytm Little`a (1962r.). ZAŁOśENIE III

Autor: mgr inż. Sławomir Samolej. Zagadnienie 1. (instrukcja wyboru: switch)

Wprowadzenie do programowania w języku C

Elementarne wiadomości o języku C

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

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

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Programowanie komputerowe. Zajęcia 3

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

Część 4 pętla FOR. Instrukcja pętli iteracyjnej FOR. Postać pętli for jest następująca: a)dla jednej instrukcji wykonywanej przez pętlę.

Stuck in the loop. Sterowanie. Marcin Makowski. 29 października Zak lad Chemii Teoretycznej UJ

np. dla p=1 mamy T1(N) N/2 średni czas chybionego wyszukiwania z prawdopodobieństwem q:

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

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

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

System operacyjny Linux

Ćwiczenie nr 3. Temat: Definicje i wykorzystanie funkcji, parametry funkcji

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19

Transkrypt:

Wykład 3. Instrukcje powtarzające 3_. Instrukcja while Graf działania instrukcji while POCZĄTEK 0 wyrażenie relacyjne.... KONIEC Składnia (zapis) instrukcji while: while (wyrażenie_relacyjne) // ------ Wewnętrzny blok instrukcji jest powtarzany tak długo, dopóki wyrażenie relacyjne po słowie while ma wartość prawda (tj. różną od zera).

2 Przykład Program obliczający pierwiastek kwadratowy metodą Newtona z wykładu 2 #include<conio.h> //dla clrscr #include<stdio.h> //dla printf,scanf #include<math.h> //dla sqrt int main() double x,p; printf("podaj x: "); scanf("%lf",&x); printf("\nkolejne aproksymacje:"); p=x/2.0; // 0. przybliżenie printf("\n\n%.9lf",p); p=(x+p*p)/(2*p); printf("\n%.9lf",p); p=(x+p*p)/(2*p); printf("\n%.9lf",p); p=(x+p*p)/(2*p); printf("\n%.9lf",p); p=(x+p*p)/(2*p); printf("\n%.9lf",p); //. przybliżenie // 2. przybliżenie // 3. przybliżenie // 4. przybliżenie printf("\n\nfunkcja sqrt(%.lf) zwraca: %.9lf",x,sqrt(x)); Program ten można znacznie skrócić, stosując instrukcję while, której warunkiem kontynuacji jest dostatecznie duża różnica pomiędzy kolejnymi przybliżeniami wyniku: while(fabs(p0-p)>=eps) p0=p; p=(x+p*p)/(2*p); printf("\n%.9lf",p); Zmienna p0 pamięta poprzedni wynik, a zmienna p - wynik bieżący. Funkcja fabs(p0-p) zwraca moduł różnicy tych wyników.

3 Cały program przyjmie teraz postać: //newton.cpp //Oblicza pierwiastek kwadratowy. #include<conio.h> //dla getch #include<stdio.h> //dla printf,scanf #include<math.h> //dla sqrt, fabs int main() double x,p,p0; const double EPS=0.00000; printf("podaj x: "); scanf("%lf",&x); printf("\nkolejne aproksymacje:"); p=x/2.0; printf("\n\n%.9lf",p); while(fabs(p0-p)>=eps) p0=p; if (p!=0) p=(x+p*p)/(2*p); printf("\n%.9lf",p); printf("\n\nfunkcja sqrt daje: %.9lf",sqrt(x)); 3_2. Instrukcja for Instrukcję for można traktować jako skrócony zapis instrukcji while. Składnia instrukcji for for (instrukcja, instrukcja ; wyrażenie_relacyjne ; instrukcja, instrukcja) // - - - - -

4 Po słowie kluczowym for, w nawiasach, można wyróżnić trzy sekcje, oddzielone średnikami: for (instrukcja, instrukcja ; wyrażenie_relacyjne ; instrukcja, instrukcja) sekcja sekcja 2 sekcja 3 Sekcje oraz 3 są to pojedyncze instrukcje, lub kilka instrukcji oddzielonych przecinkami. Sekcja 2 jest wyrażeniem relacyjnym. Jego prawdziwość jest warunkiem powtarzania bloku instrukcji wewnętrznych. Graf działania instrukcji for POCZĄTEK instrukcja, instrukcja,... sekcja 0 wyrażenie relacyjne sekcja 2 KONIEC... wewnętrzny blok instrukcji instrukcja, instrukcja,... sekcja 3

5 Przykład Obliczenie wartości funkcji silnia zgodnie z definicją: dla x==0: x!== dla x>0: x!==*2*3 *.* (x-)*x Silnię obliczymy iteracyjnie, tak jak poniżej pokazano dla x==4. S==((()*2)*3)*4)==24 //silnia.cpp //obliczenie x! #include<conio.h> #include<stdio.h> int main() double s;; int x,j; //wczytanie argumentu printf("podaj argument silni: "); scanf("%d",&x); //obliczenie silni for(s=.0,j=;j<=x;j++) //wydruk wyniku printf("\n%d!=%.6lg",x,s);

6 Cykle działania instrukcji for w programie silnia.cpp dla x==4 Numer cyklu Wartość relacji j <= x Instrukcje wykonywane Wartość zmiennej s Wartość zmiennej j 0 (stan początkowy) prawda () s=; j=; prawda () j++ 2 2 prawda () j++ 2 3 3 prawda () j++ 6 4 4 prawda () j++ 24 5 STOP fałsz (0) 24 5 Równoważne sposoby zapisu instrukcji for a/ postać typowa: s=.0; for(j=; j<=x; j++) b/ postać z pustymi sekcjami i 3 s=.0; j=; for( ;j<=x; ) j++;

c/ postać z umieszczeniem kilku instrukcji w sekcjach i 3 for(s=.0, j=; j<=x; s*=j, j++); Instrukcja for i równoważna jej instrukcja while 7 for(j=; j<=x; j++) j=; while(j<=x) j++; Przykład Program do obliczania kilku wyrazów Fibonacci pokazany na wykł. : #include<stdio.h> #include<conio.h> int main() unsigned long ost=,post=0,wyraz=; int n=; printf("\nwyraz %2d: %6lu",n++,wyraz); wyraz=ost+post; post=ost; ost=wyraz; printf("\nwyraz %2d: %6lu",n++,wyraz); wyraz=ost+post; post=ost; ost=wyraz; printf("\nwyraz %2d: %6lu",n++,wyraz); wyraz=ost+post; post=ost; ost=wyraz; printf("\nwyraz %2d: %6u",n++,wyraz); wyraz=ost+post; post=ost; ost=wyraz;

8 Wprowadzając do program instrukcję for, można skrócić zapis i uzyskać możliwość drukowania danej liczby n wyrazów: //fibon_2.cpp //obliczenie i wydruk n wyrazów Fibonacci #include<stdio.h> #include<conio.h> int main() double ost=,post=0,wyraz=; int j,n; printf( Ile wyrazow? ); scanf( %d,&n); for (j=; j<=n; j++) printf("\nwyraz %3d %2lg",j,wyraz); wyraz=ost+post; post=ost; ost=wyraz; 3_3. Instrukcja do while Instrukcję tę zapisujemy ogólnie w następujący sposób: do // - - - - while (wyrażenie_relacyjne);

9 Graf działania instrukcji do while POCZĄTEK - - - -. wyrażenie relacyjne 0 KONIEC Warunek powtarzania (wyrażenie relacyjne) sprawdza się po każdym wykonaniu bloku instrukcji wewnętrznych. Wewnętrzny blok instrukcji zostaje wykonany co najmniej jeden raz! Funkcja rand: Funkcja rand, opisana w <stdlib.h>, pełni funkcję generatora liczby losowej. Po wywołaniu jak poniżej: int x=rand(); przypisze się do zmiennej x liczba losowa z zakresu od 0 do 32767. Zakres ten można zawęzić, stosując operator szukania reszty z dzielenia, na przykład: x=rand()%00; Liczba losowa zapisana w zmiennej x leży teraz w zakresie <0, 99>.

0 Przykład Generowanie 6 uporządkowanych rosnąco liczb losowych //losowe.cpp #include <conio.h> #include <stdio.h> #include <stdlib.h> //dla srand,rand #include <time.h> //dla time int main() int x,x2,x3,x4,x5,x6,j=0; time_t czas; //zmienna dla pamiętania czasu czas=time(null); //aktualny czas (sek.) srand(czas); //ustawienie generatora do x=rand()%00; x2=rand()%00; x3=rand()%00; x4=rand()%00; x5=rand()%00; x6=rand()%00; j++; while (!(x<x2&&x2<x3&&x3<x4&&x4<x5&&x5<x6)); printf("\n%d %d %d %d %d %d", x,x2,x3,x4,x5,x6); printf("\nliczba cykli: %d",j);

3_4. Instrukcje break i continue Działanie instrukcji break: POCZĄTEK wyrażenie relacyjne 0 if (wyr) break; // - - - - -. KONIEC Działanie instrukcji continue: POCZĄTEK wyrażenie relacyjne 0 if (wyr) continue; // - - - - - - -. KONIEC

2 3_5. Zagnieżdżanie instrukcji powtarzających Uwaga: Zagnieżdżone pętle muszą mieć różne zmienne licznikowe! Przykład Drukowanie tablicy mnożenia liczb do 8 //multab.cpp //druk tablicy mnozenia #include<conio.h> #include<stdio.h> int main() printf("\n Tabliczka mnozenia liczb..8"); printf("\n =============================="); for (int j=;j<9;j++) printf("\n"); for(int k=;k<9;k++) printf("%4d",j*k); Przykład Drukowanie wszystkich kombinacji dwóch liter //letters.cpp //Drukuje wszystkie wyrazy dwuliterowe. #include <conio.h> #include <stdio.h> int main() for (char x='a'; x<='z'; x++) for (char y='a'; y<='z';y++) printf("%3c%c",x,y);