ohjelmoinnin perusteet


Funktiot ja niiden perusrakenteet
http://dy.fi/81b


SIMPPELI OHJELMA



#include <stdio.h>

int main(void){
  printf("Moi maailma!");
  return 0;
}

funktiot

Samankaltaisia kuin matematiikan funktiot niiltä osin, että 
 
funktio voi ottaa parametreja, ja 
funktiolla on tulos (funktio palauttaa arvon).
 
y=f( x)
y= x²
 
int potenssiinKaksi(int x){
    int y=x*x;
    return y;
} 

funktiot 2


Ohjelmointikielen funktiot voivat
  • ottaa parametriksi ja
  • tuottaa tulokseksi (palauttaa)

minkä tahansa muotoista tietoa.

Funktion kutsuminen aiheuttaa
suorituksen haarautumisen.

funktiot 3

Parametrien nimien ei täydy olla samoja prototyypin

  • esittelyssä
  • toteutuksessa
  • tai kutsuvassa funkotiossa


...mutta tietotyyppien täytyy olla samat

summa(int x,int y) on sama kuin
summa(int a, int b)

mutta eri kuin summa(int x, float y)   .


(Mikko Vuorinen, Ohjelmoinnin perusteet, Metropolia 2011)

funktiot 4

 C:ssä funktiolle välitetään parametrit aina arvoina!
Eli funktioita kutsuttaessa parametrien arvot kopioidaan funktion parametreihin.


-> Jos muuttujan arvoa muuttaa funktiossa, se ei automaattisesti näy alkuperäisessä muuttujassa, joka on annettu parametriksi


funktiot 5

(Mikko Vuorinen, Ohjelmoinnin perusteet, Metropolia 2011)

 

#include "stdio.h"
void multiplyByThree(int n);

int main(void){
   int number=3;
   printf("%d",number);
   printf("\n");

   multiplyByThree(number);

   printf("%d",number);
   printf("\n");
 } 

void multiplyByThree(int number){
   number = number * 3;
}
#include "stdio.h"

int multiplyByThree(int n);

int main(void){
   int number=3;
   printf("%d",number);
   printf("\n");

   number=multiplyByThree(number);

   printf("%d",number);
   printf("\n");
 }

int multiplyByThree(int number){
   number = number * 3;
   return number;
}

Funktiot: arvon palautus

PERUSRAKENTEET 

( KIELEN SYNTAKSI +  VARATUT SANAT)

# include  < stdio.h > 

int  main ( void ){ 
 

} 

perusrakenteet 

( kielen syntaksi + varatut sanat)

# include < stdio.h >

int main ( void ){
  printf ("Moi maailma! ");
  return 0 ;
}

OMAN FUNKTION MÄÄRITTELY



#include <stdio.h>

int main( void){ // "void" tarkoittaa: tyhjä, ei parametrejä
  

}

funktion sisältö aaltosulkuihin



#include <stdio.h>

int main(void) {
  printf( "Moi maailma!" );
 
return 0;
}

VALMIIN FUNKTION KUTSUMINEN

 
#include <stdio.h>
// otetaan käyttöön  standard io -funktiot
int main(void){
  printf( "Moi maailma!" );
   return 0;
}
void  printf ( char* text ){
// ... komennot  näytölle tulostamiseen ...
}

funktion suorituksen loppu



#include <stdio.h>

int main(void){
  printf("Moi maailma!");
  return 0;   // koska funktion tyyppi yllä on int, palautettava kokonaisluku
}

kehittyneempi ohjelma



                                                #include 
                                                    
/* Tämä on hieno ohjelma*/

int main(void){
  int luku = 0;
  printf("Moi maailma!");
  scanf("%d", &luku);
  printf("Luku oli: %d\n",luku);
  return 0;
} 
                                                
                                            

muuttujan määrittely



                                                #include 
                                                    
/* Tämä on hieno ohjelma*/

int main(void){

                                                        
                                                              int luku = 0;

                                                          printf("Moi maailma!");
  scanf("%d", &luku);
  printf("Luku oli: %d\n",luku);
  return 0;
} 
                                                    
                                                
                                            

muuttujat?


Löyhä sukulaisuussuhde matematiikan muuttujiin

x = 5
x = 5 + 2

C/C++:ssa muuttujat määriteltävä ennen käyttöä
                                        
                                            
                                                
                                                    int luku = 5;
                                                    bool kyllaTaiEi = true; // arvo: true / false
double desimaaliluku = 5.5; // liukuluku

                                                    char* teksti = "Moi maailma!";
QString teksti = "Moi tietokone."; 
                                                
                                            
                                        
                                    

luvun kysyminen



                                                #include <stdio.h>
/* Tämä on hieno ohjelma*/

int main(void){
  int luku;
  printf("Moi maailma!");

                                                      scanf("%d", &luku);
  printf("Luku oli: %d\n",luku);
  return 0;
} 
                                                
                                            
                                            



funktiot, joilla on monta parametria


Luetaan käyttäjän kirjoittama arvo scanf():llä

scanf()-funktio toimii seuraavasti:


                                        
                                              scanf("%d", &luku);
                                        
                                    

1. parametri määrittää että luetaan kokonaisluku,
2. parametri kertoo mihin muuttujaan luku tallennetaan


(Parametrit erotetaan pilkulla.)

scanf: taas yksi funktio

Scanf-funktion runko voisi näyttää esimerkiksi tältä:


                                    
                                        void scanf(char* format, int* value1){
    //funktion runko

} 
                                    
                                

muuttujan arvo näytölle



                                                #include 
                                                    
/* Tämä on hieno ohjelma*/

int main(void){
  int luku;
  printf("Moi maailma!");
  scanf("%d", &luku);

                                                          printf("Luku oli: %d\n",luku);
  return 0;
} 
                                                    
                                                
                                            

valinnaiset parametrit


Jotkut funktiot voivat ottaa yhden tai monta parametria


                                          printf("Moi maailma!");
                                    

                                          printf(
                                            "Luku oli: %d\n",
                                            luku);
                                        
                                    


ohjelmoinnin peruskäsitteet - funktiot

By Olli Savolainen

ohjelmoinnin peruskäsitteet - funktiot

  • 2,524