Funkcje printf() i scanf() i operatory

Podobne dokumenty
Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

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

2 Przygotował: mgr inż. Maciej Lasota

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

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

Zmienne, stałe i operatory

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

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

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

Funkcje i tablice. Elwira Wachowicz. 23 maja 2013

IX. Wskaźniki.(3 godz.)

Programowanie strukturalne. dr inż. Tadeusz Jeleniewski

Wyrażenia arytmetyczne

Języki i metodyka programowania. Wprowadzenie do języka C

1. Wprowadzanie danych z klawiatury funkcja scanf

Elementy pliku źródłowego w języku C

Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2

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

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

dr inż. Paweł Myszkowski Wykład nr 8 ( )

Język C część 1. Sformułuj problem Zanalizuj go znajdź metodę rozwiązania (pomocny może byd algorytm) Napisz program Uruchom i przetestuj czy działa

Podstawy programowania w języku C i C++

Programowanie strukturalne i obiektowe

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

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

Struktury, unie, formatowanie, wskaźniki

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

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

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

Informatyka, Ćwiczenie Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

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

Język C i C++. Podstawy. Zagadnienia do opanowania. Przykład 1. (modyfikuj kod, aby zrealizować punkty 5., 7.)

do drukowania tekstu służy funkcja echo <?php echo "hello world!";?> jeżeli użyjemy jej kilka razy: <?php

Język C zajęcia nr 11. Funkcje

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Metodyki i Techniki Programowania MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA

1 Podstawy c++ w pigułce.

> C++ typy wyliczeniowe, struktury, unie, konwersje napis <-> liczba, formatowanie wyjścia

dr inż. Jarosław Forenc

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

I. Podstawy języka C powtórka

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

ZMIENNE P R O G R A M O W A N I E C + +

Programowanie komputerowe. Zajęcia 1

C++ wprowadzanie zmiennych

Wstęp do Programowania, laboratorium 02

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

Wstęp do Programowania 2

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Systemy zapisu liczb.

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

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Powtórka algorytmów. Wprowadzenie do języka Java.

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

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

Pozycyjny system liczbowy

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Metody numeryczne Laboratorium 2

Obliczenia, zmienne. Proste działania, zmienne, rodzaje zmiennych, proste operacje i działania na zmiennych.

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

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

Materiały pomocnicze do wykładu 3 - Elementy języka Java

Typy danych i formatowanie

Algorytmy i struktury danych

Pracownia Komputerowa wykład VI

1 Podstawy c++ w pigułce.

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

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117).

Praca domowa nr 1. a a b a b ; b c. c a bc d ef gh. 2) Napisz kod sprawdzający poniższe warunki sformułowane w języku naturalnym:

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

do instrukcja while (wyrażenie);

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Metoda znak-moduł (ZM)

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

Tablice, funkcje - wprowadzenie

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Program w C. wer. 12 z drobnymi modyfikacjami! Wojciech Myszka :59:

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Laboratorium 1: Podstawy języka c. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 4. Karol Tarnowski A-1 p.

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Podstawy i języki programowania

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Podstawy programowania 1

Wykład 2 Składnia języka C# (cz. 1)

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

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

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

Program w C. wer. 10 z drobnymi modyfikacjami! Wojciech Myszka :28:

Instrukcje sterujące. Programowanie Proceduralne 1

Transkrypt:

Funkcje printf() i scanf() i operatory Elwira Wachowicz elwira@ifd.uni.wroc.pl 4 kwietnia 2013 Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 1 / 23

Łańcuch sterujący: printf() Specyfikator Dane wyjściowe %c Pojedynczy znak %d Dziesiętna liczba całkowita ze znakiem %e Liczba zmiennoprzecinkowa w notacji z literą e %E Liczba zmiennoprzecinkowa w notacji z literą E %f Liczba zmiennoprzecinkowa w zapisie dziesiętnym %g Równoważny %e, gdy wykładnik mniejszy niż 4 lub większy/równy dokładności, inaczej %f %E Jak wyżej, tyle że z E %o Ósemkowa liczba całkowita bez znaku %p wskaźnik %s Łańcuch znakowy %u Dziesiętna liczba całkowita bez znaku %x Szesnastkowa liczba całkowita, cyfry szesnastkowe małą literą (0f) %X Szesnastkowa liczba całkowita, cyfry szesnastkowe dużą literą (0F) %% Wyświetla znak procentu Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 2 / 23

printf(): znaczniki i modyfikatory Modyfikator Znaczenie liczba Minimalna szerokość pola. Jeśli wyświetlana wartość nie zmieści się, pole zostanie powiększone..liczba Dokładność. Dla zmiennoprzecinkowych: liczba cyfr po przecinku. Dla całkowitych: minimalna liczba cyfr (uzupełniane przez 0). Dla łańcuchów: maksymalna liczba znaków.. jest równoważne.0 Znacznik Znaczenie - Wyrównuje do lewej krawędzi pola (%-20s). + Wyświetla ze znakiem + lub (%+6.2f). odstęp Wyświetla z odstępem na początku (% 6.2f). 0 Wypełnia pola początkowe zerami zamiast odstępami. Ignorowany, jeśli występuje z. Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 3 / 23

Przykład: liczby całkowite /* szerok.c -- szerokosc pola */ #define STRONY 732 printf("*%d*\n", STRONY); printf("*%2d*\n", STRONY); printf("*%10d*\n", STRONY); printf("*%-10d*\n", STRONY); Otrzymamy: *732* *732* * 732* *732 * Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 4 / 23

Przykład: liczby zmiennoprzecinkowe /* float.c -- modyfikatory liczb zmiennoprzecinkowych */ #define CZYNSZ 2345.67 printf("*%f*\n", CZYNSZ); printf("*%e*\n", CZYNSZ); printf("*%4.2f*\n", CZYNSZ); printf("*%3.1f*\n", CZYNSZ); printf("*%10.3f*\n", CZYNSZ); printf("*%10.3e*\n", CZYNSZ); printf("*%+4.2f*\n", CZYNSZ); printf("*%010.2f*\n", CZYNSZ); Otrzymujemy: *2345.670000* *2.345670e+03* *2345.67* *2345.7* * 2345.670* * 2.346e+03* *+2345.67* *0002345.67* Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 5 / 23

Przykład: łańcuchy znaków /* lancuchy.c -- formatowanie lancuchow */ #define NOTATKA "Doskonala gra aktorow!" printf("*%2s*\n", NOTATKA); printf("*%25s*\n", NOTATKA); printf("*%25.5s*\n", NOTATKA); printf("*%-25.5s*\n", NOTATKA); Otrzymujemy: *Doskonala gra aktorow!* * Doskonala gra aktorow!* * Dosko* *Dosko * Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 6 / 23

Wartość zwracana przez printf() /* wartzwr.c -- okreslenie wartosci zwracanej przez printf() */ int n = 100; int wz; wz = printf("woda wrze w temperaturze %d C.\n", n); printf("funkcja printf() wyswietlila %d znaki.\n", wz); Otrzymujemy: Woda wrze w temperaturze 100 C. Funkcja printf() wyswietlila 32 znaki. Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 7 / 23

Wyświetlanie długich łańcuchów Nie wolno podzielić na kilka wierszy łańcucha zawartego w cudzysłowie! /* dluglanc.c -- wyswietlanie dlugich lancuchow */ printf("oto jeden ze sposobow wyswietlenia "); printf("dlugiego lancucha.\n"); printf("oto inny sposob wyswietlenia \ dlugiego lancucha.\n"); printf("oto najnowszy sposob wyswietlenia " "dlugiego lancucha.\n"); Oto jeden ze sposobow wyswietlenia dlugiego lancucha. Oto inny sposob wyswietlenia dlugiego lancucha. Oto najnowszy sposob wyswietlenia dlugiego lancucha. Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 8 / 23

Funkcja scanf() Funkcja scanf() przetwarza tekst wejściowy na wartości różnych typów: liczby całkowite, zmiennoprzecinkowe, znaki i łańcuchy znakowe. Jeśli używasz scanf() do wczytania wartości do zmiennej należącej do któregoś z typów podstawowych, przed nazwą zmiennej dodaj &. Jeśli używasz scanf() do wczytania łańcucha do tablicy znaków, nie dodawaj przedrostka &. Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 9 / 23

Przykład: /* wejscie.c -- kiedy uzywac */ int wiek; /* zmienna */ float majatek; /* zmienna */ char zwierzatko[30]; /* lancuch */ printf("podaj swoj wiek, majatek i ulubione zwierzatko.\n"); scanf("%d %f", &wiek, &majatek); /* tu uzywamy & */ scanf("%s", zwierzatko); /* przy tablicy znakowej nie ma & */ printf("%d, %.0f zl, %s.\n", wiek, majatek, zwierzatko); Podaj swoj wiek, majatek i ulubione zwierzatko. 12 144.50 jez 12, 144 zl, jez. Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 10 / 23

Specyfikatory i modyfikatory Soecyfikator Znaczenie %c Dana wejściowa ma być znakiem. %d Dana wejściowa ma być liczbą całkowitą ze znakiem. %f, %e, %g Dana wejściowa mam być liczbą zmiennoprzecinkową. %F, %G Dana wejściowa mam być liczbą zmiennoprzecinkową. %i Dana wejściowa ma być liczbą całkowitą ze znakiem. %o Dana wejściowa ma być liczbą ósemkową ze znakiem. %p Dana wejściowa ma być wskaźnikiem (adres). %u Dana wejściowa ma być liczbą całkowitą bez znaku. %x, %X Dana wejściowa ma być liczbą szesnastkową ze znakiem. %s Dana wejściowa ma być łańcuchem znaków: zaczyna się pierwszym znakiem drukowanym, kończy ostatnim. liczba Maksymalna szerokość pola. Odczytywanie kończy się po osiągnięciu maksymalnej szerokości pola lub przy wystąpieniu znaku niedrukowanego (%10s). Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 11 / 23

Zwykłe znaki w łańcuchu sterującym Funkcja scanf() pozwala umieszczać zwykłe znaki w łańcuchu sterującym. Muszą one znaleźć się w łańcuchu wejściowym. scanf("%d, %d", &n, &m); Dane należy podać jako: lub lub 88,121 88, 121 88, 121 Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 12 / 23

Podsumowanie: printf() i scanf() Funkcje printf() i scanf() zapewniają obsługę wyjścia i wejścia. Wykorzystują łańcuch sterujący, który zawiera specyfikatory konwersji określające liczbę i typy wartości, które należy wyświetlić lub odczytać. Specyfikatory mogą służyć do formatowania danych wyjściowych: szerokości pól, liczby miejsc po przecinku oraz umiejscowienia wartości w ramach pola. Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 13 / 23

Wstęp do pętli /* buty1.c -- przelicza rozmiar buta na cm */ #define KOREKTA -1 #define MNOZNIK 0.6666667 double but, stopa; but = 42.0; stopa = MNOZNIK * but + KOREKTA; printf("rozmiar buta Dlugość stopy\n"); printf("%8.1f %15.2f cm\n", but, stopa); Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 14 / 23

Wstęp do pętli c.d. /* buty2.c -- oblicza dlugosc stopy dla kilku numerow buta */ #define KOREKTA -1 #define MNOZNIK 0.6666667 double but, stopa; printf("rozmiar buta Dlugość stopy\n"); but = 24.0; while ( but < 45) stopa = MNOZNIK * but + KOREKTA; printf("%8.1f %15.2f cm\n", but, stopa); but = but + 1; printf("jeśli but pasuje noś go.\n"); Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 15 / 23

Podstawowe operatory Operator przypisania: = zmienna = wartosc bmw = 2010; i = i + 1; Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 16 / 23

Podstawowe operatory c.d. Operator dodawania: + printf("%d", 4 + 20); dochod = pensja + lapowki; Operator odejmowania: - dochod = 224.0-24.0; Operatory jednoargumentowe: + i - bolek = -12; lolek = -bolek; Operator mnożenia: * cm = 2.54 * cale; Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 17 / 23

/* kwadraty.c -- wyświetla tabelę pierwszych 20 kwadratów */ int num = 1; while (num < 21) printf("%10d %10d\n", num, num * num); num = num + 1; Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 18 / 23

Podstawowe operatory c.d. Operator dzielenia: / cztery = 12.0/3.0; Inaczej działa dzielenie liczb zmiennoprzecinkowych, a inaczej całkowitych. Przy dzieleniu liczb całkowitych część ułamkowa jest odrzucana. /* dziel.c -- rozne rodzaje dzielenia */ printf("dzielenie calkowite: 5/4 daje %d \n",5/4); printf("dzielenie calkowite: 6/3 daje %d \n", 6/3); printf("dzielenie calkowite: 7/4 daje %d \n", 7/4); printf("dzielenie zmiennoprz.: 7./4. daje %1.2f \n", 7./4.); printf("dzielenie mieszane: 7./4 daje %1.2f \n", 7./4); Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 19 / 23

Priorytet operatorów Mamy działanie: maslo = 25.0 + 60.0 * n / SKALA; Operatory według malejącego priorytetu: Operatory Kierunek wiązania () od lewej do prawej + (jednoargumentowe) od prawej do lewej * / od lewej do prawej + (dwuargumentowe) od lewej do prawej = od prawej do lewej Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 20 / 23

Priorytet i kolejność obliczeń /* zasady.c -- test kolejności działań */ int rekord, wynik; rekord = wynik = -(2 + 5) * 6 + (4 + 3 * (2 + 3)); printf("rekord = %d \n", rekord); Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 21 / 23

Operator modulo: % Operator modulo jest wykorzystywany wyłącznie w arytmetyce całkowitoliczbowej. Zwraca resztę z dzielenia liczby po lewej stronie przez liczbę po prawej stronie. 13 % 5 Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 22 / 23

Operator modulo: % /* min_sek.c -- przelicza sekundy na minuty i sekundy */ #define SEK_W_MIN 60 int sek, min, reszta; printf("przelicz sekundy na minuty sekundy!\n"); printf("podaj liczbe sekund, ktora chcesz przeliczyc\n"); scanf("%d", &sek); /* pobranie liczby sekund */ min = sek /SEK_W_MIN; /* liczba sekund z obciętą cześcią ułamkową */ reszta = sek % SEK_W_MIN; /* pozostała liczba sekund */ printf("%d sekund to %d minut, %d sekund.\n", sek, min, reszta); Przykładowe wykonanie programu: Podaj liczbe sekund, ktora chcesz przeliczyc 333 333 sekund to 5 minut, 33 sekund. Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Funkcje printf() i scanf() i operatory 4 kwietnia 2013 23 / 23