Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Podobné dokumenty
Programování v jazyce C pro chemiky (C2160) 6. Funkce, struktury

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Operační systémy. Cvičení 4: Programování v C pod Unixem

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Větvení a cykly. Úvod do programování 1 Tomáš Kühr

Cykly. Základy programování 1 Martin Kauer (Tomáš Kühr)

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Úvod do programování - Java. Cvičení č.4

Algoritmizace a programování

Programování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Operační systémy. Cvičení 3: Programování v C pod Unixem

6 Příkazy řízení toku

- jak udělat konstantu long int: L long velka = 78L;

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Algoritmizace a programování

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Funkce, intuitivní chápání složitosti

Úvod do programování. Lekce 3

6. Příkazy a řídící struktury v Javě

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Řídicí struktury. alg3 1

2. lekce Algoritmus, cyklus Miroslav Jílek

Řídící struktury, if, while, switch

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

2 Datové typy v jazyce C

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Řešení sady 1. Úvod do programování 1 Tomáš Kühr

Základy algoritmizace a programování

Formátové specifikace formátovací řetězce

Pokročilé programování v jazyce C pro chemiky (C3220) Vstup a výstup v C++

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

1. Téma 03 - Rozhodování

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);

Martin Flusser. November 1, 2016

Algoritmy a datové struktury

pi Ludolfovo číslo π = 3,14159 e Eulerovo číslo e = 2,71828 (lze spočítat jako exp(1)), např. je v Octave, v MATLABu tato konstanta e není

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

Algoritmizace a programování

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

Základy algoritmizace a programování

Stručný návod k programu Octave

Vector datový kontejner v C++.

Úvod do programovacích jazyků (Java)

Pointery II. Jan Hnilica Počítačové modelování 17

Matice. Předpokládejme, že A = (a ij ) je matice typu m n: diagonálou jsou rovny nule.

Programovani v Maplu Procedura

Algoritmizace a programování

Základy algoritmizace a programování

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Klíčové pojmy: Cyklus, řídící proměnná, inicializace, test podmínky, přerušení cyklu, vnořování cyklů.

KTE / PPEL Počítačová podpora v elektrotechnice

Úvod do programování. Lekce 1

Lineární algebra Operace s vektory a maticemi

II. Úlohy na vložené cykly a podprogramy

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++

- transpozice (odlišuje se od překlopení pro komplexní čísla) - překlopení matice pole podle hlavní diagonály, např.: A.' ans =

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 11

Programování v C++ 1, 1. cvičení

Prezentace a vysvětlení programového prostředí NXC

Šablonové metaprogramování v C++ Miroslav Virius KSI FJFI ČVUT

Příklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na

Funkce pokročilé možnosti. Úvod do programování 2 Tomáš Kühr

Příkazy if, while, do-while, for, switch

Příkaz while. while (podmínka) { příkaz; } Příklad: int i=0; while (i < 10) { System.out.println(i); i++; } // vypíše čísla od 0 do 9

KTE / ZPE Informační technologie

cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování)

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Matematika B101MA1, B101MA2

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Programování v jazyce C pro chemiky (C2160) 7. Ukazatele, Funkce pro práci s řetězci

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

Strukturované typy a ukazatele. Úvod do programování 1 Tomáš Kühr

while cyklus s podmínkou na začátku cyklus bez udání počtu opakování while podmínka příkazy; příkazy; příkazy; end; % další pokračování programu

Programování v jazyce C pro chemiky (C2160) 9. Práce s PDB soubory

Programovací jazyk C++ Hodina 1

Programování v jazyce C

MQL4 COURSE. By Coders guru -5 Smyčky & Rozhodnutí Part 1


Zápis programu v jazyce C#

5 Přehled operátorů, příkazy, přetypování

Základy programování (IZP)

Hisab al-džebr val-muqabala ( Věda o redukci a vzájemném rušení ) Muhammada ibn Músá al-chvárizmího (790? - 850?, Chiva, Bagdád),

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I

Racionální čísla, operátory, výrazy, knihovní funkce

Funkce, podmíněný příkaz if-else, příkaz cyklu for

LED_007.c Strana: 1/5 C:\Michal\AVR\Výukové programy\archiv\ Poslední změna: :01:48

Transkript:

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Příkaz switch Příkaz switch provede příslušnou skupinu příkazů na základě hodnoty proměnné (celočíselné nebo znakové) uvedené v záhlaví Za každým návěstím case N uvedeme příkazy které se mají vykonat, za nimi zpravidla následuje break, jinak by se pokračovalo vykonáváním příkazů za dalším case. Zapisuje se: switch (proměnná) case číslo1 : příkazy1; break; case číslo2 : příkazy2; break;... case číslon : příkazyn; break; default: příkazy; break; 2

Příkaz switch - příklad int a = 0; scanf("%i", &a); switch(a) case 1: printf("jednicka\n"); break; // Zde vyskocime, jinak by se pokracovalo dalsim navestim case 2: printf("dvojka\n"); break; case 10: printf("desitka\n"); break; default: printf("jina hodnota\n"); break; // Tento break je vlastne zbytecny 3

Příkaz cyklu for Cyklus for se používá podobně jako while, umožňuje však některé další operace přímo v záhlaví cyklu Zapisuje se: for (inicializace; podmínka; příkazy na konci cyklu) příkazy; Inicializace: příkazy které se provedou před začátkem cyklu; nejčastěji přiřazení výchozích hodnot proměnným Podmínka se formuluje stejně jako u cyklu while Příkazy na konci cyklu: tyto příkazy se provedou po každém průchodu cyklem; zpravidla jde o změnu hodnot proměnných, např. zvýšení o jedničku a pod. Uvedné tři sekce v záhlaví cyklu oddělujme středníkem int i = 0, sum = 0; for (i = 1; i <= 100; i = i + 1) sum = sum + i; 4

Příkaz cyklu for Pokud cyklus obsahuje jen jeden příkaz, je možné složené závorky vynechat int i = 0; int sum = 0; for (i = 1; i <= 100; i = i + 1) sum = sum + i; 5

Vnořené cykly Všechny typy cyklů (while, do, for) můžeme vzájemně vnořovat Při použití cyklu for používáme v záhlaví často celočíselnou proměnnou jejíž hodnota se změní po každém průchodu cyklem - tuto proměnnou pak nazýváme řídící proměnná cyklu Řídící proměnná se zpravidla jmenuje i, pro vnořené cykly pak používáme jména j, k a pod. int i = 0, j = 0, k = 0; for (i = 1; i <= 100; i = i + 1) // Nejake prikazy for (j = 100; j > 0; j = j 1) // Nejake prikazy for (k = 1; k <= 100; k = k + 1) // Nejake prikazy // Nejake prikazy // Nejake prikazy 6

Operátory ++ a -- Operátor ++ se používá pro zvětšení hodnoty proměnné o 1 Operátor -- se používá pro zmenšení hodnoty proměnné o 1 Tyto operátory se často používají v záhlaví cyklu for int a = 0; // Nasledujici dva prikazy provedou totez a = a + 1; a++; int i = 0; // Typicke pouziti operatoru ++ v cyklu for for (i = 1; i < 10; i++) // nejake prikazy 7

Příkaz continue Příkaz continue se používá v cyklech while, do a for Příkaz způsobí skok na konec cyklu a tím vynutí další iteraci, cyklus tedy není ukončen ale pokračuje vyhodnocením podmínky cyklu a ta rozhodne o dalším pokračování int i; for (i = 0; i < 10; i++) // Je li i rovno 2 provede se continue, // preskoci se prikazy za nim if (i == 2) continue; printf( %i\n, i); 8

Jednorozměrná pole Pole (angl. array) je speciální proměnná, která obsahuje více prvků téhož typu Pole definujeme podobně jako proměnnou, za ní v hranatých závorkách uvedeme počet prvků pole Výchozí hodnoty prvků pole lze specifikovat ve složených závorkách (tzv. inicializace pole) Hodnoty jednotlivých prvků pole získáme pomocí [index] POZOR: Prvky pole jsou v jazyce C číslovány od 0, tj. nabývají hodnot 0 až (počet prvků - 1) a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] int a[10]; // Definujeme pole celých čísel o deseti prvcích int b[4] = 2, 4, 5, 7; // Hodnoty prvk ů pole lze inicializovat int c = 0; // Ukazka prace s prvky pole c = b[0] * b[1] + b[2] * b[3]; a[2] = c + b[0]; 9

Pole příklad 1 Program pro výpočet součtu dvou 3-dimenzionálních vektorů: int main() int i = 0; float va[3] = 0.0, 0.0, 0.0; float vb[3] = 0.0, 0.0, 0.0; float vc[3] = 0.0, 0.0, 0.0; printf("zadejte souradnice prvniho vektoru: "); scanf("%f %f %f", &va[0], &va[1], &va[2]); printf("zadejte souradnice druheho vektoru: "); scanf("%f %f %f", &vb[0], &vb[1], &vb[2]); for (i = 0; i < 3; i++) vc[i] = va[i] + vb[i]; printf("soucet vektoru: %f, %f, %f\n", vc[0], vc[1], vc[2]); return 0; 10

Symbolické konstanty Při programování často používáme tzv. symbolické konstanty Symbolickou konstantu definujeme následovně: #define JMENO HODNOTA Překladač před zahájením překladu nahradí výskyt všech jmen symbolické konstanty JMENO jeji hodnotou HODNOTA Symbolické konstanty specifikujeme na začátku programu, ještě před definicí funkce main() Jména symbolických konstant píšeme zpravidla velkými písmeny Symbolické konstanty se často používají pro specifikaci velikosti polí // definujeme symbolickou konstantu SIZE s hodnotou 4 #define SIZE 4 int main() int i; int a[size]; // Definujeme pole velikosti SIZE // Zde bychom nastavili nejake hodnoty pole a[] for (i = 0; i < SIZE; i++) printf("prvek pole %i ma hodnotu %i\n", i, a[i]); 11

Pole příklad 2 Program pro výpočet součtu dvou n-dimenzionálních vektorů: #define SIZE 4 int main() int i = 0; float va[size] = 0.0, vb[size] = 0.0, vc[size] = 0.0; // Nacteni hodnot od uzivatele printf("zadejte %i souradnic prvniho vektoru", SIZE); for (i = 0; i < SIZE; i++) scanf("%f", &va[i]); //... Podobne se nacte druhy vektor for (i = 0; i < SIZE; i++) vc[i] = va[i] + vb[i]; printf("vysledny vektor je: "); for (i = 0; i < SIZE; i++) printf("%f ", vc[i]); printf("\n"); return 0; 12

Vícerozměrná pole Vícerozměrná pole jsou pole s více než jednou dimenzí Dvoudimenzionální pole jsou vlastně pole polí Příklad: Program na sčítání matic o 2 řádcích a 3 sloupcích: int i = 0, j = 0; float ma[2][3] = 5.0, 7.0, 9.0, 2.0, 4.0, 6.0; float mb[2][3] = 1.0, 4.0, 4.0, 2.0, 8.0, 5.0; float mc[2][3] = 0.0, 0.0, 0.0, 0.0, 0.0, 0.0; for (i = 0; i < 2; i++) for (j = 0; j < 3; j++) mc[i][j] = ma[i][j] + mb[i][j]; // Zde by se vypsala výsledná matice 13

Dodržujte následující pravidla Na začátku každého programu uveďte stručný komentář vysvětlující co program dělá Všechny proměnné vždy inicializujte vhodnou implicitní hodnotou při její definici Pole také inicializujte při jejich definici. Pokud inicializujete pouze první prvek, ostatní prvky se automaticky inicializují hodnotou 0 Při používání cyklů upřednostňujte cyklus for. Cykly while a do používejte pouze tam, kde nepoužíváte řídící proměnnou cyklu Dbejte na správné odsazování textu 14

Úlohy část 1 1. Upravte program ze cvičení 1 / úloha 3 tak aby využíval příkazu switch místo série podmínek. 1 bod 2. Vytvořte program, který od uživatele vyžádá souřadnice dvou 3- dimenzionálních vektorů, spočítá jejich vektorový součin a výsledný vektor vypíše na obrazovku. 1 bod 3. Vytvořte program, který spočítá skalární součin dvou n dimenzionálních vektorů a výsledek vypíše na obrazovku. Hodnota n bude specifikována v programu pomocí symbolické konstanty. 1 bod 4. Vytvořte program ve kterém definujete pole pro celá čísla a toto pole inicializujete vhodnými hodnotami. Dále definujte jiné pole do kterého program zkopíruje všechna sudá čísla z prvního pole. Na konci program vypíše počet nalezených sudých čísel a jejich hodnoty. 1 bod 15

Úlohy část 2 5. Vytvořte program, který vynásobí dvě matice o 3 řádcích a 3 sloupcích. Potom program zobecněte pro matice libovolné dimenze (s využitím symbolické konstanty). volitelná 1 bod 6. Vytvořte program, který spočítá prvních 40 Fibonacciho čísel. Tato čísla uloží do pole. Dále program určí kolik z čísel v tomto poli je dělitelných 2, 3, 4, 5, 6, 7, 8, 9 a 10. K tomu využijte druhé pomocné pole. Výsledek se nakonec vypíše na obrazovku. Také se vypíše kolik čísel nebylo dělitelných žádným z čísel 2 až 10. volitelná 2 body Fibonacciho čísla: http://en.wikipedia.org/wiki/fibonacci_numbers 16