Programmering i C. Vad är C? Målsättning. Litteratur. Jämförelse med Java. Exempel : Ett program som skriver ut texten Hello, world

Relevanta dokument
C-programmering. Målsättning Introducera programmering i C för de som inte har någon erfarenhet av C eller C++. Litteratur

Programmering i C. Vad är C? Målsättning. Litteratur. Jämförelse med Java. Exempel : Ett program som skriver ut texten Hello, world

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

C konstruerades i början på sjuttiotalet av Dennis Ritchie vid Bell Laboratories.

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Strängar. Strängar (forts.)

Övning från förra gången: readword

Repetition C-programmering

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

6.1 Kompilering och lite grundläggande information

Introduktion C-programmering

TDIU01 - Programmering i C++, grundkurs

En kort text om programmering i C.

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

4 Sammansatta datatyper

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Omtentamen i Programmering C, Fri, Kväll,

Föreläsning 11. Strängar

Planering Programmering grundkurs HI1024 HT 2014

Enkla datatyper minne

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

Tentamen i Programmering grundkurs och Programmering C

Vad har vi lärt oss så här långt Vad är en sträng? Strängkonstanter. Att skriva ut och läsa in strängar. Att arbeta med strängar.

Tecken & Strängar. Kapitel 7

SMD 134 Objektorienterad programmering

Variabler använder man sig av för att under programkörningen spara data eller information i primärminnet. En variabel har typ, namn och värde.

Parameteröverföring. Exempel. Exempel. Metodkropp

Loopar och datatyper. Föreläsning 3

Tentamen i Programmering grundkurs och Programmering C

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Tentamen i Programmering grundkurs och Programmering C

#include <stdio.h> #include <string.h>

Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1. Tisdagen den 7 juni 2011,

Hantering av textsträngar och talsträngar. William Sandqvist

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

C-programmering, föreläsning 1 Jesper Wilhelmsson

Heltal(int) Programmeringsteknik 54

Objektorienterad Programmering (TDDC77)

Tentamen i. för D1 m fl, även distanskursen. lördag 19 januari 2013

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Programmering i C++ EDA623 Typer. EDA623 (Föreläsning 4) HT / 33

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Tentamen i Programmering C, Fri, Kväll,

EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Administration. EDAf30: Programmering i C++, 7.5 hp Obligatoriska moment

Tentamen i. Programmering i språket C

2 Pekare och dynamiska variabler.

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Tentamen i Programmering grundkurs och Programmering C

Innehållsförteckning. Exempel. Åtkomst & användarhandledning

Data, typ, selektion, iteration

Loopar och datatyper. Föreläsning 3

Innehåll. Relationer mellan klasser Operatoröverlagring. Static-medlemmar. Const- och referensmedlemmar. Const medlemsfunktioner

Klassdeklaration. Metoddeklaration. Parameteröverföring

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Typkonvertering. Java versus C

Poster ( structar ) Postdeklarationer

Planering Programmering grundkurs HI1024 HT TIDAA

F5: Högnivåprogrammering

Tentamen i Programmering grundkurs och Programmering C

Lathund. Pacific C för MS-DOS

F5: Högnivåprogrammering

Programmering A. Johan Eliasson

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Planering Programmering grundkurs HI1024 HT data

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

Programmering av inbyggda system 2014/2015

Föreläsning 3-4 Innehåll

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

Programmering för språkteknologer I, VT2012. Rum

1 Funktioner och procedurell abstraktion

TDDC77 Objektorienterad Programmering

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Innehåll. EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Viktiga skillnader mot Java

Objektorienterad programmering

Lösningar till uppgifterna sätts ut på kurssidan på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

C-programmering, föreläsning 2 Jesper Wilhelmsson

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Objektorienterad programmering Föreläsning 4

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

C++ - En introduktion

Innehåll. Typomvandlingar (casting) Implicita Typomvandlingar. Typomvandlingar (casting) Implicita Typomvandlingar

Exempel ( )

Föreläsning 13. In- och utmatning

Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe

Lösningar till uppgifterna sätts ut på kurssidan och på WebCT (Gamla Tentor) i dag kl 19. Tentamen i Programmering C, 5p, Distans, övriga,

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet

Variabler, värden och typer

Symboliska konstanter const

översiktskurs (5DV031)

Lämna in en ifylld kursvärdering tillsammans med tentan! Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl

Exempelsamling Assemblerprogrammering

Transkript:

Programmering i C Målsättning Introducera programmering i C för de som inte har någon erfarenhet av C eller C++. Litteratur Kernighan, Ritchie: The C Programming Language, Second edition, Steve Oualline: Practical C Programming eller Bilting, Skansholm: Vägen till C samt På nätet finns också http://www.howstuffworks.com/c.htm Vad är C? Utformades ursprungligen av Dennis Ritchie 1972 för implementering operativsystem och andra systemprogram Unix skrevs tidigt om i C Maskinnära men maskinobereoende Litet, ganska primitivt Likheter med språk som Pascal och Fortran Grund för C++ och Java ANSI-standard från 1989 ( ANSI-C ) Reviderad standard från 1999 ( C99 ) 1 2 Jämförelse med Java Inga klasser Samma satssyntax Minnesadresser (pekare) Ingen automatisk minnesåteranvändning Mindre strikt definierat Komipleras till maskinkod Exempel : Ett program som skriver ut texten Hello, world printf("hello, world\n"); Sämre felkontroll 3 4

for ( i=1; i<=10; i++) printf( "%d \t %d \t %d \n", i, i*i, i*i*i ); Kompilering och exekvering bellatrix$ ls squares.c bellatrix$ cat squares.c for ( i=1; i<=10; i++) printf( "%d \t %d \t %d \n", i, i*i, i*i*i ); bellatrix$ gcc squares.c bellatrix$ ls a.out* squares.c bellatrix$ a.out 1 1 1 2 4 8 3 9 27 4 16 64 5 25 125 6 36 216 7 49 343 8 64 512 9 81 729 10 100 1000 bellatrix$ 5 6 Läsa och skriva tecken Ett program som kopierar standard input till standard output /* Kopierar input till output */ int c; c = getchar(); while ( c!= EOF ) { putchar(c); c = getchar(); Ett program som kopierar standard input till standard output /* Kopierar input till output. Vers 2 */ int c; while ( (c = getchar())!= EOF ) putchar(c); 7 8

Ett program som räknar tecken och rader int c; int nchars = 0, nlines = 0; while ( (c = getchar())!= EOF ) { ++nchars; if ( c == \n ) ++nlines; printf( "Tecken: %d \nrader: %d \n", nchars, nlines ); Funktioner int cube(int x) { return x*x*x; int square(int x) { return x*x; for ( i=1; i<=10; i++) printf( "%d \t %d \t %d \n", i, square(i), cube(i) ); 9 10 Datatyper void skalära typer aritmetiska typer pekare heltalstyper char, short int, long int (ev. unsigned) flyttalstyper sammansatta typer float, double Heltalstyper Vanliga storlekar och talområden long int 4-2 31 till 2 31-1 short int 2-2 15 till 2 15-1 unsigned long int 4 0 till 2 32-1 unsigned short int 2 0 till 2 16-1 signed char 1-128 till 127 unsigned char 1 0 till 255 Typen int är normalt liktydigt med long eller short int (implementationsberoende) Typen char är vanligen liktydigt med unsigned char struct, array 11 12

Heltalskonstanter decimal form 3, 8, -255 oktal form 003, 010, -0377 Flyttalskonstanter Skrivs med decimalpunkt och/eller exponent -1.5,.26, 100., 0.57721566 1e10, 0.5e2, 1e-10 Teckentypen char Typen char är en heltalstyp och teckenkonstanter är ett sätt att skriva små heltal (dvs av typen char!) Man kan således "räkna" direkt med tecken: char toupper(char c) { /* Om c är en gemen så returneras motsvarande VERSAL */ if ( c>= a && c <= z ) return c + A - a ; else return c; 13 14 Biblioteket ctype.h Detta bibliotek innehåller representationsoberoende funktioner för att klassificera tecken: #include <ctype.h> int isalpha(int c); int isdigit(int c); int isalnum(int c); int isspace(int c); int isupper(int c); int islower(int c); int isprint(int c); int iscntrl(int c); int tolower(int c); int toupper(int c); Ex: Skriv ut en ascii-tabell char c; for ( c = ; c<127; c++ ) printf( "%d \t %c \n", c, c ); (Blanktecknet är det första tryckbara tecknet och ~ (126) det sista) Dessa funktioner kunde, med fördel, använts i flera av de ovanstående exemplen. 15 16

Alla variabler måste typdeklareras int i, j, k; float x, y; char c; short int p, q; unsigned short int r; unsigned char ch; int start = 0, stop = 10; char c=getchar(); Typkonverteringar Vid operander med olika typer sker automatiska konverteringar från "trängre" typer till "vidare" typer Tilldelningar från "vidare" typer till "trängre" typer kan ge varningar men är inte illegala Explicita typkonverteringar med casts : (typ) uttryck y = power( (float) i, n ); 17 18 In- och utmatning Funktionen printf för formaterad utmatning Funktionen scanf för formaterad inläsning. printf( formatsträng, värde, värde,... ) Några formatspecifikationer: %d Heltalsvärde %c Teckenvärde %f Flyttalsvärde %s Teckensträng %o Oktalt värde %x Hexadecimalt värde Specifikationerna förses med attribut för att specificera, fältbredd, antal decimaler, justering mm. float x; int n; printf("ge x och n: "); scanf("%f %d", &x, &n ); printf( "%f upphöjt till %d är %f", x, n, power(x,n) ); 19 20

Några fakta om funktioner Alla funktioner är på samma nivå dvs funktionsdefinitioner kan inte innehålla lokala funktioner En funktion har noll eller flera parametrar av godtycklig typ Vid anrop måste parametrarna överensstämma i ordning, antal och typ Viss automatisk typkonvertering kan dock ske. Parameteröverföringen sker enligt "call by value" (som ML) Funktioner kan returnera skalära värden och poster (struct) men ej arrayer Funktioner returnerar ett värde av typen int om inget annat sägs Lokala variabler dör vid return (om ej static) För att en funktion skall kunna anropas måste den vara "känd". Känd kan den bli genom en definition eller en deklaration: typ namn( parameterlista ); typ namn( void ); En funktion kan vara av typen void som anger att den inte returnerar något värde 21 22 Arrayer Deklareras med typ arraynamn[storlek] Elementen numreras 0, 1, 2... storlek-1 Storleken måste vara en konstant (behövs ej i C99-standarden) Alla element är av samma typ Indexoperatorn [] används för att adressera enskilda element /* Läs 100 positiva flyttal och skriv ut dem normerade */ float x[100], max=0; for ( i=0; i<=99; i++ ) { scanf( "%f", &x[i] ); if ( x[i] > max ) max = x[i]; for ( i=0; i<=99; i++ ) printf( "%f", x[i]/max ); 23 24

Teckensträngar Lagras i arrayer av char Sist lagras NULL-tecken Kan initieras i vid deklaration Kan inte flyttas med tilldelning eller jämföras med relationsoperatorerna string.h innehåller strängfunktioner Formatkoden %s till printf och scanf Exempel på strängfunktioner int strlen( char s[] ) { int n=0; while ( s[n]!= \0 ) n++; return n; (Den typiske C-hackaren skriver funktionen mer kompakt) 25 26 Biblioteket string.h Ett bibliotek med funktioner för hantering av strängar. Några av dessa är: int strlen (char s[]); void strcpy (char s1[], char s2[]); void strncpy(char s1[], char s2[], int n); void strcat (char s1[], char s2[]); void strncat(char s1[], char s2[], int n); int strcmp (char s1[], char s2[]); (Lite förenkling av parametertyper och returvärden...) 27