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

Podobne dokumenty
PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

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

Programowanie - wykład 4

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

Pętla for. Wynik działania programu:

Język C, tablice i funkcje (laboratorium, EE1-DI)

dr inż. Jarosław Forenc

2 Przygotował: mgr inż. Maciej Lasota

Instrukcje sterujące

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

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

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

Język C zajęcia nr 5

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

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

do instrukcja while(wyrażenie);

Podstawy Programowania C++

Instrukcje sterujące. Programowanie Proceduralne 1

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Programowanie strukturalne i obiektowe

Programowanie komputerowe. Zajęcia 3

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

Język C, tablice i funkcje (laboratorium)

BHP JĘZYK C - INSTRUKCJE ITERACYJNE

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

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

1 Podstawy c++ w pigułce.

do instrukcja while (wyrażenie);

1 Podstawy c++ w pigułce.

Wstęp do informatyki- wykład 7

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

IX. Wskaźniki.(3 godz.)

Politechnika Białostocka

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

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Programowanie - instrukcje sterujące

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

5 Przygotował: mgr inż. Maciej Lasota

Funkcja (podprogram) void

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

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

for (inicjacja_warunkow_poczatkowych; wyrazenie_warunkowe; wyrazenie_zwiekszajace) { blok instrukcji; }

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ę.

tablica: dane_liczbowe

for (inicjacja_warunkow_poczatkowych(końcowych); wyrazenie_warunkowe; wyrazenie_zwiekszajace(zmniejszające)) { blok instrukcji; }

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

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

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

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

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

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

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

Podstawy Programowania C 02

Wykład 3. Instrukcje powtarzające

PROGRAMOWANIE W C++ ZADANIA

PRZYKŁADY OPERACJI PLIKOWYCH z wykorzystaniem biblioteki <stdio.h>

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

Wstęp do Programowania, laboratorium 02

Wstęp do informatyki- wykład 6

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne

Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle.

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

Część 4 życie programu

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

WHILE (wyrażenie) instrukcja;

Podstawy Programowania.

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Stałe, tablice dynamiczne i wielowymiarowe

Programowanie strukturalne i obiektowe. Funkcje

Pętle instrukcje powtórzeo

Proste programy w C++ zadania

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

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

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

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

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Konstrukcje warunkowe Pętle

Programowanie proceduralne w języku C++ Pętle, tablice

Iteracje. Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony.

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

WHILE (wyrażenie) instrukcja;

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

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

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

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

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

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

ALGORYTMY I STRUKTURY DANYCH

Jak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest

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

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

Podstawy programowania C. dr. Krystyna Łapin

Rekurencja (rekursja)

Funkcje i tablice. Elwira Wachowicz. 23 maja 2013

Podstawy Programowania

Zmienne, stałe i operatory

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

Programowanie komputerowe. Zajęcia 2

Transkrypt:

Pętle W języku C dostępne są trzy instrukcje, umożliwiające tworzenie pętli: for, while oraz do. Instrukcja for ma następującą postać: for (w1;w2;w3) instrukcja w1, w2, w3 są wyrażeniami Schemat blokowy pętli for wygląda następująco: w1 NIE w2 TAK w3 instrukcja Instrukcja: for(;;) oznacza pętlę nieskończoną. Oto przykład programu wykorzystującego pętlę for, który oblicza sumę n liczb wprowadzanych z klawiatury:

START czytaj n suma=0 i=0 i>n czytaj x pisz suma suma =suma+x STOP i=i+1 #include <stdio.h> int main() //suma n elementow int n,i; float x, suma=0; printf("podaj liczbe elementow\n"); scanf("%d",&n); for(i=0;i<n;i++) printf("podaj wartosc %d\n",i+1); scanf("%f",&x); suma+=x; ; printf("suma %d elementow wynosi %f\n",n,suma);

W programie zastosowano zapis: suma+=x; który jest skrócona postacią instrukcji: suma=suma+x; Analogiczny skrócony zapis można stosować również do innych operatorów: -,*,/. I tak instrukcja: iloczyn*=x; jest równoważna instrukcji: iloczyn = iloczyn * x; W pętli for często występuje wyrażenie inkrementacji i++ lub dekrementacji i--. Możliwe jest również zastosowanie zapisu -i lub ++i. Różnice między nimi wyjaśnia przykład: i=1; k=2; j=i++; l=k--; ---------------------- po wykonaniu tych instrukcji: i=2, k=1, j=1, l=2 i=1; k=2; j=++i; l=--k; ---------------------- po wykonaniu tych instrukcji: i=2, k=1, j=2, l=1 W instrukcji j=i++ najpierw wykonywane jest podstawienie, zmienna j przyjmuje taką wartość jak zmienna i, a dopiero później zmienna i jest inkrementowana, natomiast w instrukcji j=++i najpierw wykonywana jest inkrementacja zmiennej i, a następnie podstawienie.

Pętla while ma postać: while ( w )instrukcja i odpowiada jej schemat blokowy: NIE TAK w instrukcja Instrukcja wykonywania jest dopóki spełniony jest warunek w. Jest ona równoważna pętli: for( ; w; ). Warunek w sprawdzany jest na początku pętli. Przykładem zastosowania pętli while jest program, który wczytuje liczby wprowadzane z klawiatury i sumuje je, aż do napotkania pewnej zadanej wartości, pełniącej rolę stopera Stoper nie powinien być dodany do sumy. Oto schemat blokowy i kod programu:

START czytaj koniec suma=0 czytaj x TAK x<>koniec NIE suma =suma+x pisz suma czytaj x STOP #include <stdio.h> int main() //suma bez konca int i=0; float koniec; float x, suma=0; printf("podaj znacznik konca \n"); scanf("%f",&koniec); printf("podaj pierwsza liczbe\n"); scanf("%f",&x); while(x!=koniec) suma+=x; printf("podaj wartosc %d\n",i+1); scanf("%f",&x); i++; ; printf("suma konca=%f wynosi %f\n",koniec,suma);

Pętla do ma postać: i odpowiada jej schemat blokowy: do instrukcja while ( w ) instrukcja NIE w TAK Instrukcja wykonywania jest przynajmniej jeden raz, warunek w sprawdzany jest na końcu. Przykładem zastosowania pętli do jest program, który wczytuje liczby wprowadzane z klawiatury i sumuje je, aż do napotkania pewnej zadanej wartości, pełniącej rolę stopera, wraz ze stoperem.

START czytaj koniec suma=0 czytaj x suma =suma+x TAK x<>koniec NIE pisz suma STOP #include <stdio.h> int main() //suma z koncem int i=0; float koniec; float x, suma=0; printf("podaj znacznik konca \n"); scanf("%f",&koniec); do printf("podaj kolejna wartosc %d\n",i+1); scanf("%f",&x); suma+=x; i++; while(x!=koniec); printf("suma elementow=%f\n",suma);

Przerwanie działania pętli / instrukcje break, continue/ Instrukcja break powoduje wyjście z najbardziej zagnieżdżonej pętli. Używa się jej w celu przerwania pętli w innym przypadku niż spełnienie warunków zakończenia pętli. Aby przerwać bieżący krok pętli i przejść do następnego stosuje się instrukcję continue. Oto fragment programu ilustrujący zastosowanie obu instrukcji. Zadanie polega na obliczeniu sumy liczb dodatnich, wczytywanych z klawiatury (maksymalnie 10 liczb), przy założeniu, że napotkanie wartości 0 powoduje zakończenie działanie programu. for(i=0;i<10;i++) scanf( %d,&k) if (k==0) break; else if (k<0) continue; s+=k.. Natychmiastowe wyjście z całego programu powoduje instrukcja exit. Jako parametr można podać kod zakończenia programu (np.: exit(1)). PRZYKŁAD Poniższy program oblicza wartość silni dla liczb dodatnich wprowadzanych z klawiatury, aż do napotkania liczby 0. #include <stdio.h> #include <stdlib.h> int silnia(int k) //funkcja silnia int wynik=1; int i; for(i=1;i<=k;i++) wynik*=i; return wynik; int main() int i; do printf("podaj i\n"); scanf("%d",&i); printf("%d! = %d\n",i,silnia(i)); while (i!=0);

Program kończy się, gdy zostanie wprowadzona liczba 0 - ostatnią policzoną wartością jest 0!. Dla każdej wprowadzonej wartości wywołana jest funkcja silnia. Zastosowano w niej pętlę for, w której zmienna wynik mnożona jest przez kolejne liczby całkowite. Zmienna wynik zainicjowana jest wartością 1, gdyż jest to element neutralny mnożenia. W funkcji main zastosowano pętlę do, w której wczytywane są kolejne wartości i i dla każdej z nich wywoływana jest funkcja silnia (drugi argument wywołania funkcji printf). ZADANIE: Zbadaj dla jakich wartości argumentu wartość silni jest niepoprawna. Dla zwiększenia zakresu poprawności działania funkcji silnia zmień jej typ na double. PRZYKŁAD Program z kolejnego przykładu tablicuje funkcję sinus w zadanym przedziale z zadaną liczbą podprzedziałów czyli wyświetla na ekranie tabelę z wartościami argumentów i odpowiadającymi im wartościami funkcji sinus. Wartości funkcji sinus będą liczone dwoma sposobami: korzystając z funkcji bibliotecznej sin(x) oraz z własnej funkcji szereg, wykorzystującej rozwinięcie funkcji w szereg Taylora, które wygląda następująco: Im większa liczba wyrazów szeregu, tym wynik będzie dokładniejszy. Aby wygodnie można było to przetestować w programie zastosowano makrodefinicję define do określenia liczby wyrazów szeregu. Poprawnie napisany program obok kolumny argumentów powinien wyświetlić dwie identyczne, lub nieznacznie różniące się kolumny liczb, będące wartościami funkcji sinus uzyskanymi dwoma sposobami. Oto program i efekt przykładowego wywołania:

#include <stdio.h> #include <stdlib.h> #include <math.h> #define li 100 //liczba iteracji do szeregu //tablicowanie fcji sin w <a,b> - szereg + fcja biblioteczna //definicja funkcji szereg; x - parametr formalny double szereg(double x) double s, w; int i; s=x; w=x; for(i=1;i<=li;i++) w=-w*x*x/(2*i*(2*i+1)); s=s+w; return s; int main() int lp; double a, b, szsin, krok, x; //<a;b> - przedział, lp - liczba podprzedziałów printf("podaj konce przedzialow i liczbe podprzedzialow\n"); scanf("%lf %lf %d",&a,&b,&lp); krok=(b-a)/lp; printf("krok=%6.2lf\n\n\n",krok); printf(" ----------------------------\n\n"); printf(" x szereg(x) sin(x)\n --------------------- -------\n"); for (x=a;x<=b;x+=krok) printf("%10.2lf %7.4lf %7.4lf\n",x,szereg(x),sin(x)); printf(" ----------------------------\n\n"); Należy zwrócić uwagę na fakt, że w funkcji szereg kolejne wyrazy ciągu liczone są na podstawie wyrazu poprzedniego. Wystarczy pomnożyć go przez x 2 i podzielić przez dwie kolejne liczby całkowite. Obliczanie każdego wyrazu przy pomocy funkcji potęgującej pow byłoby zbyt kosztowne obliczeniowo. A oto efekt działania programu dla przykładowych danych:

ZADANIA: 1. Zbadaj efekt działania programu dla różnych liczb wyrazów szeregu. 2. Zmodyfikuj program tak, aby tablicował funkcję cosinus, której rozwinięcie w szereg Taylora jest następujące: