Sie sind auf Seite 1von 12

MINISTRIO DA EDUCAO UNIVERSIDADE FEDERAL DOS VALES DO JEQUITINHONHA E MUCURI TEFILO OTONI MINAS GERAIS BACHARELADO EM CINCIA E TECNOLOGIA

A www.ufvjm.edu.br

Comandos break
O comando break pode ser usado no corpo de qualquer estrutura de lao. Causando a sada imediata do lao e o controle passa para o prximo estgio do programa. Se o comando break estiver em estruturas de laos internos (um lao dentro de outro), o comando break s afetar somente o lao que o contm.
main(){ int i; main(){ int i, j; for(i = 0; i < 10; i++){ for(j=0; j < 10;j++){ if (j == 2) break; printf(J = %d,j); } priintf(I = %d,i); } }

Professor: Ciro Meneses Santos

Programao de Computadores

for(i = 0; i < 10; i++){ if (i == 3) break; printf(%d,i); }


1

Comando switch
O comando switch similar ao else-if mas tem maior flexibilidade e utilizado quando o programa necessita escolher uma entre vrias alternativas.

Estrutura de um programa
#include <stdio.h> //arquivo de cabealho int x; // declarao de varivel main() { // L um nmero e imprime o dia da semana entre [1 e 7]);

switch ( expressao const ){ case const1 : instrucoes; break case const2 : instrucoes; break case const3 : instrucoes; break default: instrucoes }
}
3

printf(digite um numero scanf(%d,&x); switch( x ) { case 1 : printf(\n case 2 : printf(\n case 3 : printf(\n case 4 : printf(\n case 5 : printf(\n case 6 : printf(\n case 7 : printf(\n default : printf(\n }

Domingo); Segunda); Tera-feira); Quarta-feira); Quinta-feira); Sexta-feira); Sabado); Inteiro fora do

break; break; break; break; break; break; break; intervalo);

Comando ternrio
O Operador condicional ternrio uma maneira compacta de expressar uma simples instruo ifelse. Este operador consiste em dois operadores separando a expresso toda em trs diferentes expresses. var = (condicao) ? exp1 : exp2; max = (num1 > num2) ? num1 : num2; if ( num1 > num2) max = num1; else max = num2;
5

Estrutura de um programa
#include <stdio.h> //arquivo de cabealho

main() {

// L 2 num e imprime o maior. // declarao de varivel

int x, y, ret;

printf(digite dois numeros); scanf(%d %d,&x, &y); r = (a > b ) ? a : b ; printf(Max = %d,r); }


6

Estrutura de um programa
#include <stdio.h> //arquivo de cabealho

O Lao do - while
O lao dowhile cria um ciclo repetitivo at que a expresso de teste seja falsa (zero). A diferena entre o lao while e do-while que o teste de condio avaliado depois do lao ser executado. Assim o lao do-while sempre executado pelo menos uma vez. do { instruo; }while(expressao de testo);

main() { // L 2 num e imprime o maior. int x, y, ret; // declarao de varivel printf(digite dois numeros); scanf(%d %d,&x, &y); if ( x > y ) { ret = x; } else{ ret = y ; } printf(Max = %d,ret); }
7

Estrutura de um programa
#include <stdio.h> //arquivo de cabealho int soma(){ printf(Funo de soma: ); } main() { // Menu com lao do while e switch com 4 opes int a, b, ret; // declarao de varivel float retd; do { printf(\n Selecione uma das opes); printf(\n 1 - Soma); printf(\n 2 - Subtrao); printf(\n 3 - Multiplicao); printf(\n 4 Diviso); printf(\n 0 - Sair); scanf(%d,&x); switch( x ) { // case ... contedo do switch } }while(x != 0 ); }
9

SubSub-rotinas / Funes
Uma sub-rotina ou funo , na verdade, um programa, e sendo um programa poder efetuar diversas operaes computacionais (entrada, processamento e sada). As sub-rotinas so utilizadas na modularizao de um determinado problema, podendo ser utilizado quantas vezes forem necessrio. O uso de sub-rotina permite ao programador elaborar rotinas exclusivas. Por exemplo, para entrada, processamento e sada de dados.
10

Variveis Globais e Locais


Uma varivel considerada Global quando declarada no inicio do programa, podendo ser utilizada por qualquer sub-rotina e funo principal. Este tipo de varivel passa a ser visvel a todas as sub-rotinas e a funo principal. Uma varivel considerada Local quando declarada dentro de uma sub-rotina e somente vlida dentro da rotina qual est declarada. Desta forma, as demais sub-rotinas e a funo principal no podero fazer uso daquelas variveis.
11

SubSub-rotinas / Funes

Sub-rotina 1

Sub-rotina 2

Sub-rotina 3

Sub-rotina 4

Funo Principal

12

SubSub-rotinas / Funes
Funo Principal A, B Rotina 1 C, D

Estrutura de um programa
rea de incluso de arquivo E/S rea para declarao de variveis
include <stdio.h> //declare global //fimdeclare
tipo nome_fun1(){

Rotina 2 A, C, D A, B, E Rotina 3

rea para criao de funes rea para o desenvolvimento do programa principal


13

variveis local processo return }

Rotina 4 A, B, C

main(){

14

SubSub-rotinas / Funes
Uma funo um bloco de programa, contendo tipo de retorno da funo, incio, processamento, retorno e fim. Ser identificada por um nome, atravs do qual ser referenciado em qualquer parte da funo principal ou em outra funo.
tipo_de_retorno nome_funcao() { variaveis locais; processamento; return x; }
15

Desenvolvimento
1. Elabore uma funo que l dois nmeros e retorne o resultado. Desenvolva a funo principal que utilize a funo chamando-a trs vezes imprimindo os valores retornados pela mesma. 2. Elabore uma funo que l dois nmeros e retorne o menor valor. Desenvolva a funo principal que utilize a funo imprimindo o resultado retornado. 3. Elabore uma funo que l dois nmeros e retorne o maior valor. Uma outra funo que l um nmero e retorne o dobro. Desenvolva a funo principal que utilize as duas funes e imprima os valores retornados.
16

Estrutura de um programa
include <stdio.h> //arquivo de cabealho // declare int rsoma1, rsoma2, rsoma3; // var global // fimdeclare int soma() { int a, b, s; // var local printf(Digite 2 nmero); scanf(%d %d,&a,&b); s = a + b; return (s); } main(){ // inicio da funo principal rsoma1 = soma(); printf(%d,rsoma1); rsoma2 = soma(); printf(%d,rsoma2); rsoma3 = soma(); Programa printf(%d,rsoma3); }//fim

Estrutura de um programa
include <stdio.h> //arquivo de cabealho // declare int rmenor; // var global // fimdeclare int menor() { int a, b, m; // var local printf(Digite 2 nmero); scanf(%d %d,&a,&b); m = (a < b)? a : b; return (m); } main(){ // inicio da funo principal rmenor = menor(); printf(% d,rmenor); }

1
17

Programa 2
18

Estrutura de um programa
include <stdio.h> //arquivo de cabealho * desenvolvimento das funes

Estrutura de um programa
int maior() { // declare int a, b, m; // var local // fimdeclare printf(Digite 2 nmero); scanf(%d %d,&a,&b); if (a > b) m = a; else m = b; return m; } int dobro() { // declare int a, d; // var local // fimdeclare printf(Digite 1 nmero); scanf(%d,&a); d = a * 2; return d; }

main(){ // inicio da funo principal int rmaior, rdobro; // var global rmaior = maior(); printf(%d,rmaior); rdobro = dobro(); printf(%d,rdobro); } Programa 3
19

20

Desenvolvimento
1. Elabore um programa calculadora que apresente um menu de selees na funo principal. Este menu dever dar ao usurio a possibilidade de escolher uma entre quatro operaes aritmticas. Escolhida a opo desejada, dever ser solicitada a entrada de dois nmeros, e processada a operao, dever ser exibido o resultado.
O programa dever ter 4 sub-rotinas (soma, subtrao, multiplicao e diviso). A rotina principal efetuar o controle sobre as sob-rotinas, que por sua vez efetuaro o pedido de leitura de dois valores, faro a operao e apresentaro o resultado obtido.
21

SubSub-rotinas / Funes

Sub-rotina 1 Soma

Sub-rotina 2 Subtrao

Sub-rotina 3 Multiplicao

Sub-rotina 4 Diviso

Funo Principal

22

Estrutura de um programa
include <stdio.h> //arquivo de cabealho // declare int resultado,opcao; // var global float rdivisao; // var global // fimdeclare
* desenvolvimento das funes

Estrutura de um programa
int soma() { // declare int a, b, s; // var local // fimdeclare printf(Digite 2 nmero); scanf(%d %d,&a,&b); s = a + b; return s; } int subtracao() { // declare int a, b, s; // var local //fimdeclare printf(Digite 2 nmero); scanf(%d %d,&a,&b); s = a - b; return s; }
24

main() { // inicio da funo principal printf(1 - Soma); if(opcao == 2) {


printf(2 - Subtrao ); printf(3 - Multiplicao ); printf(4 - Diviso); printf(Escolha uma opo); scanf(%d,opcao); if(opcao == 1) { resultado = soma(); printf(%d,resultado); }

* }

resultado = subtracao(); printf(%dresultado); } if(opcao == 3) { resultado = multiplicacao(); printf(%d,resultado); } if(opcao == 4) { rdivisao = divisao(); printf(%d,resultado); }
23

Estrutura de um programa
int multiplicacao() { // declare int a, b, m; // var local // fimdeclare printf(Digite 2 nmero); scanf(%d %d,&a,&b); m = a * b; return m; } float divisao() { // declare int a, b; // var local float d; // val local // fimdeclare printf(Digite 2 nmero); scanf(%d %d,&a,&b); d = a / b; return d; }
25

Strings em C
No existe um tipo String em C. C representa String como um vetor (array) de caracteres, com uma posio para cada caractere e uma extra para um delimitador \0 (null). As funes de manipulao de Strings armazenam automaticamente o \0. Declarao: char identificador[dimenso + 1]; Exemplos: char nome[40]; /* 39 caracteres + 1 \0 */ char endereco[60]; /* 59 caracteres + 1 \0 */
26

Strings em C

STRING
Strings em C Exemplos:

Constantes: (Entre aspas duplas) UFVJM = U F V J M \0 Exemplo: char exemplo[10] = UFVJM; Processando Strings Cada elemento do vetor um caractere e pode ser acessado individualmente O elemento \0 significa o fim do vetor.

exemplo: main( ) { char nome[10] = exemplo; printf(%s, nome); printf(%c, nome[0]); }

OBS: o endereo mais baixo do vetor corresponde ao primeiro caractere - Em C os arrays iniciam em zero (0).
27 28

STRING Leitura
scanf ()
l o string at que um espao em branco seja encontrado.

FUNES DE MANIPULAO DE STRINGS


Funo gets() puts() Descrio a funo ideal para ler um string. l caracteres at encontrar '\n'. imprime uma nica string por vez e cada string impressa por ele termina com um caracter de nova linha ( \n ). Retorna o tamanho de s1. Copia s2 em s1 Concatena s2 no final de s1. Retorna 0 se s1 e s2 so iguais; menor que 0 se s1 < s2; maior que 0 se s1 > s2. Retorna um ponteiro para a primeira ocorrncia de s2 em s1. Procura uma palavra em uma frase.

main ( ) { char nome[40]; printf(Digite seu nome:); scanf(%s, &nome[0]); printf(Bom dia %s,nome ); } Sada: Digite seu nome: Ciro Gomes Bom dia Ciro
29

strlen(s1) strcpy(s1,s2) strcat(s1,s2) strcmp(s1,s2)

strstr(s1,s2)

30

STRING Leitura
gets()
a funo ideal para ler um string. l caracteres at encontrar '\n'. substitui '\n' '\0'

STRING Leitura
Comando gets
#include <stdio.h> #include <stdlib.h> main(){ char re [80]; printf ("Digite o seu nome: "); gets(re); printf ("Oi %s\n", re); system("pause"); }
31 32

Exemplo: main ( ) { char nome[40]; printf("Digite seu nome \n"); gets(&nome[0]); printf ("Bom dia %s !",nome); } Sada: Digite seu nome: Ciro Gomes Bom dia Ciro Gomes !

STRING Leitura
puts()
imprime uma nica string por vez e cada string impressa por ele termina com um caracter de nova linha ( \n ).

STRING strlen()
strlen(s1) retorna o tamanho do string - no conta '\0'. Exemplo: main ( ) { char nome[40]; printf ("Digite seu nome:" ); gets (nome); printf ("Tamanho = %d", strlen(nome) ); } Sada: Digite seu nome: Ciro Gomes Tamanho = 10

Exemplo: main ( ) { char nome[40]; printf (Digite seu nome: ); gets(&nome[ 0 ] ); puts(Bom dia); puts(nome); } Sada: Digite seu nome: Ciro Gomes Bom dia Ciro Gomes

33

34

STRING strcat()
strcat(s1,s2) concatena s2 ao final de s1.
dado s1 + s2 tem que caber em s1 + \0, ou seja, o tamanho de s1 tem que ser suficiente para ele e para s2.

STRING strcmp()
strcmp ( s1, s2 ) Compara dois strings retornando: negativo se s1 < s2; 0 se s1 = s2; positivo se s1 > s2; a comparao feita por ordem alfabtica .
main ( ) { char nome[40] = "Ciro", sobrenome[30] = "Gomes"; int x; x = strcmp(nome,sobrenome); if ( x == 0) puts(As strings so iguais"); else puts("Os strings so diferentes"); }

Exemplo: main ( ) { char nome[40]="Ciro ", sobrenome[30] ="Gomes"; strcat(nome,sobrenome); puts (nome); } Sada: Ciro Gomes
35

36

STRING strcmp()
strcmp ( s1, s2 ) Compara dois strings retornando: negativo se s1 < s2; 0 se s1 = s2; positivo se s1 > s2; a comparao feita por ordem alfabtica . main ( ) { char nome[40] = "Ciro", sobrenome[30] = "Gomes"; if (strcmp(nome,sobrenome )) puts("Os strings so diferentes"); else puts("Os strings so idnticos "); }

STRING strcpy()
strcpy (s1,s2) copia o contedo de s2 em s1. esta funco sobrescreve o contedo de s1. main ( ) { char s1[40] = "Ciro", s2[30] = "Gomes"; strcpy(s1,s2); puts(s1); } Sada: Gomes
38

37

STRING strstr()
strstr(s1,s2) Retorna um ponteiro para a primeira ocorrncia de s2 em s1. main ( ) { char s1[40] = "Ciro Jose", s2[30] = Matheus"; char *nome; nome = strstr(s1,s2); puts(nome); } Sada: Matheus
39

Vetores
Tcnica de programao que permite trabalhar com um agrupamento de vrias informaes dentro de uma mesma varivel. Vale salientar que este agrupamento ocorrer obedecendo sempre ao mesmo tipo de dado, e por esta razo chamado de conjunto de dados do mesmo tipo. Este tipo de estrutura e conhecida como variveis indexadas, arranjo, vetor ou matriz unidimensional. Operao sobre vetor Operaes de Dados, Pesquisa e Classificao.

40

Estrutura de um programa
#include <stdio.h> //arquivo de cabealho // declare int id1, id2, id3, id4, id5; float media; // fimdeclare //funcao principal main() { // inicio do programa principal soma = 0;
scanf(%d %d %d %d %d,&id1,&id2,&id3,&id4,&id5);

Vetores
Considere a necessidade de organizar a idade de 5 alunos: Seria necessrio a criao de 5 variveis idade. id1, id2, id3, id4, id5 id[5] id1 id2 id3 id4 id5
41

variavel id com cinco inteiros. id[0] id[1] id[2] id[3] id[4]


variavel variavel variavel variavel variavel id id id id id na na na na na posio posio posio posio posio 0 1 2 3 4
42

soma = id1 + id2 + id3 + id4 + id5; meida = soma / 5; printf(%f,media); }

Vetores
Onde podem ser armazenados valores em cada posio da seguite forma id1 id2 id3 id4 id5 = 10; = 15; = 20; = 8; = 7; = 10; = 15; = 20; = 8; = 7;
43

Vetores
Consideraes necessrias para o trabalho com vetor: Iniciar o contador de ndice, utilizando uma varivel que representar os valores dos ndices: 0,1,2,3,4,5, ... , 10. Ler os valores, um a um e armazenar idividualmente no vetor. Manipular o vetor para resolver o problema apresentado. Apresentar o resultado do problema.
44

id[0] id[1] id[2] id[3] id[4]

Aplicao de Vetores com sub-rotina sub1) Declarao do vetor


float salario[20];

Vetores
Para a manipulao das informaes em um vetor necessrio a utilizao de um comando de repetio que possibilite o acesso a cada posio do vetor. O comando geralmente utilizado e o lao PARA. A varivel de controle do lao e utilizada como indice de acesso a cada posio do vetor. 0+ 1+ 2+ 3+ 4+ 10 = 10 = 10 = 10 = 10 = 10; 11; 12; 13; 14; id[0] = id[1] = id[2] = id[3] = id[4] = 10; 11; 12; 13; 14;
46

2) Inicializao do vetor
for(i=0; i < 20; i++) { salario[i] = 0.0; }

3) Armazenamento das informaes em um vetor.


for(i=0; i < 20; i++) { printf(Digite o salario do aluno); scanf(%f,salario[i]); }

4) Manipulao das informaes em um vetor.


for(i=0; i < 20; i++) { soma += salario[i]; } media = soma / 20; ---- printf(%f,media);

5) Impresso das informaes de um vetor.


for(i=0; i < 20; i++) { printf(%f,salario[i]); }
45

for(cont= 0;cont< 5;cont++){ id[cont] = cont +10; }

Estrutura de um programa
include <stdio.h> //arquivo de cabealho // declare float totalSoma, salario[20]; // var global float media; // var global // fimdeclare

Aplicao de Vetores
Um projeto sobre vetor pode ser desenvolvido utilizando os seguintes passos: 1)Declarao do vetor. 2)Inicializao do vetor. 3)Armazenamento das informaes em um vetor. 4)Manipulao das informaes em um vetor. 5)Impresso das informaes de um vetor. Exemplo: Desenvolva um programa que efetue a leitura de 10 nmeros inteiros de um vetor. No final, apresente o total da soma de todos os elementos.
47 48

* desenvolvimento das funes


main() { // inicio da funo principal inicializa(); armazena(); totalSoma = somaVetor(); media = totalSoma / 20; printf(%f,media); imprimeVetor(); }

Estrutura de um programa
void inicializa() { // declare int cont; // var local // fimdeclare for(i=0; i < 20; i++) { salario[cont] = 0.0; } } void armazena() { // declare int cont; // var local // fimdeclare for(i=0; i < 20; i++) { printf(Digite o salario do aluno); scanf(%f,&salrio[cont]); } }
49

Estrutura de um programa
int somaVetor() { // declare float cont,soma; // var local // fimdeclare soma = 0; for(i=0; i < 20; i++) { soma += salario[cont]; } return soma; } void imprime() { // declare int cont; // var local // fimdeclare for(i=0; i < 20; i++) { printf(%f,salario[cont]); } }
50

Aplicao de Vetores
1) Declarao do vetor int numeros[10]; 2) Inicializao do vetor for(i= 0; i < 10; i++){ numeros[i] = 0; } 3) Armazenamento das informaes em um vetor. for(i= 0; i < 10; i++){ printf(Digite o prximo nmero); scanf(%d,&numeros[i]); } 4) Manipulao das informaes em um vetor. for(i= 0; i < 10; i++){ soma += numeros[i]; } 5) Impresso das informaes de um vetor. printf(%d,numeros[i]);
51

Aplicao de Vetores
1) Declarao do vetor float salario[20]; 2) Inicializao do vetor for(i= 0; i < 20; i++){ salario[i] = 0.0; } 3) Armazenamento das informaes em um vetor. for(i= 0; i < 10; i++){ printf(Digite o salario do aluno); scanf(%f,&salario[i]); } 4) Manipulao das informaes em um vetor. for(i= 0; i < 10; i++){ soma += salario[i]; } media = soma / 20; ----- printf(%f,media); 5) Impresso das informaes de um vetor. for(i= 0; i < 10; i++){ printf(%f,salario[i]); }

52

Estrutura de um programa
#include <stdio.h> //arquivo de cabealho // declare float soma, salario[20]; // declarao do vetor float media; // fimdeclare main() { // inicio do programa principal for(i= 0; i < 20; i++){ // inicializao do vetor salario[i] = 0.0; } for(i= 0; i < 20; i++){ // armazenamento de dados printf(Digite o salario do aluno); scanf(%f,salario[i]); } for(i= 0; i < 20; i++){ // manipulao dos dados soma += salario[i]; // soma } media = soma / 20; // mdia for(i= 0; i < 20; i++){ // imprime salrios printf(%f,salario[i]); // todos os alunos } }

Aplicao de Vetores
1) Declarao do vetor int idade[10]; float media; 2) Inicializao do vetor for(i= 0; i < 10; i++){ idade[i] = 0; } 3) Armazenamento das informaes em um vetor. for(i= 0; i < 10; i++){ printf(Digite a idade do aluno); scanf(%d,&idade[i]); } 4) Manipulao das informaes em um vetor. for(i= 0; i < 10; i++){ soma += idade[i]; } media = soma / 10; ----- printf(%d,media); 5) Impresso das informaes de um vetor. for(i= 0; i < 10; i++){ printf(%d,idade[i]); }

53

54

Aplicao de Vetores
1) Declarao do vetor int idadeA[10],idadeB[10]; 2) Inicializao do vetor for(i= 0; i < 10; i++){ idadeA[i] = 0; idadeB[i] = 0; } 3) Armazenamento das informaes em um vetor. for(i= 0; i < 10; i++){ printf(Digite a idade do aluno); scanf(%d,idadeA[i]); } 4) Manipulao das informaes em um vetor. for(i= 0; i < 10; i++){ idadeB[i] = idadeA[i]; } 5) Impresso das informaes de um vetor. for(i= 0; i < 10; i++){ printf(%d,idadeB[i]); }

ARRANJOS MULTIDIMENSIONAL

Um arranjo multidimensional consiste em um arranjo de linhas e colunas.


0 0 1 2
1 5 9

1
2 6 10

2
3 7 11

3
4 8 12

#define linha 3; #define coluna 4; int matria [ linha ] [ coluna ]; interpretao : temos 3 linha e 4 colunas; temos 3 vetores de tamanho 4
55 56

Matrizes
Declarar int A[4][3]; int l,c; Declarar

Matrizes
int A[4][3]; int l,c;

Inicializar

for(l=0;l<nl;l++) for(c=0;c<nc;c++) A[l][c]= ...;

Inicializar

for(l=1;l<nl;l++) for(c=1;c<nc;c++) A[l][c]= ...;

int A[4][3]={3,4,0,1,-4,8,6,-6};

Output...

!!!

ARRANJOS MULTIDIMENSIONAL

ARRANJOS MULTIDIMENSIONAL

#define linhas 3 #define colunas 4 int nota [linhas][colunas]; for(i = 0;i < linhas; i++ ) for(j = 0; j < colunas; j++ ) nota[i][j] = 0; x=1; for(i = 0;i < linhas; i++ ) for(j = 0; j < colunas; j++ ) nota[i][j] = x++;
59

x=0 if ( a < 10) x += 20 x += 30

x=0 if ( a < 10) { x += 20 } x += 30 A = 5 ---- x = 50 A = 15 ----x = 30

A = 5 ---- x = 50 A = 15 ----x = 30

for(i = 0;i < linhas; i++ ) for(j = 0; j < colunas; j++ ) printf(%d,nota[i][j]);

int soma(){ s=0; for(i = 0;i < linhas; i++ ) for(j = 0; j < colunas; j++ ) { s+=nota[i][j]; return(s) }
60

10

Matrizes
Output...
for(l=0;l<nl;l++) { for(c=0;c<nc;c++){ printf("%7.3f "),A[l][c]); } printf("\n"); }

Matrizes
Adio int A[4][4],B[4][4],C[4][4];
for(l=0;l<nl;l++) for(c=0; c<nc; c++) C[l][c]=A[l][c]+B[l][c]

... E se quisermos somar A com a transposta de B ?

Matrizes - multiplicao
Regras da multiplicao ?
a11 a12 A = a21 a22 a31 a32

Matrizes - multiplicao

b b B = 11 12 b21 b22

b13 b 23

b14 b24 a11 a12 A = a21 a22 a31 a32

b b B = 11 12 b21 b22

b13 b23

b14 b24 c24

C = A B

c c C = 11 12 c21

Cij = aik bkj

Matrizes - multiplicao
Dimensionar A, B, e C com as dimenses correctas...
for(l=0; l<nl; l++) for(c=0; c<nc; c++) for(k=0; k<???) C[l][c]=C[l][c]+A[l][k]+B[k][c]

Matrizes - exerccio
Sendo A e B as seguintes matrizes:
3 = 1 A -4

4 0 8

B = -7 5

5 3 6

Calcule a matriz soma

11

RECURSIVIDADE

RECURSIVIDADE

A Recursividade o ato da funo chamar a si mesma com a finalidade de resolver determinado problema. A funo recursiva se um comando no corpo da funo chama a prpria funo. Recurso o processo de definir algo em termos de si mesmo e , algumas vezes, chamado de definio circular. A idia por trs da recursividade est em pegar um problema inicialmente grande, sabendo a soluo para um problema pequeno, o ato de recursividade transformar um problema grande em um problema pequeno para que o mesmo seja resolvido atravs da soluo do problema pequeno.

O exemplo abaixo demonstra uma recorrncia que tambm recursiva. t(1) = 2 t(n) = t(n-1) + n t(1) = t(2) = t(3) = t(4) = ... 2 2 + t(1) 3 + t(2) 4 + t(3)

para n > 1

int t( int n ) { if (n == 1) return 2; else return t(n-1) + n; }


68

67

RECURSIVIDADE

RECURSIVIDADE

O exemplo abaixo demonstra uma recorrncia que tambm recursiva. s(1) = 1 s(n) = 2 s(n-1) + 2 n s(1) = s(2) = s(3) = s(4) = ...

Vrios problemas j so recursivos naturalmente. O problema do fatorial tambm pode ser utilizado para demonstrar a recursividade como segue: fat(0) = 1 fat(n) = n (fat(n-1))

para n > 1

para n > 0

1 2 * s(1) + 2 * 2 2 * s(2) + 2 * 3 2 * s(3) + 2 * 4

int s( int n ) { if (n == 1) return 1; else return 2* s(n-1) + (2 * n); }


69

fat(0) fat(1) fat(2) fat(3) fat(4) fat(5) .....

= = = = = =

1 1 2 3 4 5

* fat(0) * fat(1) * fat(2) * fat(3) * fat(4)


70

RECURSIVIDADE

fat(0) = 1 fat(n) = n (fat(n-1))

para n > 0

int fat( int n ) { if (n == 1) return 1; else return fat(n-1) * n; }

71

12

Das könnte Ihnen auch gefallen