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



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

INFORMATYKA Studia Niestacjonarne Elektrotechnika

2 Przygotował: mgr inż. Maciej Lasota

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

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.

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

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

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)

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

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

#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 printf() i scanf() i operatory

1. Wprowadzanie danych z klawiatury funkcja scanf

Zmienne, stałe i operatory

Tablice, funkcje - wprowadzenie

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

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

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

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

Programowanie strukturalne i obiektowe

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

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

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

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

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

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

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

1 Podstawy c++ w pigułce.

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

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

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Spis treści JĘZYK C - ŁAŃCUCHY ZNAKÓW. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF22

Podstawy programowania 1

Struktury, unie, formatowanie, wskaźniki

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

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

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

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

Podstawy programowania

Kier. MTR Programowanie w MATLABie Laboratorium

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

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

iii. b. Deklaracja zmiennej znakowej poprzez podanie znaku

Języki programowania obiektowego Nieobiektowe elementy języka C++

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

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

Spis treści JĘZYK C - ŁAŃCUCHY ZNAKÓW. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF10Z

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Laboratorium 10: Maszyna stanów

Programowanie w językach wysokiego poziomu

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

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

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

KURS C/C++ WYKŁAD 5. Typ wyliczeniowy enum

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

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

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

Wstęp do Programowania, laboratorium 02

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

lekcja 8a Gry komputerowe MasterMind

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

Podstawy Programowania C++

1 Podstawy c++ w pigułce.

Podstawy programowania C. dr. Krystyna Łapin

MATERIAŁY DO ZAJĘĆ II

Podstawy programowania w języku C++

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

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

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Reprezentacja symboli w komputerze.

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

2. Łańcuchy tekstowe w PHP

Tablice deklaracja, reprezentacja wewnętrzna

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

Podstawy Informatyki. Zmienne w języku C dr inż. Piotr Kaczmarek

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

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

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

Program wykonujący operację na plikach powinien zachować schemat działania zapewniający poprawną pracę:

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

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

Autor: dr inż. Katarzyna Rudnik

IX. Wskaźniki.(3 godz.)

Język C++ zajęcia nr 1

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

Programowanie strukturalne. dr inż. Tadeusz Jeleniewski

Podstawy i języki programowania

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

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Napisy w PHP. Drukowanie napisów instrukcją echo

7 Przygotował: mgr inż. Maciej Lasota

I. Podstawy języka C powtórka

PODSTAW PROGRAMOWANIA WYKŁAD 7 ŁAŃCUCHY

Język C zajęcia nr 11. Funkcje

Transkrypt:

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można je definiować na dwa sposoby: a) dyrektywa #define schemat: #DEFINE nazwa wartość //bez średnika na końcu #define LICZBA 12 #define PI 3.14159 #define KOMUNIKAT Wystąpił błąd w programie!!! W ten sposób stałe deklarujemy zazwyczaj w sekcji nagłówkowej programu. b) modyfikator const schemat: const typ nazwa=wartość; //średnik jest! const int LICZBA=12; const float PI=3.14159; Źródła nie podają, czy da się w ten sposób deklarować stałe łańcuchy znaków. Co dalej ze stałymi: int wynik = LICZBA * 2; //do zmiennej wynik trafi wartość 24 float objetosc = (4*PI*r*r*r)/3 //i mamy objętość kuli o promieniu r, r to zmienna char znaki[liczba]; //można użyć do deklaracji Operacja LICZBA=25; zakończy się błędem, gdyż LICZBA to stała, a nie zmienna! Zmienne znakowe deklarujemy korzystając z typu char, a inicjujemy korzystając z apostrofów. ( ) Np. char znak; lub razem: char znak= a ; znak= a ; Łańcuchy znaków Łańcuchy znaków są to inaczej tablice znaków zakończone znakiem: \0, którego przy wyświetlaniu nie widać, i którego zazwyczaj sami nie wpisujemy. Przy inicjacji, wywołaniach funkcji i innych sytuacjach korzystamy z cudzysłowów. (" ")

Np. łańcuch "Jestem tekstem" jak widzi go program (od wewnątrz)... 74 101 115 116 101 109 32 116 101 107 115 116 101 109 0...... J e s t e m t e k s t e m \0... 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 (w górnym wierszu kody ASCII, w dolnym numery komórek) Deklaracja zmiennych łańcuchów znaków: a) jako tablica znaków: char tekst1[20]; b) za pomocą wskaźnika: char *tekst; Przypisanie wartości zmiennym tego typu: a) jeśli deklarujemy jako tablica //20-elementowa tablica znaków //wskaźnik na pierwszy znak, na początek łańcucha znaków 1) char tekst= Łańcuch znaków //tak można 2) chat tekst={ Ł, a, ń, c, u, c, h,, z, n, a, k, ó, w, \0 } \\tak można ale to niepraktyczne, bo długie i musimy pamiętać o znaku \0 na końcu 3) char tekst[20]; tekst= Jakiś tekst //tak nie można!!!, zamiast tego trzeba użyć funkcji, np. b) jeśli deklarujemy jako wskaźnik tekst= Imię i nazwisko ; //memcpy(tekst, Jakiś tekst,12); //tak można, nie ma problemów O operacjach na łańcuchach, a także o tablicach więcej informacji już niebawem. Znak a łańcuch Zapis A oznacza znak. Jeden znak. Dokładnie jeden znak. Zapis A oznacza łańcuch znaków, czyli dokładnie dwa znaki: A i \0. Wprowadzanie i wyprowadzanie łańcuchów znaków a) wyjście sformatowane funkcja printf(). Funkcja służy do wyprowadzania sformatowanych łańcuchów znaków na standardowe wyjście (ekran). int printf(const char *format,...) Parametr format wskazuje tzw. łańcuch formatujący. Jak każdy inny łańcuch jest on zakończony znakiem \0. Niektóre sekwencje znaków są jednak specyficznie traktowane. Są one zastępowane odpowiednio danymi znajdującymi się w parametrach nieustalonych (oznaczonych w definicji przez... ). Np. char *imie= Jan ;

int wiek=30; printf( %s ma %d lat.,imie,wiek); spowoduje wyświetlenie napisu Jan ma 30 lat.. Sekwencja formatująca określona jest następująco: %[flagi][szerokość][.precyzja][f N h l L]znak-typu Specyfikator typu Znak typu Argument wejściowy Postać wyjściowa Liczby całkowite d, i o u x X Liczby zmienno-przecinkowe e E f g G c s % znak wskaźnik łańcucha żaden dziesiętna ze znakiem ósemkowa bez znaku dziesiętna bez znaku szesnastkowa bez znaku, małe litery (a,b,c,...) szesnastkowa bez znaku, duże litery (A,B,C,...) [-]d.ddd...e[+/-]ddd przed przecinkiem jedna cyfra, liczba cyfra po przecinku równa precyzji, wykładnik co najmniej dwie cyfry j.w., ale duża litera E, zamiast małej [-]ddd.ddd..., gdzie liczba cyfr po przecinku jest równa precyzji liczba będzie wyświetlana w postaci e lub f w zależności od zadanej precyzji j.w., ale z dużą literą E zamiast małej pojedynczy znak znaki łańcucha aż do napotkania znaku \0 drukuje znak % Specyfikator precyzji Specyfikator Precyzja nie podano Przyjmowane są następujące domyślne precyzje: - 1 dla znaków typu d,i,o,u,x,x - 6 dla znaków typu e,e,f - wszystkie znaczące cyfry dla znaków typu g i G - łańcuchy są drukowane do pierwszego znaku \0.0 Dla znaków typu d,i,o,u,x,x przyjmowana jest precyzja d domyślna; dla e,e,f nie jest drukowany przecinek dziesiętny; liczby całkowite o wartości zero nie są w ogóle drukowane.n Drukowane będzie n znaków lub cyfr dziesiętnych; jeżeli wartość wymaga większej liczby znaków nastąpi obcięcie lub zaokrąglenie Specyfikator szerokości Specyfikator Wpływ na formatowane dane n Drukowanych jest przynajmniej n znaków; jeśli wartość zajmuje mniej niż n znaków, zostaną umieszczone dodatkowe spacje 0n Drukowanych jest przynajmniej n znaków; jeśli wartość ma mniej niż n znaków, zostanie ona wypełniona zerami z lewej strony

b) wejście sformatowane funkcja scanf(). Funkcja służy do pobierania sformatowanych danych ze standardowego wejścia (klawiatury). int scanf(const char *format,...) Parametr format wskazuje łańcuch formatujący określający typy wprowadzanych danych. Wprowadzane dane są określone przez zmienne zawarte w parametrach nieustalonych (oznaczonych w definicji przez... ). Odwołanie do zmiennych odbywa się za pomocą referencji, czyli poprzez wskazanie adresu tej zmiennej w pamięci (znak & ), chyba, że zmienna jest typu wskaźnikowego (łancuch znaków też). Np. int zmienna1, zmienna2; scanf( %d%d,&zmienna1,&zmienna2); Spowoduje zczytanie z klawiatury dwóch liczb ch i umieszczenie ich w zmiennych zmienna1 i zmienna2. Sekwencja formatująca określona jest następująco: %[*][szerokość][f N h l L]znak-typu Specyfikator typu Znak typu Dana wprowadzana Liczby całkowite d, D o, O i, I u, U x, X dziesiętna ósemkowa dziesiętna, ósemkowa, szesnastkowa dziesiętna bez znaku szesnastkowa Liczby rzeczywiste e, E, f, g, G zmiennoprzecinkowa C s znak łańcuch znaków c) PRZYKŁAD: wczytaj nazwy pięciu samochodów, ich pojemność, standard (wysoki lub niski) i cenę. Wyświetl to na ekranie w odpowiedni sposób: Nazwa Standard Pojemność Cena najdłuższej nazwy) 7 znaków) 10 znaków, z precyzją jednej cyfry po przecinku) 10 znaków) d) wprowadzanie i wyprowadzanie niesformatowanych łańcuchów znaków 1) Funkcja gets() służy do odczytania z klawiatury łańcucha znaków, zakończonego znakiem końca wiersza [Enter]. W łańcuchu mogą być spacje. char *gets(char *napis)

łańcuch umieszczony zostaje w zmiennej napis. 2) Funkcja puts() służy do wyprowadzania na ekran łańcuchów znaków. Na końcu łańcucha dołączany jest znak końca wiersza int puts(const char *napis) Wywołanie: char *napis1, *napis2; gets(napis1); napis2= Test ; puts(napis2); e) wprowadzanie i wyprowadzanie pojedynczych znaków 1) Funkcja getchar() służy do odczytania z klawiatury pojedynczego znaku. int getchar(void) 2) Funkcja putchar() służy do wyprowadzania na ekran pojedynczego znaku. int putchar(const int c) Wywołanie: char znak1, znak2; znak1 = getchar(); znak2= a ; putchar(znak2);