Spis treści JĘZYK C - INSTRUKCJE ITERACYJNE FOR, WHILE I DO WHILE, ZAGNIEŻDŻANIE PĘTLI FOR, INSTRUKCJE CONTINUE, BREAK, I GOTO.



Podobne dokumenty
BHP JĘZYK C - INSTRUKCJE ITERACYJNE

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

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

Spis treści JĘZYK C - PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI, REKURENCJA. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - INSTRUKCJA WARUNKOWA IF, OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE. Informatyka 1

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

Politechnika Białostocka

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

Spis treści JĘZYK C - OPERATORY BITOWE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32

Spis treści JĘZYK C - INSTRUKCJA SWITCH, OPERATORY BITOWE. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF05

Spis treści JĘZYK C - OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE, INSTRUKCJA WARUNKOWA IF. Informatyka 1

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

Spis treści JĘZYK C - INSTRUKCJA WARUNKOWA IF, OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE. Metodyki i techniki programowania

Spis treści JĘZYK C - PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI, REKURENCJA. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - ŚLEDZENIE WYKONANIA PROGRAMU, DEBUGGER. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

dr inż. Jarosław Forenc

Spis treści JĘZYK C - TABLICE JEDNOWYMIAROWE. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF05Z

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

Spis treści JĘZYK C - TABLICE DWUWYMIAROWE, OPERACJE NA TABLICACH. Metodyki i techniki programowania

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

Spis treści JĘZYK C - FUNKCJE. Metodyki i techniki programowania. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia MITP10

13 JĘZYK C - OPERATOR WARUNKOWY,

Spis treści JĘZYK C - TABLICE DWUWYMIAROWE, OPERACJE NA TABLICACH. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

Spis treści JĘZYK C - TABLICE DWU- I WIELOWYMIAROWE, OPERACJE NA TABLICACH. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

do instrukcja while (wyrażenie);

Spis treści WSKAŹNIKI. DYNAMICZNY PRZYDZIAŁ PAMIĘCI W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

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

Spis treści JĘZYK C - PLIKI BINARNE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF30

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

Pętla for. Wynik działania programu:

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Spis treści PROGRAMOWANIE OBIEKTOWE W JĘZYKU C++: FUNKCJE ZAPRZYJAŹNIONE Z KLASĄ, PRZEŁADOWANIE OPERATORÓW. Informatyka 2

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

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

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

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

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

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

Spis treści JĘZYK C - ZAGNIEŻDŻANIE IF-ELSE, OPERATOR WARUNKOWY, INSTRUKCJA SWITCH, OPERATORY BITOWE, INSTRUKCJA ITERACYJNA FOR.

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

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

Spis treści TRYB GRAFICZNY SYSTEMU WINDOWS - PODSTAWY OBSŁUGI WYBRANEGO ŚRODOWISKA PROGRAMISTYCZNEGO. Informatyka 2

dr inż. Jarosław Forenc

Spis treści JĘZYK C - INSTRUKCJA SWITCH, OPERATORY BITOWE. Metodyki i techniki programowania. Instrukcja do pracowni specjalistycznej z przedmiotu

Programowanie - wykład 4

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

Instrukcje sterujące

Pętle. Dodał Administrator niedziela, 14 marzec :27

1 Podstawy c++ w pigułce.

WHILE (wyrażenie) instrukcja;

Podstawy Programowania C++

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

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

Język C zajęcia nr 5

Programowanie strukturalne i obiektowe

Część XV C++ Ćwiczenie 1

lekcja 8a Gry komputerowe MasterMind

Spis treści TRYB GRAFICZNY SYSTEMU WINDOWS - PODSTAWY OBSŁUGI WYBRANEGO ŚRODOWISKA PROGRAMISTYCZNEGO, TWORZENIE INTERFEJSU UŻYTKOWNIKA.

PROGRAMOWANIE W C++ ZADANIA

Programowanie w języku Python. Grażyna Koba

WHILE (wyrażenie) instrukcja;

Wstęp do informatyki- wykład 7

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

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

Instrukcje sterujące. Programowanie Proceduralne 1

Laboratorium nr 1. i 2.

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Instrukcje sterujące mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2012

Konstrukcje warunkowe Pętle

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

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

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

Pętle instrukcje powtórzeo

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

dr inż. Jarosław Forenc

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

1 Podstawy c++ w pigułce.

Liczby losowe i pętla while w języku Python

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

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

Warsztaty dla nauczycieli

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

Podstawowe elementy programowania strukturalnego. Wbudowane typy danych w C++

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

Każde wykonanie bloku instrukcji nazywamy pojedynczym przebiegiem lub iteracją pętli.

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

Wstęp do informatyki- wykład 6

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

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

Języki programowania zasady ich tworzenia

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

BADANIE ROZKŁADU TEMPERATURY W PIECU PLANITERM

Transkrypt:

Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 1 Kod przedmiotu: EZ1C200 010 (studia niestacjonarne) JĘZYK C - INSTRUKCJE ITERACYJNE FOR, WHILE I DO WHILE, ZAGNIEŻDŻANIE PĘTLI FOR, INSTRUKCJE CONTINUE, BREAK, I GOTO Numer ćwiczenia Spis treści 1. Opis stanowiska 3 1.1. Stosowana aparatura. 3 1.2. Oprogramowanie.. 3 2. Wiadomości teoretyczne.. 3 2.1. Operatory zwiększania (++) i zmniejszania (--).. 3 2.2. Instrukcja for 5 2.3. Zagnieżdżanie pętli for.. 9 2.4. Instrukcja kontynuacji (continue) 10 2.5. Instrukcja break.. 11 2.6. Instrukcja skoku (goto) 11 2.7. Złożone (skrócone) operatory przypisania. 12 3. Przebieg ćwiczenia 17 4. Literatura. 21 5. Zagadnienia na zaliczenie. 21 6. Wymagania BHP. 21 INF04Z Materiały dydaktyczne przeznaczone dla studentów Wydziału Elektrycznego PB. Autor: dr inż. Jarosław Forenc Białystok 2013 Wydział Elektryczny, Politechnika Białostocka, 2013 Wszelkie prawa zastrzeżone. Żadna część tej publikacji nie może być kopiowana i odtwarzana w jakiejkolwiek formie i przy użyciu jakichkolwiek środków bez zgody posiadacza praw autorskich. Informatyka 1 2 z 22 Instrukcja INF04Z

1. Opis stanowiska 1.1. Stosowana aparatura Podczas zajęć wykorzystywany jest komputer klasy PC z systemem operacyjnym Microsoft Windows (XP/Vista/7). 1.2. Oprogramowanie Na komputerach zainstalowane jest środowisko programistyczne Microsoft Visual Studio 2008 Standard Edition lub Microsoft Visual Studio 2008 Express Edition zawierające kompilator Microsoft Visual C++ 2008. 2. Wiadomości teoretyczne 2.1. Operatory zwiększania (++) i zmniejszania (--) Operator ++ służy do zwiększania wartości zmiennej o 1, zaś operator -- służy do zmniejszania wartości zmiennej o 1. Operatory te są jednoargumentowe. Można stosować je tylko do zmiennych (nie można ich stosować do dowolnych wyrażeń). Mogą one występować jako przedrostek lub przyrostek (Tabela 1). Tabela 1. Operatory ++ i --. Zapis Operator Znaczenie ++i preinkrementacji Operator występuje przed nazwą zmiennej (i), wartość zmiennej modyfikowana jest przed --i predekrementacji jej użyciem. i++ postinkrementacji Operator występuje po nazwie zmiennej (i), wartość zmiennej modyfikowana jest po i-- postdekrementacji użyciu jej poprzedniej wartości. Rozpatrzmy następujący fragment programu: int i = 2, j; j = ++i; printf("%d %d",i,j); W powyższym programie najpierw wartość zmiennej i jest zwiększana o jeden (z 2 do 3), a następnie zmiennej j przypisywana jest wartość zmiennej i (czyli 3). Zatem instrukcja printf() wyświetli wartości: 3 3. Jeśli operator preinkrementacji zastąpimy operatorem postinkrementacji: int i = 2, j; j = i++; printf("%d %d",i,j); to najpierw zmiennej j przypisywana jest wartość zmiennej i (czyli 2), a dopiero później zmienna i zwiększana jest o jeden (z 2 do 3). Instrukcja printf() wyświetli zatem: 3 2. Miejsce umieszczenia operatorów inkrementacji i dekrementacji nie ma znaczenia w przypadku instrukcji typu: i++; ++i; i--; --i; równoważne: i = i + 1; równoważne: i = i - 1; gdyż efekt końcowy będzie taki sam (zwiększenie lub zmniejszenie wartości zmiennej i o 1). Nie należy stosować zapisów typu: i = i++; gdyż według standardu języka C wynik takiego wyrażenia jest niezdefiniowany. Informatyka 1 3 z 22 Instrukcja INF04Z Informatyka 1 4 z 22 Instrukcja INF04Z

2.2. Instrukcja for W programach komputerowych bardzo często pewien fragment programu wykonywany jest wielokrotnie lub dla zmiennych przyjmujących kolejne wartości. W takich przypadkach stosowane są pętle, czyli instrukcje iteracyjne. Podstawową instrukcją iteracyjną jest pętla for. Ogólna postać instrukcji for jest następująca: for (wyr1; wyr2; wyr3) Instrukcja for tworzy pętlę pracującą w następujący sposób: 1. Wyliczane jest wyr1 (jeśli występuje). 2. Wyliczane jest wyr2. Jeśli jego wartością jest zero, to instrukcja for kończy działanie, w przeciwnym razie działanie instrukcji for jest kontynuowane (krok 3). 3. Wykonywana jest instrukcja. 4. Wyliczana jest wartość wyr3. Działanie jest wznawiane od kroku 2, czyli obliczania wyr2. Program wyświetlający pięć razy ten sam tekst. int i; for (i = 0; i < 5; i = i + 1) printf("programowanie nie jest trudne\n"); W powyższym programie zastosowano pętlę for do pięciokrotnego wyświetlenia tego samego tekstu. Wynikiem działania programu będzie następujący wydruk: Programowanie nie jest trudne Programowanie nie jest trudne Programowanie nie jest trudne Programowanie nie jest trudne Programowanie nie jest trudne Program ten przedstawia organizację tzw. pętli iteracyjnej: - wyr1 inicjalizuje licznik (i = 0); - wyr2 kontroluje granice licznika (i < 5); - wyr3 zmienia bieżącą wartość licznika (i = i + 1). W kolejnym programie zmienna występująca w pętli for pełni nie tylko rolę licznika, ale jest także wykorzystywana w obliczeniach. Program zamienia temperaturę ze skali Fahrenheita na temperaturę w skali Celsjusza. Chcemy w jednym programie zamienić wartości od 0 F do 50 F co 10 F. Program przeliczający temperaturę ze skali Fahrenheita na skalę Celsjusza. int f; for (f = 0; f < 60; f = f + 10) printf("%2d F to %6.2f C\n",f,5*(f-32.0)/9); Wynikiem działania programu będzie następujący wydruk: 0 F to -17.78 C 10 F to -12.22 C 20 F to -6.67 C 30 F to -1.11 C 40 F to 4.44 C 50 F to 10.00 C Informatyka 1 5 z 22 Instrukcja INF04Z Informatyka 1 6 z 22 Instrukcja INF04Z

W nawiasach instrukcji for występują trzy części oddzielone średnikami: - pierwsza część inicjalizuje pętlę (f = 0), jest ona wykonywana tylko raz, przed wejściem do pętli; - druga część jest warunkiem sterującym powtarzaniem pętli (f < 60). Jeśli jest on prawdziwy to wykonywana jest instrukcja znajdująca się za pętlą (printf()); - następnie, po wykonaniu instrukcji printf(), wykonywana jest trzecia część, w której zwiększana jest wartość wykorzystywana w pętli (f = f + 10) i ponownie sprawdzany jest warunek sterujący powtarzaniem pętli (f < 60). Każde z trzech wyrażeń w nawiasach pętli for jest opcjonalne (może jego nie być), ale nawiasy i średniki są obowiązkowe. Jeśli w instrukcji for nie jest podane wyr2, to przyjmuje się, że jest ono zawsze prawdziwe. Zatem w prosty sposób można skonstruować pętlę nieskończoną: for ( ; ; ) Zmienne występujące w pętlach nazywane są kolejnymi literami alfabetu: i, j, k, l,, chyba, że z kontekstu programu wynika użycie zmiennej o innej nazwie (tak jak w przypadku programu zamieniającego temperatury: f - zmienna przechowująca temperaturę w skali Fahrenheita). Jako instrukcja po pętli for może wystąpić instrukcja złożona (blok). Program obliczający średnią arytmetyczną 10 liczb całkowitych. int i, x; float suma = 0.0; for (i = 0; i < 10; i++) printf("podaj liczbe nr %d: ",i+1); scanf("%d",&x); suma = suma + x; printf("srednia: %.3f\n",suma/10); Po nawiasie w instrukcji for nie stawia się średnika. Konstrukcja ze średnikiem na końcu jest poprawna (kompilator nie zasygnalizuje błędu), ale oznacza wielokrotne wykonanie instrukcji pustej (w poniższym przykładzie - 10 razy). Natomiast instrukcja zostanie wykonana tylko jeden raz. for (i = 0; i < 10; i++); Często popełnianym błędem przez początkujących programistów jest wprowadzenie przecinków zamiast średników. W takiej sytuacji kompilator wyświetli błąd. for (i = 0, i < 10, i++) Jeszcze innym rodzajem błędu jest podanie niewłaściwego warunku kontynuacji pętli. W poniższym przykładzie funkcja printf() nie wykona się ani razu: for (i = 0; i > 10; i++) printf("%d ",i); a w następnym przykładzie otrzymujemy pętlę nieskończoną, gdyż warunek i > 0 jest zawsze prawdziwy: for (i = 1; i > 0; i++) printf("%d ",i); Informatyka 1 7 z 22 Instrukcja INF04Z Informatyka 1 8 z 22 Instrukcja INF04Z

2.3. Zagnieżdżanie pętli for Jako instrukcja w pętli for może występować kolejna pętla for. Program wyświetlający tabliczkę mnożenia. int i, j; for (i = 1; i < 11; i++) for (j=1; j<11; j++) printf("%2d ",i*j); printf("\n"); Wynik działania powyższego programu: 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 0 20 30 40 50 60 70 80 90 100 Zewnętrzna pętla for wykonywana jest 10 razy (i zmienia się od 1 do 10). Wewnętrzna pętla for wykonywana jest także 10 razy (j zmienia się od 1 do 10), zatem instrukcja printf() będzie wykonana 100 razy. 2.4. Instrukcja kontynuacji (continue) Instrukcja kontynuacji używana jest wewnątrz pętli for i ma postać: continue; Instrukcja ta powoduje bezwarunkowe przejście na początek pętli (do następnej iteracji) z pominięciem instrukcji znajdujących się poniżej instrukcji continue. Dokładniej mówiąc powoduje przejście do wyliczania wartości wyr3 w pętli for. Program obliczający średnią arytmetyczną 10 liczb całkowitych wprowadzonych z klawiatury przy uwzględnieniu tylko liczb nieujemnych. int i, x, ilosc = 0; float suma = 0.0; for (i = 0; i < 10; i++) printf("podaj liczbe nr %d: ",i+1); scanf("%d",&x); if (x < 0) continue; suma = suma + x; ilosc++; if (ilosc > 0) printf("srednia: %.3f\n",suma/ilosc); else printf("wszystkie liczby sa ujemne\n"); W powyższym programie jeśli kolejna liczba x jest mniejsza od zera to wywoływana jest instrukcja continue. Powoduje ona pominięcie kolejnych instrukcji z bieżącej iteracji: Informatyka 1 9 z 22 Instrukcja INF04Z Informatyka 1 10 z 22 Instrukcja INF04Z

suma = suma + x; ilosc++; i przejście do kolejnej iteracji (wprowadzania kolejnej liczby). 2.5. Instrukcja break Instrukcja break umożliwia wcześniejsze zakończenie pętli for. Wywołanie tej instrukcji powoduje natychmiastowe opuszczenie pętli i przejście do instrukcji znajdującej się bezpośrednio po pętli for. for (i = 1; i < 10; i++) if (i % 5 == 0) break; printf("%d\n",i); Gdy warunek w instrukcji if będzie prawdziwy zostanie wykonana instrukcja break powodująca przerwanie pętli for. W przypadku pętli zagnieżdżonych przerywane jest działanie tylko najbardziej wewnętrznej z nich. 2.6. Instrukcja skoku (goto) Instrukcja ta w postaci: goto label; przekazuje sterowanie do miejsca w programie oznaczonego etykietą o nazwie label. Etykietą można oznaczać tylko całe instrukcje. Skok może odbywać się tylko w ramach tej samej funkcji. Wystąpienie w poniższym fragmencie programu instrukcji skoku powoduje przeniesienie sterowania do instrukcji rozpoczynającej się od etykiety dalej. goto dalej; dalej: printf("tekst\n"); Nie zaleca się stosowania instrukcji goto w programach w języku C. Jedynym przypadkiem, kiedy dopuszcza się zastosowanie goto jest wyjście z układu wielu pętli zagnieżdżonych. 2.7. Złożone (skrócone) operatory przypisania Wyrażenia modyfikujące (aktualizujące) wartość pewnej zmiennej mogą być zapisywane w skrócony sposób poprzez użycie tzw. złożonych operatorów przypisania: x = x + 1; z = z 2; y = y * 10.5; s = s / 3; Jeśli w1 i w2 są wyrażeniami, to: w1 = (w1) operator (w2); jest równoważne: w1 operator= w2; jest równoważne: Ten sposób zapisu można stosować dla 10 operatorów: + - * / % << >> & ^ 2.8. Instrukcja while Instrukcja while służy do tworzenia pętli w języku C. x += 1; z -= 2; y *= 10.5; s /= 3; Informatyka 1 11 z 22 Instrukcja INF04Z Informatyka 1 12 z 22 Instrukcja INF04Z

Składnia tej instrukcji jest następująca: while (wyr) Zasada działania: 5. Obliczana jest wartość wyr. 6. Jeśli wartość wyr jest różna od zera, czyli wyrażenie jest prawdziwe, to wykonywana jest instrukcja, a następnie powrót do pkt. 1 (obliczanie wartości wyr). Jeśli wartość wyr jest równa zeru (nie jest ono prawdziwe), to pętla while kończy działanie. Działanie pętli while można opisać także w następujący sposób: dopóki wyrażenie w nawiasach jest prawdziwe wykonuj instrukcję. Wyrażenie wyr po słowie kluczowym while musi być koniecznie umieszczone w nawiasach zwykłych. Jako instrukcja może wystąpić instrukcja złożona (blok), czyli kilka instrukcji ograniczonych nawiasami klamrowymi: oraz. Poprawne zakończenie pętli while wymaga, aby w jej wnętrzu następowały zmiany (np. modyfikacje wartości zmiennych) wpływające na wartość wyrażenia w nawiasach (wyr). Program sprawdzający ile kolejnych liczb całkowitych należy dodać do siebie, aby otrzymać największą wartość nie przekraczającą MAX. #define MAX 100 int suma = 0, n = 0; while (suma < MAX) n++; suma = suma + n; suma = suma - n; n--; printf("ilosc liczb: %d\n",n); printf("suma liczb: %d\n",suma); W każdej iteracji zwiększamy wartość zmiennej n o jeden (n++) oraz dodajemy zwiększone n do ogólnej sumy (suma = suma + n;). Operacje te powtarzane są do momentu, aż suma przekroczy wartość MAX - wtedy warunek w pętli while nie będzie prawdziwy. Ponieważ suma nie powinna przekroczyć wartości MAX, to należy cofnąć się o jeden krok: (suma = suma - n; n--;). Pętla while występująca w powyższym programie może być zapisana w skróconej postaci: lub lub while (suma < MAX) suma = suma + ++n; while ((suma = suma + ++n) < MAX); while ((suma += ++n) < MAX); Pętla while jest często stosowana do wielokrotnego wykonywania tego samego programu. W poniższym programie użytkownik wprowadza liczby całkowite, a program sprawdza ich parzystość. Zakończenie działania programu nastąpi po wprowadzeniu litery q zamiast liczby całkowitej. Informatyka 1 13 z 22 Instrukcja INF04Z Informatyka 1 14 z 22 Instrukcja INF04Z

Program sprawdzający parzystość kolejnych liczb wprowadzanych z klawiatury. int x; printf("podaj liczbe (q - koniec): "); while (scanf("%d",&x) == 1) if (x % 2 == 0) printf("%d - liczba parzysta\n\n",x); else printf("%d - liczba nieparzysta\n\n",x); printf("podaj liczbe (q - koniec): "); Działanie pętli while może zostać przerwane instrukcjami: break (opuszczenie pętli) lub goto (skok do etykiety). W pętli while można zastosować również instrukcję continue. Spowoduje ona przerwanie bieżącego kroku pętli i przejście do sprawdzenia wartości wyr. Po nawiasie w instrukcji while nie stawia się średnika. Konstrukcja ze średnikiem na końcu jest poprawna składniowo (kompilator nie zasygnalizuje błędu), ale oznacza wykonanie instrukcji pustej. Natomiast instrukcja zostanie wykonana tylko raz. Dodatkowo, jeśli instrukcja wpływa na wartość wyr, to program może zapętlić się, gdyż powstanie pętla nieskończona, np. i = 0; while (i < 10); printf("%d\n",i++); W pewnych sytuacjach celowo tworzy się pętlę nieskończoną. W takim przypadku jej opuszczenie musi nastąpić poprzez użycie instrukcji break lub goto. Przykład pętli nieskończonej: while (1) instrukcja1; instrukcja2; Opuszczenie pętli można zrealizować wykorzystując tzw. zmienną kontrolną: int stop = 0; while (!stop) if () stop = 1; Pętlę while można wykorzystać do zastąpienia pętli for. Pętla o postaci: for (wyr1; wyr2; wyr3) jest równoważna następującej pętli while: wyr1; while (wyr2) wyr3; 2.9. Instrukcja dowhile Zasada działania pętli dowhile jest taka sama jak instrukcji while, ale z tą różnicą, że warunek (wartość wyr) sprawdzany jest po wykonaniu instrukcji. Informatyka 1 15 z 22 Instrukcja INF04Z Informatyka 1 16 z 22 Instrukcja INF04Z

Składnia tej instrukcji jest następująca: do while (wyr); Zasada działania: 1. Wykonywana jest instrukcja. 2. Obliczana jest wartość wyr. Jeśli wartość wyr jest różna od zera (wyrażenie jest prawdziwe), to powracamy do pkt. 1 (wykonanie instrukcji). Jeśli wartość wyr jest równa zeru (wyrażenie nie jest prawdziwe), to pętla dowhile kończy działanie. Pozostałe uwagi są takie same jak dla pętli while. W pętli while instrukcja może nie być ani razu wykonana, natomiast w pętli dowhile jest ona zawsze wykonywana przynajmniej jeden raz. 3. Przebieg ćwiczenia Na pracowni specjalistycznej należy wykonać wybrane zadania wskazane przez prowadzącego zajęcia. W różnych grupach mogą być wykonywane różne zadania. 1. Napisz program wyświetlający na ekranie poniższe liczby. Do wyświetlenia jednego wiersza liczb zastosuj jedną pętlę for. 1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1 2 4 6 8 10 12 14 16-9 -6-3 0 3 6 9 12 1 2 4 8 16 32 64 128 11 9.5 8 6.5 5 3.5 2 0.5 2. Napisz program, w którym użytkownik wprowadza dwie liczby całkowite określające dolną i górną granicę przedziału. Program powinien wyświetlić wszystkie liczby z tego przedziału, ich kwadraty i sześciany. Przykład: Dolna granica: 2 Gorna granica: 5 2 4 8 3 9 27 4 16 64 5 25 125 3. Napisz program obliczający i wyświetlający wartość silni liczby n wprowadzonej z klawiatury. 4. Ciąg Fibonacciego opisany jest następującym wzorem rekurencyjnym: f 1 = 1 2 n n 1 n 2 >, f = 1,, f = f + f dla n 2 (1) Napisz program obliczający wartość n-tego wyrazu tego ciągu. 5. Napisz program sprawdzający znajomość tabliczki mnożenia. Program generuje pseudolosowo dwie liczby z zakresu 0, 10, a następnie wyświetla komunikat, np. Ile wynosi 5 * 8?. Użytkownik podaje odpowiedź, a program wyświetla informację, czy odpowiedź jest prawidłowa, czy nie i ewentualnie podaje prawidłową odpowiedź. Po sprawdzeniu 10 par liczb program wyświetla liczbę prawidłowych odpowiedzi i wystawia ocenę: 10 prawidłowych odpowiedzi - 5.0, 9-4.5, 8-4.0, 7-3.5, 6-3.0, 5 i mniej - 2.0. Do pseudolosowego generowania liczb zastosuj funkcje srand() i rand(). 6. Napisz program, który prosi o podanie liczby całkowitej z zakresu 1, 15. Jeśli liczba znajduje się w zakresie, to program rysuje na ekranie trójkąt ze znaków @, np. dla podanej liczby 4 na ekranie powinno pojawić się: @ @@ @@@ @@@@ 7. Napisz program sprawdzający czy podana przez użytkownika liczba jest liczbą pierwszą. Informatyka 1 17 z 22 Instrukcja INF04Z Informatyka 1 18 z 22 Instrukcja INF04Z

8. Funkcję e x można przedstawić za pomocą szeregu potęgowego: e x 2 3 n x x x x = 1+ + + + + + 1! 2! 3! n! Napisz program, który dla argumentu x podanego przez użytkownika wyświetli różnice między wartością obliczoną standardową funkcją języka C - exp(x), a wartościami obliczonymi przy wykorzystaniu powyższego szeregu potęgowego (dla n zmieniającego się od 1 do 6). 9. Obwód elektryczny ma następujące parametry: R = 15 Ω, L = 0, 125 H, C = 0, 254 mf Wyznacz pulsację rezonansową (rezonans prądów) obwodu jeśli jego admitancja zastępcza określona jest poniższym wzorem: R X C 1 Y = + j 2 2 2 2 (3) R + X C R + X C X L Wskazówka: zbadaj pulsację w zakresie od 100 do 500 rad/s z krokiem 0,1 rad/s. 10. W poniższym fragmencie programu zastąp pętlę while pętlą for tak, aby obie pętle wyświetlały takie same liczby. int i=0; while (i<20) i+=5; printf("%d \n",i); Umieść obie pętle w jednym programie i porównaj wyświetlane wartości. 11. Napisz program działający w pętli, który wczytuje liczbę rzeczywistą typu float. Jeśli liczba jest większa od zera, to program oblicza i wyświetla jej pierwiastek kwadratowy, natomiast jeśli liczba jest mniejsza od zera, to program oblicza (2) i wyświetla jej kwadrat. Jeśli liczba jest równa zeru, to program kończy działanie, w przeciwnym wypadku prosi o wprowadzenie kolejnej liczby, itd. Przykład działania programu: Podaj liczbe: 3 Pierwiatek: 1.732051 Podaj liczbe: -4 Kwadrat: 16.000000 Podaj liczbe: -2 Kwadrat: 4.000000 Podaj liczbe: 9 Pierwiatek: 3.000000 Podaj liczbe: 0 KONIEC 12. Napisz program wczytujący liczby całkowite tak długo, aż użytkownik wprowadzi liczbę zero. Następnie program wyświetla ilość wczytanych liczb nieparzystych. 13. Napisz program wczytujący liczby całkowite tak długo, dopóki tworzą one ciąg rosnący. Następnie program wyświetla sumę wszystkich liczb tworzących ten ciąg (czyli bez ostatniej wartości). 14. Napisz program sprawdzający rodzaj wciśniętego znaku na klawiaturze. Program powinien działać w pętli i rozpoznawać litery, cyfry, znaki odstępu oraz inne znaki. Wyjście z programu powinno nastąpić po wciśnięciu litery q lub Q. Przykłady działania programu: Wcisnales litere: k Wcisnales cyfre: 7 Wcisnales inny znak: * Wykorzystaj funkcje znajdujące się w pliku nagłówkowym ctype.h: - isdigit(znak) - zwraca wartość różną od zera, gdy znak jest cyfrą; - isalpha(znak) - zwraca wartość różną od zera, gdy znak jest literą; - isspace(znak) - zwraca wartość różną od zera, gdy znak jest odstępem. Informatyka 1 19 z 22 Instrukcja INF04Z Informatyka 1 20 z 22 Instrukcja INF04Z

4. Literatura [1] Kernighan B.W., Ritchie D.M.: Język ANSI C. Programowanie. Wydanie II. Helion, Gliwice, 2010. [2] Prata S.: Język C. Szkoła programowania. Wydanie V. Helion, Gliwice, 2006. [3] King K.N.: Język C. Nowoczesne programowanie. Wydanie II. Helion, Gliwice, 2011. [4] Summit S.: Programowanie w języku C. FAQ. Helion, Gliwice, 2003. [5] Wileczek R.: Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows. Helion, Gliwice, 2009. 5. Zagadnienia na zaliczenie 1. Scharakteryzuj operatory inkrementacji i dekrementacji. 2. Omów składnię i zastosowanie pętli for. 3. Wyjaśnij, jaką rolę w pętli for mogą pełnić instrukcje break, goto, continue. 4. Opisz złożone (skrócone) operatory przypisania. 5. Na dowolnym przykładzie opisz sposób wykonywania zagnieżdżonych pętli for. 6. Wymagania BHP Warunkiem przystąpienia do praktycznej realizacji ćwiczenia jest zapoznanie się z instrukcją BHP i instrukcją przeciw pożarową oraz przestrzeganie zasad w nich zawartych. W trakcie zajęć laboratoryjnych należy przestrzegać następujących zasad. - Sprawdzić, czy urządzenia dostępne na stanowisku laboratoryjnym są w stanie kompletnym, nie wskazującym na fizyczne uszkodzenie. - Jeżeli istnieje taka możliwość, należy dostosować warunki stanowiska do własnych potrzeb, ze względu na ergonomię. Monitor komputera ustawić w sposób zapewniający stałą i wygodną obserwację dla wszystkich członków zespołu. - Sprawdzić prawidłowość połączeń urządzeń. - Załączenie komputera może nastąpić po wyrażeniu zgody przez prowadzącego. - W trakcie pracy z komputerem zabronione jest spożywanie posiłków i picie napojów. - W przypadku zakończenia pracy należy zakończyć sesję przez wydanie polecenia wylogowania. Zamknięcie systemu operacyjnego może się odbywać tylko na wyraźne polecenie prowadzącego. - Zabronione jest dokonywanie jakichkolwiek przełączeń oraz wymiana elementów składowych stanowiska. - Zabroniona jest zmiana konfiguracji komputera, w tym systemu operacyjnego i programów użytkowych, która nie wynika z programu zajęć i nie jest wykonywana w porozumieniu z prowadzącym zajęcia. - W przypadku zaniku napięcia zasilającego należy niezwłocznie wyłączyć wszystkie urządzenia. - Stwierdzone wszelkie braki w wyposażeniu stanowiska oraz nieprawidłowości w funkcjonowaniu sprzętu należy przekazywać prowadzącemu zajęcia. - Zabrania się samodzielnego włączania, manipulowania i korzystania z urządzeń nie należących do danego ćwiczenia. - W przypadku wystąpienia porażenia prądem elektrycznym należy niezwłocznie wyłączyć zasilanie stanowiska. Przed odłączeniem napięcia nie dotykać porażonego. Informatyka 1 21 z 22 Instrukcja INF04Z Informatyka 1 22 z 22 Instrukcja INF04Z