Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;

Podobné dokumenty
Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;

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

Programovací jazyk C++ Hodina 1

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

IUJCE 07/08 Přednáška č. 1

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

Zápis programu v jazyce C#

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

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

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

Úvod do programovacích jazyků (Java)

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

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Lekce 6 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

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

Úvod do programování. Lekce 1

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

Objektově orientované programování

Výrazy, operace, příkazy

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

Programovací jazyk Pascal

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

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

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

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

Algoritmizace a programování

PROGRAMOVÁNÍ V C++ CVIČENÍ

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

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

Jazyk C# a platforma.net

Data, výrazy, příkazy

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

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

2 Datové typy v jazyce C

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

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

Paměť počítače. alg2 1

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

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

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

Lekce 9 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí

NPRG031 Programování II --- 2/2 Z, Zk

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Základy programování (IZP)

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

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

Základy programování (IZP)

Výrazy, operace, příkazy

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Preprocesor a koncepce (větších) programů. Úvod do programování 2 Tomáš Kühr

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

Opakování programování

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

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

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

Řídicí struktury. alg3 1

Jazyk C++, některá rozšíření oproti C

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

Proměnná a její uložení v paměti

Struktura programu, proměnné, konstanty, výrazy v jazycích C a C#

Stručný obsah První týden Druhý týden 211 Třetí týden 451 Rejstřík 787

6 Příkazy řízení toku

Inovace bakalářského studijního oboru Aplikovaná chemie

Základy jazyka C. Základy programování 1 Tomáš Kühr

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

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

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.

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

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

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA

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

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

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

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Programování v jazyce JavaScript

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

8 Třídy, objekty, metody, předávání argumentů metod

Bitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr

10 Práce s řetězci - pokračování

Programování C++ Lukáš Tomášek. verze

NPRG030 Programování I, 2010/11

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

Algoritmy v jazyku C a C++

IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje

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

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Základy algoritmizace a programování

Algoritmizace a programování

NPRG030 Programování I, 2016/17 1 / :58:13

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

Programovanie v jazyku C - ti to zratam...

Základy jazyka C. Úvod do programování 1 Tomáš Kühr

Odvozené a strukturované typy dat

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

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

Transkript:

Programovací jazyk C(++) static struct vm_area_struct * unmap_fixup(struct mm_struct *mm, struct vm_area_struct *area, unsigned long addr, size_t len, struct vm_area_struct 1. *extra) Základy { struct vm_area_struct Miroslav *mpnt; Spousta, 2004 unsigned long end = addr + len; area->vm_mm->total_vm -= len >> PAGE_SHIFT; if (area->vm_flags C++ & VM_LOCKED) area->vm_mm->locked_vm -= len >> PAGE_SHIFT; /* Unmapping the whole area. */ if (addr == area->vm_start && end == area->vm_end) { if (area->vm_ops && area->vm_ops->close) area->vm_ops->close(area); if (area->vm_file) fput(area->vm_file); kmem_cache_free(vm_area_cachep, area); return extra; 1

Historie Jazyk C (K&R) Brian W. Kernighan a Denis M. Ritchie: The C Programming Language (1978) úzce spjat s vývojem UNIXu (je v něm napsána i většina jádra) ANSI C (C89 nebo C90) C++ z roku 1989, dnes běžný, definuje jazyk a knihovny, které jsou povinné také jako ISO standard (1990) objektové rozšíření, Bjarne Soustrup, Bell Labs (1983) rozšiřován: přidány výjimky, templates ANSI C++ (1997), ISO (1998) 2

Jazyk C jazyk nízké úrovně neobyčejně silný, neobyčejně nebezpečný má úsporné vyjadřování (žádné begin, end) univerzální (od jádra operačního systému po aplikace, od sálových počítačů po mikročipy) jen základní datové typy (číslo, znak, nikoli řetězec) přenositelný (norma ANSI C) základ programátora, mateřský jazyk UNIXu kód může být velmi efektivní srovnatelný s assemblerem, máme-li dobrý kompilátor 3

Jazyk C++ objektové rozšíření jazyka C struktury s asociovanými funkcemi (metodami) dědičnost, zapouzdření, polymorfismus šablony (templates) přetěžování operátorů a funkcí výjimky a jejich ošetření drobné odlišnosti (něco má navíc C, něco C++) průnik neprázdný 4

Hello world! #include <stdio.h> int main(int argc, char *argv[]) { printf( Hello world\n ); return 0; funkce: main(), printf() mají argumenty, návratový typ hlavičkový soubor: stdio.h s popisem používaných funkcí 5

Struktura programu kód je rozdělený do funkcí např. funkce main() funkce se skládají hlavičky a bloků kódu bloky jsou ve složených závorkách { každá funkce má svůj blok, v něm mohou být vloženy další v bloku jsou uvedeny deklarace, za nimi kód v C99 a C++ se deklarace mohou s kódem míchat 6

(Oddělený) překlad kód programu zdrojový text: soubor.c nebo soubor.cc či soubor.cpp hlavičkové soubory: soubor.h nebo soubor.hh kompilátor linker vytvoří ke každému zdrojovému souboru objektový soubor: soubor.o spojí všechny objektové soubory, přidá knihovny vytvoří spustitelný soubor (inicializační kód) 7

Identifikátory identifikátor pojmenování něčeho (objektu) v program libovolná posloupnost písmen (a znaku _ ) a čísel začínající písmenem (nebo _ ) rozlišuje se velikost písmen! C: identifikátory psát malými písmeny a s podtržítky, C++: první písmeno slova velké nepoužívat podobné identifikátory (system, system_) nepoužívat stejné identifikátory lišící se jen velikostí písmen (kostra, Kostra, KOSTRA) komentáře /* komentář */ // komentář 8

Datové typy čísla celá: znaky short, int, long, long long (C99) unsigned short, unsigned, unsinged long signed char, unsigned char, char (jedno z předchozích) wchar_t (unicode) čísla reálná (komplexní jen C99) float, double, long double logické hodnoty bool (C99, C++), klasicky v C se to řeší pomocí typu int 9

Datové typy 2 velikost typu char je 1 bajt, jinak je definováno pouze: short <= int <= long <= long long float <= double <= long double konstanty celé (desítkově) -10, 4, 45, (šestnáctkově) -0xA 0x4 0x44, (osmičkově) 043, 0, -016 reálné: 15.,.84, 7e10 znaky: 'a', '%', '\n', '\t' řetězce: nejaky retezec, nejaky jiny retezec typ C: #define PI 3.1415926 typ C++: const double PI = 3.1415926 10

Definice, deklarace deklarace: udává typ proměnné a její jméno extern int parse; definice: deklarace, která navíc alokuje paměť (pro danou proměnnou) int test; lokální proměnné: platí v daném bloku globální proměnné: platí v celém programu proměnnou můžeme při definici inicializovat int test = 0; 11

Příklad int g; /* globální proměnná */ int f(int x) { int y; /* lokální proměnná */ y = x * x + g; return y; int main(int argc, char *argv[]) { g = 2; printf( 5 * 5 + 2 je %d!\n, f(5)); 12

funkce, main() v C jsou jen funkce (vždy se něco vrací, aspoň prázdný typ void) parametry funkcí mohou být proměnné libovolného typu např.: int sum(int a, int b) jedna funkce se vždy jmenuje main() je to první funkce, která se vykoná po spuštění programu, v programu musí být vrací typ int (návratovou hodnotu pro OS) má dva parametry počet vstupních argumentů a pole argumentů funkce se ukončuje příkazem return (s návratovou hodnotou funkce) případně přechodem přes konec bloku (funkce typu void) funkce se mohou volat rekurzivně 13

Příkaz výraz ukončený středníkem výraz: i = 4 příkaz: i = 4; prázdný příkaz: jen středník např. tam, kde nějaký příkaz být musí (tělo cyklu) 14

Operátory sčítání, odčítání: +, - unární inkrementace, dekrementace: ++, -- násobení, dělení, zbytek po dělení: *, /, % logické operátory (and a or): &&, bitové operátory (and, or, xor): &,, ^ bitový posun vlevo, vpravo: <<, >> porovnání: <, <=, >, >=, ==,!= přiřazení: =, +=, -=, *=, /=, %=, &=, =, ^=, >>=, <<= 15

Operátory l-value: proměnná nebo něco, kam je možné přiřazovat (má adresu) POZOR přiřazení je jen =, ne := x = 4 je výraz, vrací hodnotu 4, pozor na záměnu s porovnáním (==) např. v if (x = 4) {... je podmínka vždy splněná na prioritu operátorů, závorkovat nulová hodnota je nepravda, nenulová pravda unární operátory neoddělujeme mezerou (i++) po čárce, středníku píšeme mezeru, před nimi ne! 16

Podmínka if (výraz) příkaz; else příkaz; místo příkazu může být i blok možno i bez else větve žádné then! nenula ve výrazu zamená true, nula je false zkrácené vyhodnocení výrazu stop, víme-li, jak výraz dopadne int f(int a, int b) { int c; if (b) { c = a % b; else { c = 0; return c; 17

Cykly while (výraz) { klasický while cyklus do { while (výraz) opakuje se, dokud je podmínka splněna (pozor, jinak než v Pascalu!) for (v1; v2; v3) { v1: inicializace v2: podmínka, vyhodnocuje se před každým cyklem v3: vyhodnocuje se po každém cyklu int i = 0; while (i++ < 10) { printf(. ); do { printf(. ); while (i++ < 10); for(i = 0; i < 10; i++) { printf(. ); 18

Ještě k cyklům vyskočení z cyklu: break další iterace: continue je-li tělo cyklu prázdné, píšeme středník na novou řádku operátor čárky: j = (1, 3); použití: např. inicializace ve forcyklu double i = -10; while (i++ < 10) { if (i == 0) continue; printf( %.5f\n, 1/i); for (i = 1; i < 10; i <<= 1) ; printf( Vysledek: %d\n, i); 19

Switch testuje hodnotu dané celočíselné proměnné, podle jejích hodnot provádí kód break ukončuje switch continue ho nijak neovlivňuje! default větev se provádí, pro hodnoty, které nejsou mezi vyjmenovanými neuvedeme-li break, propadáme do další větve void f(int i) { switch (i) { case 1: puts( jedna ); break; case 2: puts( dve ); default: puts( honza de ); f(1); f(2); f(3); 20

Terminálový vstup/výstup #include <stdio.h> hlavičkový soubor pro standardní vstup/výstup int puts(const char *s) vytiskne řetězec, char *s,vrátí nezáporné číslo, pokud se povedlo, nebo EOF int putchar(int c) vytiskne jeden znak vrátí zapsaný znak nebo EOF int getchar() přečte jeden znak ze standardního vstupu, nebo EOF (konec souboru) 21

Terminálový vstup/výstup formátovaný výstup (např. čísla) #include <stdio.h> int printf(const char *fmt, ) vytiskne fmt, nahradí v něm specíální podřetězce (začínající znakem %) dalšími argumenty argumentů může být libovolně mnoho např.: int a = 10; printf( Cislo je: %d\n, a); vytiskne Cislo je 10 vrací počet vytisknutých znaků (bez ukončovacího znaku '\0') int: %d, string: %s, char: %c, float: %f 22

atoi() int atoi(const char *s) převede řetězec znaků na číslo (int) int main(int argc, char *argv[]) { int i; if (argc <= 1) { printf( usage: program cislo\n ); return 1; i = atoi(argv[1]); printf( dvakrat tolik je: %d\n, i*2); return 0; 23

Příklad /* program, který převede všechna písmena na velká */ #include <stdio.h> int main(int argc, char *argv[]) { int c; while ((c = getchar())!= EOF) { if (c >= 'a' && c <= 'z') c = c ('a' 'A'); putchar(c); return 0; 24

Domácí úkol sehnat a nainstalovat si kompilátor naučit se v něm pracovat (vytvořit projekt, kompilovat, spustit program) zapnout všechny warningy zkompilovat hello world! 25