1. Wprowadzanie danych z klawiatury funkcja scanf



Podobne dokumenty
INFORMATYKA Studia Niestacjonarne Elektrotechnika

2 Przygotował: mgr inż. Maciej Lasota

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

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

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

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

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

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

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

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

Formatowane (tekstowe) wejście/wyjście. Binarne wejście/wyjście.

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

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

Zmienne, stałe i operatory

Podstawy programowania w języku C

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

n, m : int; S, a, b : double. Gdy wartości sumy składowej nie można obliczyć, to przyjąć Sij = 1.03 Dla obliczenia Sij zdefiniować funkcję.

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

Pliki. Informacje ogólne. Obsługa plików w języku C

Laboratorium 6: Ciągi znaków. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

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

Stałe i zmienne znakowe. Stała znakowa: znak

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Podstawy programowania C. dr. Krystyna Łapin

Programowanie strukturalne i obiektowe

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

IX. Wskaźniki.(3 godz.)

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

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

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

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

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

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Kier. MTR Programowanie w MATLABie Laboratorium

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

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

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

1 Podstawy c++ w pigułce.

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

Wstęp do Programowania, laboratorium 02

1 Podstawy c++ w pigułce.

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

Języki i metody programowania. Omówienie języków C, C++ i Java

3. Opracować program kodowania/dekodowania pliku tekstowego. Algorytm kodowania:

tablica: dane_liczbowe

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

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

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

Biblioteka standardowa - operacje wejścia/wyjścia

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

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

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

Programowanie. Ćwiczenie Język C. Środowisko programowania Visual Studio

Proces tworzenia programu:

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Programowanie strukturalne. dr inż. Tadeusz Jeleniewski

Na ekranie monitora zostaną wyświetlone w dwu liniach teksty Pierwsza linia Druga linia

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

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

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

W języku C każdy plik fizyczny jest ciągiem bajtów, z których każdy może być niezależnie odczytany. Borland 01234

Podstawy programowania w C++

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

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

Elementarne wiadomości o języku C

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof]

Reprezentacja symboli w komputerze.

Wstęp do programowania. Wykład 1

C++ wprowadzanie zmiennych

Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Struktury Struktura polami struct struct struct struct

Funkcje zawarte w bibliotece < io.h >

Autor: dr inż. Katarzyna Rudnik

MATERIAŁY DO ZAJĘĆ II

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

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

Język C zajęcia nr 11. Funkcje

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

Funkcje zawarte w bibliotece < io.h >

Programowanie w językach wysokiego poziomu

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

Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string)

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

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

Wykład 1. Proponowany termin kolokwium zaliczeniowego ostatni wykład w semestrze letnim

Podstawy i języki programowania

Wstęp do programowania

Wstęp do informatyki- wykład 8 Pętla while, do while,for -pętla w pętli- przykłady Operator rzutowania Manipulatory

Wstęp do programowania

Liczby rzeczywiste są reprezentowane w komputerze przez liczby zmiennopozycyjne. Liczbę k można przedstawid w postaci:

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

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

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

1. Brian W. Kernighan, Dennis M. Ritchie, Język ANSI C, WNT, Warszawa 1998.

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

Podstawy programowania w języku C++

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

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

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

Transkrypt:

1. Wprowadzanie danych z klawiatury funkcja scanf Deklaracja int scanf ( const char *format, wskaźnik, wskaźnik,... ) ; Biblioteka Działanie stdio.h Funkcja scanf wczytuje kolejne pola (ciągi znaków), ograniczone znakiem spacji ' ' lub nowej linii '\n'. Obrazy wczytywanych znaków są wyświetlane na ekranie monitora. Liczba wczytywanych pól i sposób ich przetwarzania są zadawane za pomocą pierwszego argumentu funkcji scanf, oznaczonego identyfikatorem format, którego wartością jest ciąg znaków (teskt). Ciąg ten składa się z pewnej liczby wzorców konwersji liczba wzorców występujących w formacie określa liczbę pól wczytywanych ze strumienia wejściowego (klawiatury) i liczbę wskaźników będących dalszymi argumentami funkcji scanf. Wzorzec konwersji ma następującą postać: % [ * ] [ szerokość ] [ prefiks ] znak_konwersji Każdy wzorzec rozpoczyna się zawsze od znaku procenta %, składniki umieszczone w nawiasach prostokątnych nie muszą występować. Znak gwiazdki * użyty we wzorcu nakazuje pominąć kolejne pole znaków ze strumienia wejściowego. Szerokość określa maksymalną liczbę znaków, które mają być pobrane z kolejnego pola. Pole to może być krótsze niż zadana szerokość w takim przypadku przetworzone będą jedynie znaki znajdujące się przed znakiem spacji lub nowej linii. Prefiks i znak_konwersji określają sposób przetworzenia znaków pola wynikiem tego przetwarzania jest najczęściej wartość binarna liczby określonego typu. Kolejne wzorce konwersji są powiązane z kolejnymi wskaźnikami będącymi dalszymi argumentami funkcji scanf obliczona wartość binarna liczby jest wprowadzana do obszaru pamięci wskazanego przez związany z danym wzorcem wskaźnik. Zakłada się przy tym, że typ wskaźnika związanego z wzorcem jest taki sam, jak typ konwersji zadanej w tym wzorcu. W tabelach podano znaczenie poszczególnych znaków konwersji i prefiksów

znak k. wejściowe pole znaków typ wskaźnika d liczba całkowita dziesiętna int* D liczba całkowita dziesiętna long* o liczba całkowita oktalna int* O liczba całkowita oktalna long* i I liczba całkowita dziesiętna, oktalna lub heksadecymalna liczba całkowita dziesiętna, oktalna lub heksadecymalna int* long* u liczba całkowita dziesiętna bez znaku unsigned int* U liczba całkowita dziesiętna bez znaku unsigned long* x liczba całkowita heksadecymalna int* X liczba całkowita heksadecymalna long* e, E liczba zmiennopozycyjna float* f liczba zmiennopozycyjna float* g, G liczba zmiennopozycyjna float* s ciąg znaków char* c znak char* prefiks znaki konwersji typ wskaźnika h d, i, o, u, x short* l d, i, o, u, x long* e, f, g double* L e, f, g long double* Pola reprezentujące liczby (poza konwersją u, U ) mogą rozpoczynać się od znaków plus + lub minus. W przypadku wczytywania ciągu znaków (konwersja s ) kody kolejnych znaków są lokowane w kolejnych bajtach pamięci, począwszy od bajtu wskazanego przez wskaźnik związany z danym wzorcem konwersji. Konieczne więc jest zarezerwowanie odpowiednio dużego obszaru pamięci, w którym znaki te będą umieszczane. Po ostatnim wczytanym znaku (różnym od znaku spacji lub nowej linii) jest umieszczany znak końca ciągu o wartości 0. Za pomocą konwersji s nie można wczytać tekstu złożonego z kilku słów oddzielonych spacjami. W takim przypadku można skorzystać z konwersji wyliczeniowej o postaci: [ ~] W nawiasach klamrowych podano przedział znaków ASCII (od znaku spacji do znaku tyldy), który będzie akceptowany i wprowadzany. Pierwszy znak spoza tego przedziału (czyli np. znak nowej linii) kończy wprowadzany tekst. Podczas wprowadzania

Wynik Przykład Uwaga znaków z klawiatury można używać klawisza Backspace do kasowania poprzednio wprowadzonych znaków. Prefiks umieszczony przed znakiem konwersji redefiniuje znaczenie tego znaku. Wynikiem funkcji scanf jest liczba pól znaków, które zostały poprawnie wczytane, poddane konwersji, a obliczone wartości zostały zapamiętane. #include <stdio.h> void main ( void ) { }... char cznak ; int nelement, nskładnik, *pnadres = &nskładnik ; int antablica [ 20 ] ; long ldługi, lpodłużny ; float flułamek ; double dbdokładny ; long double ldprecyzyjny ; char *szformat = "%f%lf%lf" ; char *szsłowo = new char [ 10 ] ; char acznaki [ 16 ] ; char actekst [ 65 ] ; scanf ( "%c%d", &cznak, &nelement); scanf ( "%i", pnadres ) ; identyfikatory wskaźnik scanf ( "%d%d", &antablica [ 0 ], &antablica [ 19 ] ) ; scanf ( "%D%ld", &ldługi, &lpodłużny ) ; scanf ( szformat, &flułamek, &dbdokładny, &ldprecyzyjny) ; scanf( "%s%s", szsłowo, acznaki ) ; scanf ( "%[ ~]", actekst ) ;... Funkcja scanf przerywa działanie w przypadku napotkania znaku niedozwolonego (np. znaku litery w liczbie całkowitej). Znak ten nie jest usuwany ze strumienia wejściowego, co niekiedy powoduje zapętlenie programu. Sytuacji tej można uniknąć, sprawdzając liczbę przetworzonych poprawnie pól znakowych, przekazywaną jako wynik funkcji scanf.

2. Wyprowadzanie danych na monitor ekranowy funkcja printf Deklaracja int printf (const char *format, wyrażenie, wyrażenie,... ) ; Biblioteka stdio.h Działanie Funkcja printf umożliwia wyprowadzanie ciągów znaków reprezentujących wartości wyrażeń, które są jej argumentami. Sposób wyprowadzania określa argument format będący ciągiem znaków zawierającym: znaki przesyłane bezpośrednio na ekran monitora, wzorce konwersji definiujące sposób przetwarzania wartości wyrażeń na ciągi znaków. Liczba wzorców konwersji powinna być równa liczbie wyrażeń, kolejne wzorce określają sposób przetwarzania wartości kolejnych wyrażeń. Wzorzec konwersji ma postać: % [ opis ] [ szerokość ] [. precyzja ] [ prefiks ] znak_konwersji Wzorzec konwersji rozpoczyna się od znaku procentu %, składniki zapisane w nawiasach kwadratowych mogą nie występować. Prefiks i znak_konwersji określają sposób przekształcania wartości wyrażenia odpowiadającego danemu wzorcowi konwersji na ciąg znaków składniki te muszą być dostosowane do typu wartości wyrażenia.

znak k. typ wyrażenia wynik konwersji d int liczba dziesiętna ze znakiem i int liczba dziesiętna ze znakiem o unsigned liczba oktalna bez znaku u unsigned liczba dziesiętna bez znaku x unsigned liczba heksadecymalna bez znaku ( a... f ) X unsigned liczba heksadecymalna bez znaku ( A... F) f float liczba rzeczywista ze znakiem o postaci ddd.ddd e float liczba rzeczywista ze znakiem o postaci d.ddde[+/-]ddd g float konwersja f lub e, zależnie od wartości argumentu E float jak konwersja e z użyciem litery E do oznaczenia wykładnika G float jak konwersja g z użyciem s char* ciąg znaków c char pojedynczy znak litery E do oznaczenia wykładnika prefiks znaki konwersji typ wyrażenia h d, i, o, u, x, X short l d, i, o, u, x, X long e, E, f, g, G double L e, E, f, g, G long double W przypadku konwersji s, przeznaczonej dla ciągów znaków, wyprowadzanych jest co najwyżej tyle znaków, ile wskazano za pomocą składnika szerokość. Gdy składnik ten nie występuje we wzorcu, wyprowadzane są wszystkie znaki ciągu. Znak nowej linii \n jest zamieniany przez funkcję printf na parę znaków CR i LF, co powoduje przesunięcie kursora na początek następnego wiersza (z ewentualnym przewinięciem ekranu). Poprawnie są interpretowane również znaki sterujące: '\t (tabulacja pozioma HT ), '\r (powrót kursora CR ), '\b (cofnięcie kursora ze zmazaniem poprzedniego znaku BS ) i '\a (dzwonek BELL ). Składnik szerokość określa

Wynik minimalną liczbę znaków, które zostaną wyprowadzone. Większa liczba znaków zostanie wyprowadzona, gdy w wyniku konwersji otrzymano ciąg znaków dłuższy od podanej szerokości. Jeżeli natomiast wynik konwersji zawiera mniej znaków, to zostanie on uzupełniony znakami spacji. Składnik opis jest jednym znakiem: uzupełnianie znakami spacji z prawej strony; gdy opis nie występuje, uzupełnia się z lewej strony, + wyprowadzanie znaku liczby (plus albo minus); gdy opis nie występuje, wyprowadzany jest jedynie minus, spacja wyprowadzanie znaku spacji zamiast znaku plus liczby. Składnik precyzja rozpoczyna się od znaku kropki i jest wartością całkowitą określającą liczbę miejsc po kropce dziesiętnej wyprowadzanej wartości zmiennopozycyjnej lub liczbę znaków podczas wyprowadzania ciągu znaków (konwersja s). Gdy precyzja nie jest określona, wyprowadzanych jest 6 miejsc po kropce dziesiętnej. Wynikiem funkcji printf jest łączna liczba wyprowadzonych znaków. Przykład #include <stdio.h> void main(void) {... int nbok = 15 ; printf ( "Wartość zmiennej nbok wynosi %d", nbok ) ; printf( "%d", nbok * nbok + 2 ) ; int anszyk [ 5 ] = { 1, 2, 3, 4, 5 } ; for ( int nkolejny = 0 ; nkolejkny < 5 ; nkolejny++ ) printf( "\nszyk [%d]=%d", nkolejny, anszyk [ nkolejny ] ) ; float flskok = 151.37825; printf ( "%+12.3f", flskok ) ; +151.378 printf ( "%E", sin ( 1 1 / flskok ) * cos ( 1 / exp( flskok ) ) ; long lczas = 3782505 ; double dbksiężyc = 27E38 ; long double ldmikrus = 5E 127 ; printf ( "%ld \t %le \t %Le, lczas, dbksiężyc, ldmikrus ) ;

char *sznapis = "raz dwa trzy" ; } printf( "%s", sznapis ) ; printf ( "%.7s", sznapis ) ; printf ( " \n ) ;... wszystkie znaki 7 początkowych znaków nowa linia