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

Introduktion till algoritmer - Lektion 3 Matematikgymnasiet, Läsåret Lektion 3

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

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap

TDDC76 - Programmering och Datastrukturer

Funktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare

Ö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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor

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å

Programmeringsteknik för Ingenjörer VT06. Föreläsning 10

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:

Introduktionslaboration

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

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

DSV A Procedurell programmering 5 poäng Tentamen

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