kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Informatik -- Lehrveranstaltung vom 15.05.2024

(EN google-translate)

(PL google-translate)

Themen

  1. Besprechung der Übungen 6.2 und 6.4
  2. Das UML Klassendiagramm
  3. Vererbung mit Java

1. Besprechung der Übungen 6.2 und 6.4

#include <iostream>
#include <math.h>
using namespace std;
int main(void)
{
   int arr[] = {3,1,7,2,8,3,6,5,9,1};
   int anzahl = sizeof(arr)/sizeof(int);
   int ziel[anzahl];

   for(int i=0;i<anzahl;i++)
   {
       //Suche das kleinste nicht durchgestrichene Element 
       //aus arr heraus:
       int y=-1; //Durchstreichen entspricht auf -1 setzen
       int index_arr=0; //wo wir das aktuell kleinste Element gefunden haben.
       //int index_ziel=0; //wo wir das Gefundene platzieren in ziel. => i
       for(int k=0;k<anzahl;k++)
       {
           //"Das Array-Element, auf das ich gerade schaue ist kleiner
           //als das zuletzt gefundene, oder es wurde noch keines gemerkt UND
           //das Array-Element, auf das ich gerade schaue ist nicht durchgestrichen."
           if( (arr[k]<y || y==-1) && arr[k]!=-1)
           {
               y = arr[k];
               index_arr=k;
           }
       }        
       //Nach Durchlauf der inneren Schleife steht in y das kleinste nicht durchgestrichene 
       //Element.
       ziel[i] = arr[index_arr]; //merken
       arr[index_arr] = -1; //durchstreichen
   }

   for(int i=0;i<anzahl;i++)
   {
       cout<<ziel[i]<<",";
   }
   cout<<endl;

   return 0;
}

Code 0-1: Musterlösung 6.2

#include <iostream>
#include <math.h>
using namespace std;

void sortieren(int ziel[],int arr[], int anzahl)
{
   for(int i=0;i<anzahl;i++)
   {
       int y=-1; 
       int index_arr=0; 
       for(int k=0;k<anzahl;k++)
       {
           if( (arr[k]<y || y==-1) && arr[k]!=-1)
           {
               y = arr[k];
               index_arr=k;
           }
       }        
       ziel[i] = arr[index_arr]; //merken
       arr[index_arr] = -1; //durchstreichen
   }
}

int main(void)
{
   int arr[] = {3,1,7,2,8,3,6,5,9,1};
   int anzahl = sizeof(arr)/sizeof(int);
   int ziel[anzahl];

   sortieren(ziel,arr,anzahl);

   for(int i=0;i<anzahl;i++)
   {
       cout<<ziel[i]<<",";
   }
   cout<<endl;

   return 0;
}

Code 0-2: Musterlösung 6.2 mit Funktion

Übung 6.4
public class Widerstand
{
    int R;
    public Widerstand(int r)
    {
         R=r;
    }
    
    public void draw(float x, float y)
    {
         fill(127);
         rect(x,y,200,60);
    }
}
Widerstand R1,R2,R3;
public void setup()
{
     R1 = new Widerstand(10000);
     R2 = new Widerstand(470);
     R3 = new Widerstand(220);
     println("R1="+R1.R+" R2="+R2.R+" R3="+R3.R);
     size(640,480);
}

public void draw()
{
     background(255);
     
     R1.draw(20,20);
     R2.draw(20,120);
     R3.draw(20,220);
     
}

Code 0-3: Projektstand 1: Widerstände als graue Kästen sichtbar.

public class Widerstand
{
    private int[][] code = {
         {0,0,0}, //0 schwarz
         {238,59,59}, //1 braun
         {255,0,0}, //2 rot
         {255,165,0}, //3 orange
         {255,255,0}, //4 gelb
         {0,255,0}, //5 grün
         {0,0,255}, //6 blau
         {255,0,255}, //7 lila
         {80,80,80}, //8 grau
         {180,180,180} //9 weiss
    };
  
  
    int R;
    public Widerstand(int r)
    {
         R=r;
    }
    
    public void draw(float x, float y)
    {
         fill(127);
         rect(x,y,200,60);
         
         //Streifen zeichnen:
         int s1=0,s2=0,s3=0;
         int RR=R;
         while(RR>=100)
         {
              RR/=10;
              s3++;
         }
         s2=RR%10;
         s1=RR/10;

         fill(code[s1][0],code[s1][1],code[s1][2]);
         rect(x+50,y,20,60);
         fill(code[s2][0],code[s2][1],code[s2][2]);
         rect(x+100,y,20,60);
         fill(code[s3][0],code[s3][1],code[s3][2]);
         rect(x+150,y,20,60);
    }
}
Widerstand R1,R2,R3;
public void setup()
{
     R1 = new Widerstand(10000);
     R2 = new Widerstand(470);
     R3 = new Widerstand(220);
     println("R1="+R1.R+" R2="+R2.R+" R3="+R3.R);
     size(640,480);
}

public void draw()
{
     background(255);
     
     R1.draw(20,20);
     R2.draw(20,120);
     R3.draw(20,220);
     
}

Code 0-4: Musterlösung 6.4

Screenshot zu obigem Programm.

Bild 0-1: Screenshot zu obigem Programm.

2. Das UML Klassendiagramm

30_Informatik3/02_UML/02_UML_Klassendiagramm

3. Vererbung mit Java

UML-Klassendiagramm zur Verdeutlichung der Vererbungsstruktur bei den Klassen Vektor und VektorB.

Bild 0-2: UML-Klassendiagramm zur Verdeutlichung der Vererbungsstruktur bei den Klassen Vektor und VektorB.