Skizz till en enkel databas



Relevanta dokument
Enkla datatyper minne

4 Sammansatta datatyper

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

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4

Övningar Dag 2 En första klass

Introduktion till arv

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

SMD 134 Objektorienterad programmering

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

Att använda pekare i. C-kod

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

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,

Tecken. char. char ch = A ; sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char namn[]= "Nils"; // längd = 5 bytes

Pekare. Pekare. Varför använder vi pekare? Vad är en pekare? Pekare. Deklaration/initiering av pekare

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs

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

TDIU01 - Programmering i C++, grundkurs

C++ - En introduktion

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

TDDC76 - Programmering och Datastrukturer

C++ Slumptalsfunktioner + switch-satsen

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

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Föreläsning 6: Introduktion av listor

TDDC76 - Programmering och Datastrukturer

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

Tentamen i Programmering grundkurs och Programmering C

Programmering A. Johan Eliasson

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

Grundläggande programmering med C# 7,5 högskolepoäng

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

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

Objektorienterad programmering i Java

TDIU01 - Programmering i C++, grundkurs

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

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

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

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

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:

1 Funktioner och procedurell abstraktion

OOP Omtenta

Tommy Färnqvist, IDA, Linköpings universitet

OOP Objekt-orienterad programmering

Klasser. Det är egentligen nu som kursen i programmeringsteknik börjar..., s k objektorienterad programmering.

Innehåll. Pekare Exempel

En villkorssats är den konstruktion som finns i C++ för att göra en selektion av två alternativa sekvenser. Formen för if satsen är

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010

En kort text om programmering i C.

C++ Objektorientering - Klasser. Eric Elfving

Föreläsning 10. ADT:er och datastrukturer

struct egendefinierad typ struct LECTURE_TYPE { char teacher[99]; float lengthinminutes; char type; /* L = lecture, E = exercise */ };

Programmeringsteknik med C och Matlab

FÖRSLAG TILL LÖSNING AV Tentamen i Objektorienterad programmering C++ I

C++ - En introduktion

Tentamen OOP

Exempelsamling Assemblerprogrammering

Effektpedal för elgitarr

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:

Föreläsning 10. Pekare (Pointers)

Föreläsning 2: Avlusning och antilustekniker

Föreläsning 3: Booleans, if, switch

TDIU01 - Programmering i C++, grundkurs

För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print.

Sätt att skriva ut binärträd

Kap 6: Lista, stack och kö

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

DELPROV 1 I DATAVETENSKAP

"if"-satsen. Inledande programmering med C# (1DV402)

SORTERING OCH SÖKNING

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

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

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

TDIU01 - Programmering i C++, grundkurs

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

Tentaupplägg denna gång

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Planering Programmering grundkurs HI1024 HT 2014

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

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

OOP Objekt-orienterad programmering

F4. programmeringsteknik och Matlab

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

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

( ostream ) << ( annan datatyp ) : ostream

Funktionens deklaration

Transkript:

Skizz till en enkel databas Data: Register En vektor Funktioner: Databas Initiera huvudloop Avsluta Poster (struct( struct) val Mata in Skriv ut Spara Hämta Ändra Radera Enligt diskussion 1999-11-23 Bertil Gralvik, KTH Ingenjörsskolan 1

Datastruktur Vi behöver dataobjekt för att hålla samman poster med uppgifter som Namn Gatuadress Postnummer Ort Telefonnummer e-postadress Lämpligen en egen datatyp struct 1999-11-23 Bertil Gralvik, KTH Ingenjörsskolan 2

Datastruktur // Förslag till datatyp för poster struct Person{ char enamn [20]; char fnamn [20]; char gata [20]; char postnr [7]; char ort [15]; char telefon[12]; char e-post [20]; ; // Deklaration av ett dataobjekt Person kompis; // fungerar som egen datatyp 1999-11-23 Bertil Gralvik, KTH Ingenjörsskolan 3

Test av Person Person lasinpost(){ Lokal post Person inpost; cout << "Skriv in data för en kompis!\n"; cout << "Förnamn :"; getline(inpost.fnamn,, 20); // --------- osv... cout << "Ort :"; getline(inpost.ort, 15); cout << "E-post :"; getline(inpost.epost,20); return inpost; Returneras 1999-11-23 Bertil Gralvik, KTH Ingenjörsskolan 4

Struct och funktioner En struct är en egendefinierad datatyp En struct kan skickas som argument void skrivut( ( Person p ); En struct kan returneras från en funktion Person lasin(); Data som lagrats i en struct transporteras via stacken på samma sätt som enkla datatyper. Persontest.cpp 1999-11-23 Bertil Gralvik, KTH Ingenjörsskolan 5

Struct och funktioner Ofta lämpligt att skicka med en pekare till en struct // Person deklareras här ovan :) // Deklaration av funktionen fyllpa void fyllpa( ( Person* p ); void main( void ){ Person kotte; fyllpa( ( &kotte ); // Definition av funktionen fyllpa void fyllpa( ( Person* p ){ Skicka adressen 1999-11-23 Bertil Gralvik, KTH Ingenjörsskolan 6

Att komma åt element Vanlig åtkomst med punktnotation Person kotte; cin >> kotte.fnamn fnamn; Åtkomst via pekare Person *pek* = &kotte; cin >> (*pek pek). ).enamn; cout << (*pek pek). ).fnamn; Parentesen behövs för att. har högre prioritet än * Förenklat skrivsätt för struct-typer cin >> pek-> ->fnamn; Persontest2.cpp 1999-11-23 Bertil Gralvik, KTH Ingenjörsskolan 7

Att komma åt element // Förenklad notation för pekare till struct void fyllpa(person* inpost){ cout << "Skriv in data för en kompis!\n"; cout << "Förnamn :"; getline(inpost-> ->fnamn,, 20); cout << "Efternamn :"; getline(inpost-> ->enamn,20); cout << "Gatuadress :"; getline(inpost->gata, 20); // ----- > osv.. Persontest3.cpp 1999-11-23 Bertil Gralvik, KTH Ingenjörsskolan 8

Flera poster En databas med flera poster kan vara en array const int MAX_ANTAL = 10000; Person dbase[ [ MAX_ANTAL ]; // Mata in data från tangentbordet matain (dbase); // Skriv ut data till skärmen skrivut(dbase dbase); // osv 1999-11-23 Bertil Gralvik, KTH Ingenjörsskolan 9

Flera poster Inmatning av flera poster matain(person* lista, int n){ Person* pek = lista; for (int i = 0; i < n; i++){ fyllpa( pek ); pek++; Lokal pekare för stegning Fyll på en i taget Alla funktioner som behandlar poster fungerar likadant När ska man sluta? Persontest4.cpp 1999-11-23 Bertil Gralvik, KTH Ingenjörsskolan 10

Databasen - möjlig metod Skapa datastruktur och alla funktioner Fyll en funktion i taget med innehåll Databas Sekvens Initiera huvudloop Avsluta val Iteration Selektion Mata in Skriv ut Spara Hämta Ändra Radera 1999-11-23 Bertil Gralvik, KTH Ingenjörsskolan 11

Databasen - pseudokod Databas initiera loopa [ do... ] välj aktivitet utför vald aktivitet [ switch (val) ] så länge val < > sluta avsluta programmet Slut på databas 1999-11-23 Bertil Gralvik, KTH Ingenjörsskolan 12

Databasen - ett skelett Vi behöver initiering - för variabler - berätta vad programmet gör huvudloopen - ger valmöjlighet - händelsestyrning avslutningen - sköter eventuell städning Samt funktionerna matain case M skrivut case U spara case S hamta case H andra case D radera case R avsluta case A 1999-11-23 Bertil Gralvik, KTH Ingenjörsskolan 13

Databasen - loopen // Huvudloop char val; do { // minst en gång visameny(); cin >> val; switch(val){ case M : matain(); case U : skrivut(); case A : // Avsluta programmmet default: cout << Valet finns inte ; while(val!= A ); Skelett.cpp 1999-11-23 Bertil Gralvik, KTH Ingenjörsskolan 14

Händelsstyrning En loop som körs minst en gång do { //välj while( ( <villkor< villkor> > ); Inmatning från användaren avgör vilken kod som körs Villkoret måste ändras i loopen cin >> val; val = toupper(val); Urval av kod görs med switch-sats switch(val){ case S : spara();break; case : // något annat Felaktig inmatning måste tas omhand i loopen default: cout << Felaktigt val. Försök igen! 1999-11-23 Bertil Gralvik, KTH Ingenjörsskolan 15

En tvåstegsprocess Databasen - inmatning // Inmatning av ett antal poster void matain(person* l, int n){ Person* pek = l; for (int i = 0; i < n; i++){ fyllpa(pek pek); pek ++; 1999-11-23 Bertil Gralvik, KTH Ingenjörsskolan 16

Databasen - inmatning Inmatning till en av posterna void fyllpa(person* inpost){ cout << "\nskriv in data för en kompis!\n"; cout << "Förnamn :"; getline(inpost-> ->fnamn,, 20); cout << "Efternamn :"; getline(inpost-> ->enamn,20); cout << "E-post :"; getline(inpost-> ->epost,20); 1999-11-23 Bertil Gralvik, KTH Ingenjörsskolan 17