Tillämpad programmering

Relevanta dokument
Det finns många flaggor till g++,

grundläggande C++, funktioner m.m.

Programsystemkonstruktion med C++

En klass behöver både deklaration och definition. Daniel Aarno Globala funktioner och variabler är OK.

Ett enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << "Hello World\n"; return 0; } C++, Övning 1

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010

Första exemplet. Kompilator & länkare. Projekt. Övning 1, Ögrupp 4, Programsystemkonstruktion med C++, Ronnie Johansson,

TDIU01 - Programmering i C++, grundkurs

Recap Mera om nya typer Kort Fält. Programmering. Sommarkurs Verónica Gaspes. IDE-sektionen.

Hur man kompilerar och kör IT++-program med MinGW. 1 Sammanfattning. 2 Om dokumentet. 3 Om min konfiguration

Linux i Inbyggda System, 7.5hp Linux Cross Toolchain. Cross Development Toolchain binutil, glibc and gcc

TDIU01 - Programmering i C++, grundkurs

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

Föreläsning 3. Programmering, C och programmeringsmiljö

Avslutning. Kapitel Komprimering av filer

Innehåll. Pekaren this Självreferens. Klasser Resurshantering, representation. Överlagring av operatorer. Överlagring av operatorer

Övning 3 i 2D1324. Strukturering h filer deklaration vs definition Debuggning gdb Preprocessorn #define assert(s) FILE LINE Länkning

Algoritmbiblioteket (STL) Designstrategi Generiska algoritmer som fungerar på godtyckliga samlingsdatatyper, vilka har iteratorer.

Repetition C-programmering

Information Coding / Computer Graphics, ISY, LiTH CUDA. En lösning för generella beräkningar. En introduktion: Programmingsmodell och språk

TDIU01 - Programmering i C++, grundkurs

TDIU01 Programmering i C++

Exempelsamling Assemblerprogrammering

Kompilera och exekvera Javakod

TDIU01 - Programmering i C++, grundkurs

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser

Taking Flight! Migrating to SAS 9.2!

Generell (template) programmering. Effektiv C++ Slutliga tips Genomgång av gammal tenta. Daniel Aarno Allt som fungerar som x ÄR x

Installation av F13 Bråvalla

TDIU20 - Objektorienterad programmering i c++ - föreläsning 4

Programmering i C++ Kompilering från kommandoraden

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

1. Unpack content of zip-file to temporary folder and double click Setup

Tentamen EDAF30 Programmering i C++

FÖRBERED UNDERLAG FÖR BEDÖMNING SÅ HÄR

TDIU01 - Programmering i C++, grundkurs

Introduktionslaboration

Tillämpad programmering

Swedbank Mobile Loadtesting. LoadRunner Mobile App protocol

Tentamen EDAF30 Programmering i C++

Funktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare

Enkla datatyper minne

Datorlaboration 0, Programmering i C++ (EDAF30)

Din egen webserver med Apache

Introduktionslaboration

Datorlaboration 0, Programmering i C++ (EDA623)

InstalationGuide. English. MODEL:150NHighGain/30NMiniUSBAdapter

int (*fp) (char, char*) //pekare till funktion som tar //argumenten (char, char*) och //returnerar int

Pekare och arrayer. Indexering och avreferering

Programsystemkonstruktion med C++

Introduktion C-programmering

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I

Ulf Assarsson. Grundläggande C-programmering del 2 Pekare och Arrayer. Läromoment:

TDIU01 - Datortenta (DAT2)

Programsystem konstruktion med C++ (2D1387) Innehåll. övning 2 klasser och arv

Filformat och lagring

Programmering av inbyggda system. Pekare och Arrayer. Viktor Kämpe

TDP005, Projekt: Objektorienterade System. Laboration: Eclipse

Del3 Klassanvändning, operatorer och pekare Ämnesområden denna föreläsning:

Innehåll. 1 Funktionsmalllar. 2 Klassmallar. struct Name { string s; //... }; const Name & minimum ( const Name & a, const Name & b) { if(a.s < b.

Programmeringsteknik med C och Matlab

Ulf Assarsson. Grundläggande C-programmering del 3. Läromoment: Grundläggande C-programmering del 3

tentamensdags och lab 3

prog: prog.c gcc -g -Wall prog.c /usr/local/bib/c/58an/modules/modul.o -o prog

2D1387 Programsystemkonstruktion med C++ Laboration 1: Grundläggande C++ 31 augusti 2005

Isolda Purchase - EDI

Reguljära uttryck. Reguljära uttryck. Nu kommer en siffra78 och en till SIFFRA(78) men utan 7kstuga SIFFRA(89)

Utkast. Programmering. Signals. Olika typer av program. Sommarkurs Avbrott i mjukvara.

Tillämpad programmering

printenv sort pager printenv grep args sort pager

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Collections Collections "Envisa" objekt Klasserna Bofstream och Bifstream Definition av metoder i klasserna Bifstream och Bofstream Klassen Streng

Innehåll. 1 Typdeklarationer och typomvandling 2 Resurshantering. 3 Objektorientering, kort repetition. 4 Klasser

Fö 2 TSEA81 Datorteknik och realtidssystem

Programmering av inbyggda system. Pekare och Arrayer. Ulf Assarsson. Originalslides av Viktor Kämpe

Innehåll. Exceptionella händelser (exceptions, undantag ) Felhantering Tre nivåer av felhantering: Nivå 2: exceptions (eller returvärde)

Innehåll. Användardefinierade typer. Användardefinierade typer Kategorier. Konstruktorer. Konstruktorer Två sätt att skriva initiering av medlemmar

Innehåll. Resurshantering. Resource handles. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 6. Resurshantering

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Dagens föreläsning. Specialtecken. Mer om printf. Formateringssträngar. Mer om scanf. Programmeringsteknik för Ingenjörer VT05

TDP005 Projekt: Objektorienterat system

Tellstick-15.c. Kompilering av programmet: gcc -o tellstick-15 -Wall -ltelldus-core -W -O2 -s -pipe -lm tellstick-15.c

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

TDP005. Föreläsning 2. Filip Strömbäck

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

RADIATION TEST REPORT. GAMMA: 30.45k, 59.05k, 118.8k/TM1019 Condition D

maxlist-1. Indexerad lista Länkad lista

C++ Objektorientering - Klasser. Eric Elfving

Det objektorienterade synsättet. Objekt. Datorprogrammet kan uppfattas som en slags modell av den verklighet programmet skall samverka med.

IMPORTANT! RETAIN FOR FUTURE REFERENCE PLEASE READ CAREFULLY VIKTIGT! BEHÅLL FÖR FRAMTIDA REFERENS LÄS IGENOM INSTRUKTIONSMANUALEN

Raspberry Pi och Tellstick, ett program i C.

D-285 r0. Installationsanvisning för ServiceTool

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

Annonsformat desktop. Startsida / områdesstartsidor. Artikel/nyhets-sidor. 1. Toppbanner, format 1050x180 pxl. Format 1060x180 px + 250x240 pxl.

Innehåll. Pekare Exempel

Kapitel 11. Program Att köra program Skript Interpreterande och kompilerande programspråk Att kompilera program

Innehåll. Parametriserade typer. Klassmallar. Klassmallen Vektor Konstructor med std::initializer_list. Klassmallen Vektor Medlemsfunktioner

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

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

Transkript:

Tillämpad programmering C++ make, configure och arrayer Johan Montelius 1

C++ sndcopy.cc #include <stdio> #include sndreader.h #incldue sndwrite.h int main(int argc, char *argv[]) { 2

C++ sndreader.h #include <iostream> // Import a C header file extern "C" { #include <sndfile.h> } #ifndef SNDREADER_H #define SNDREADER_H 3

C++ sndfile.h enum { /* Major formats. */ SF_FORMAT_WAV = 0x010000, /* Microsoft WAV format (little endian default). */ SF_FORMAT_AIFF = 0x020000, /* Apple/SGI AIFF format (big endian). */ SF_FORMAT_AU = 0x030000, /* Sun/NeXT AU format (big endian). */ SF_FORMAT_RAW = 0x040000, /* RAW PCM data. */ 4

C++ sndfile.h struct SF_INFO { sf_count_t frames ; /* Used to be called...samples. */ int samplerate ; int channels ; int format ; int sections ; int seekable ; }; typedef struct SF_INFO SF_INFO ; 5

C++ sndfile.h SNDFILE* sf_open (const char *path,int mode,sf_info *sfinfo); 6

g++ sndfile.h sndcopy.h sndcopy.cc libsndfile.so 7

kompilera och länka g++ -o ut-fil -c enbart kompilering -E enbart förbehandling -I sökväg för header -L sökväg för bibliotek -l bibliotek källkodsfil 8

libsndfile-1.0.25.tar >tar -xvf ibsndfile-1.0.25.tar libsndfile-1.0.25/ libsndfile-1.0.25/news libsndfile-1.0.25/m4/ 9

libsndfile-1.0.25 >ls AUTHORS COPYING INSTALL README 10

README LINUX ----- Whereever possible, you should use the packages supplied by your Linux distribution. If you really do need to compile from source it should be as easy as./configure make make install 11

INSTALL The simplest way to compile this package is 1. `cd' to the directory containing the package's source code and type `./configure' 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 12

INSTALL By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=path'. 13

/configure >./configure --prefix=/home/user/tmp checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/instal checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk 14

libsndfile-1.0.25 >ls Makefile 15

make >make make[2] Entering directory../src CC sndfile.lo CC aiff.lo CC au.lo 16

make install >make install Libraries have been installed in /home/user/tmp/lib 17

/home/user/tmp /home/user/tmp/ bin include/ sndfile.h lib/ libsndfile.so libsndfile-1.0.25 share 18

2-1.zip >wget https//... 2-1.zip >unzip 2-1.zip >ls 2-1 Makefile sndcopy.cc sndreader.h sndwriter.h wavfiles 19

Makefile CXX = g++ CXXFLAGS = -g LDFLAGS = -L/usr/local/lib \ -lsndfile 20

Makefile CXX = g++ CXXFLAGS = -g -I/home/user/tmp/include LDFLAGS = -L/usr/local/lib \ -L/home/user/tmp/lib \ -lsndfile 21

Makefile # # Programs to be created... # PROGSRC = sndcopy.cc PROGEXE = $(PROGSRC%.cc=%.exe) all $(PROGEXE) 22

Makefile %.exe %.cc sndreader.h sndwriter.h $(CXX) $(CXXFLAGS) $< -o $@ $(LDFLAGS) g++ -g -I/home/user/tmp/include \ sndcopy.cc \ -o sndcopy.exe \ -L/usr/local/lib \ -L/home/user/tmp/lib 23

att bygga configure söker efter rätta verktyg skapar en Makefile som är skräddarsydd make håller rätt på beroende kompilerar endast det som är nödvändigt kompilering förbehanding (preprocessor) kompilering länkning 24

primitiva arrayer (C) int a[4]; int b[] = {1,2,3,4}; double c[100]; long d[10][10]; 25

char a[] char a[5]; char b[] = {'H', 'e', 'l', 'l', 'o'}; char c[] = Hello ; cout << a << endl; cout << b << endl; cout << c << endl; 26

som argument void foo(int (& a)[10]) { a är en array } void bar(int (*a)[10]) { a är en pekare till en array } 27

inte så bra void zot(int a[]) { a är en pekare till första elementet i en array av okänd storlek } void grk(int *a) { a är en int pekare } void baz(int a[10]) { a är en pekare till första elementet i en array av storlek 10 } 28

new int[n] int n = 10; int *a = new int a[n]; zot(a, n); 29

array<type, Size> typedef array<int,10> MyArray; int main() { MyArray *arr = new MyArray; foo(arr); } 30

array<type, Size> void foo(myarray *a) { int size = (a*).size() MyArrayiterator begin = (a*).begin(); MyArrayiterator end = (a*).end(); MyArrayiterator p; } for(p = begin, p!= end, p++) { cout << *p << endl; } 31

vector<type> typedef vector<int> MyVector; int main() { MyVector *vec = new MyVector; (*vec).push_back(10); (*vec).push_back(11); (*vec).push_back(12); (*vec).push_back(13); } foo(vec); 32

array<type, Size> void foo(myvector *v) { int size = (v*).size() } for(int i = 0; i < size; i++) { cout << (*v)[i] << endl; } 33

tumregler förstå c arrayer använd vector 34