Você está na página 1de 6

Linguagem C

Problema: Dado um vetor com n valores no ordenados, , desenvolver um mtodo para a ordenao do vetor. Ex.: Ex : 7 3 4 9 2 11

Computao I
2 3 4 7 9 11

Instituto Multidisciplinar Universidade Federal Rural do Rio de Janeiro

Mtodo de Ordenao: A cada passo i (com 1 <= i <= n - 1) , colocar na i-sima posio o menor valor dentre as posies i at n.

Linguagem C
Ex.: 7
Mtodo da Bolha

Linguagem C
Ex.: 3 4 9 2 11
Mtodo da Bolha (em C)

11

2
Para i = 1 a n - 1 Para j = i + 1 a n Se v[ i ] > v[ j ] ento aux = v[ i ] v[ i ] = v[ j ] v[ j ] = aux

7 3 3 3 3

4 7 4 4 4

9 9 9 7 7

3 4 7 9 9

11 11 11 11 11
for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(v[i]>v[j]){ aux v[i]; aux=v[i]; v[i]=v[j]; v[j]=aux; }

2 2 2 2 2

7 3 3 3 3

4 7 4 4 4

9 9 9 7 7

3 4 7 9 9

11 11 11 11 11

2 2 2 2

Linguagem C
Matrizes Multidimensionais (ou variveis compostas multidimensionais). Necessita mais de um ndice para acessarmos um elemento especfico. especfico
N de ndices requeridos = N de dimenses da matriz

Linguagem C
Em C
#include<stdio.h> float F[20][20]; int i,j; main() { ... }

Ex.: Matriz bidimensional:


Matriz A(3x3) Elemento A[1][0]

Ex.: Desenvolva em C um programa que calcule o l l l determinante de uma matriz A (3 x 3).

Linguagem C
Ex.: Desenvolva em C o algoritmo de Euclides.
#include<stdio.h> int a,b,resto; main() { printf( Entre printf("Entre com a: "); ); scanf("%d",&a); printf("Entre com b: "); scanf("%d",&b); f("%d" b) if(b>a) { resto=a; a=b; b=resto; }

Linguagem C
resto = a%b; while(resto!=0) { a=b; b=resto; resto=a%b; } p printf("mdc = %d.",b); ( , ); getchar(); }

Linguagem C
Strings g

Linguagem C
Strings g

Uma string pode ser vista como um vetor do tipo char. Em C


#include<stdio.h> #include<string.h> char Disciplina[50]; main() { strcpy(Disciplina,"Computao I"); }

Uma string pode ser vista como um vetor do tipo char. Em C


#include<stdio.h> #include<string.h> // Bibl. para manip. de strings. char Disciplina[50]; main() { strcpy(Disciplina,"Computao I"); }

Linguagem C
Strings g

Linguagem C
Obs.: Em C, podemos ter uma Funo que retorna um valor ( estrutup q (ou ra) para o programa que a chamou, ou que no retorna qualquer dado.

Uma string pode ser vista como um vetor do tipo char. Em C


#include<stdio.h> #include<string.h> // Bibl. para manip. de strings. char Disciplina[50]; main() { strcpy(Disciplina,"Computao I"); // Funo cpia. }

Funes (Strings) strlen(seq) = retorna o tamanho da seqncia seq


#include<stdio.h> #i l d < tdi h> #include<string.h> char ST1[80]; main(){ printf("Exemplo de length:\n"); strcpy(ST1, abcdefg ); strcpy(ST1,"abcdefg"); printf("Tam de \"%s\" = %d.",ST1,strlen(ST1)); getchar(); }

Linguagem C
Obs.: Em C, podemos ter uma Funo que retorna um valor ( estrutup q (ou ra) para o programa que a chamou, ou que no retorna qualquer dado.

Linguagem C
Ex.: Palndromo = palavra que pode ser lida indiferentemente p q p da esquerda para a direita ou vice-versa. ese vo va u p og a a e verifique u a seq c a Desenvolva um programa em C que ve que se uma seqncia de entrada um palndromo.
#include<stdio.h> #i l d di h #include<string.h> char str[80]; int i,j,l,palind; main() { printf("Entre com a sequencia: "); gets(str);

Funes (Strings) strlen(seq) = retorna o tamanho da seqncia seq


#include<stdio.h> #i l d < tdi h> #include<string.h> char ST1[80]; main(){ printf("Exemplo de length:\n"); strcpy(ST1, abcdefg ); strcpy(ST1,"abcdefg"); printf("Tam de \"%s\" = %d.",ST1,strlen(ST1)); getchar(); } Tam de "abcdefg" = 7

Linguagem C
l=strlen(str)-1; j=l/2; palind=1; for(i 0;i<j;i++) for(i=0;i<j;i++) { if(str[i]!=str[l]) { palind=0; break; } l=l-1; } if(palind) printf("Palindromo."); else printf("Nao palindromo."); palindromo ") fflush(stdin); getchar(); }

Linguagem C
Ex.: Desenvolva um programa em C que verifique se duas p g q q seqncias de entrada so iguais.
#include<stdio.h> #i l d < tdi h> #include<string.h> char str1[80],str2[80]; int i,L1,L2,iguais; main() { printf( Entre printf("Entre com a 1a sequencia: "); ); gets(str1); printf("Entre com a 2a sequencia: "); gets(str2); L1=strlen(str1); L2=strlen(str2);

Linguagem C
if(L1!=L2) printf("Nao sao iguais."); else { iguais 1; iguais=1; for(i=0;i<L1;i++) if(str1[i]!=str2[i]) { iguais=0; break; } if(iguais) printf("Sao iguais."); else printf("Nao sao iguais."); } fflush(stdin); getchar(); }

Linguagem C
Ex.: Tringulo de Pascal g

( a + b) 0 = (a + b)1 = ( a + b) =
2

1 1 a 1 a 1 a 1 a 1 a5
4 3 2

1 b 2 ab
2

1 b2
2

( a + b) 3 = ( a + b) 4 = ( a + b) 5 =

b 3 a b 3 ab
4 ab 6 a b
3 2 2

1 b
3

4 ab
2 3

1 b4 1 b5

5 a 4b 10 a 3b 2 10 a b 5 ab 4

Linguagem C
Ex.(cont.): Desenvolva um p g ( ) programa em C q , dado n, que, , imprima as n primeiras linhas do Tringulo de Pascal.
1 1 1 1 1 4
5
3

Linguagem C
Funes (Strings, rever no Laboratrio) u es (S gs, eve o bo o) strcpy(seq1,seq2) = copia seq2 para seq1, e retorna seq1
1 2
3

1 1 4 1
5

strcat(seq1,seq2) = concatena seq2 ao final de seq1, e ( q , q ) q q , retorna seq1 strcmp(seq1 seq2) = compara seq1 com seq2, retorna strcmp(seq1,seq2) seq2 <0 se seq1<seq2, retorna 0 se seq1=seq2, ou >0 se seq1>seq2
1

6 10 10

strchr(seq1,c) = retorna ponteiro para a primeira ocorrncia de c em seq1

Linguagem C
Modularizao odu o Permite o desenvolvimento de programas bem estruturados. estruturados #include<stdio.h>
float Funcao1(float); void Funcao2(void); main(){

Linguagem C
Funes (em C): Podem retornar ou no um valor. Ex.: Ex : Desenho de uma tela, apresentao de mensagens, tela mensagens etc.(no retornando um valor), e clculo de ndices, funes trigonomtricas, etc. (retornando um valor).

Cdigos repetidos no programa devem ser identificados, agrupados identificados e esruturados, de modo a obter-se p programa p principal. p limpeza do p g

M
Funo1
<tipo retornado> Nome(<tipo> <lista de parmetros>){ { declarao de objetos j comandos }

Funo2

Linguagem C
<tipo retornado> : tipo retornado pela funo Nome : identificador associado funo tipo : tipo dos parmetros formais passados funo lista-de-parametros : parametros formais (passados ) funo) declarao de objetos : declarao dos objetos utilizados apenas na funo comandos : quaisquer comandos da linguagem C

Linguagem C
Parmetros:

de t d d entrada Seus valores so estabelecidos fora da sub-rotina e no podem ser modificados dentro da sub-rotina. sub rotina de sada Seus valores so estabelecidos dentro da sub-rotina. de entrada sada entrada-sada Seus valores so estabelecidos fora da sub-rotina, mas podem ser alterados dentro dela.

Linguagem C
Passagem de Parmetros: g

Linguagem C
Exemplos: p 1) Quadrado de um inteiro.
#include<stdio.h> int quadrado(int a); a (){ main(){ int i,q; printf("Entre com i: "); scanf("%d",&i); f("%d" i) q=quadrado(i); printf("Quadrado de %d = %d.",i,q); fflush(stdin); getchar(); } int quadrado(int a){ return a*a; a a; }

Por valor: As alteraes feitas nos parmetros formais, dentro do procedimento no se refletem nos parmetros atuais. (Parmetro de entrada.) f p Por referncia: A cada alterao feita em um parmetro formal, corresponde a mesma alterao feita no seu parmetro atual associado. (Parmetro de entrada-sada.)

Linguagem C
2) IMC. )
#include<stdio.h> float imc(float peso,float altura); main(){ a (){ float p,h,i; printf("Entre com o peso: "); scanf("%f",&p); f("%f" ) printf("Entre com a altura: "); scanf("%f",&h); i=imc(p,h); printf(IMC = %.3f.",i); fflush(stdin); getchar(); }

Linguagem C
2) IMC ) (cont.).
float imc(float peso float altura){ peso,float return p/(h*h); }

3) Ordenao. #include<stdio.h>
void Ordena(float V[]); main(){ float Vet[10]; int i; printf("Entre com o vetor:\n\n"); for(i=0;i<10;i++){ printf("Vet[%d] = ",i+1); scanf("%f",&Vet[i]); }

Linguagem C
3) Ordenao ) (cont.).
Ordena(Vet); for(i=0;i<10;i++) f (i 0 i<10 i++) printf("Vet[%d]=%.f\n",i+1,Vet[i]); fflush(stdin); getchar(); } void Ordena(float V[]){ int i,j; float aux; for(i=0;i<9;i++) for(j=i+1;j<10;j++) if(V[i]>V[j]){ [ ]; aux=V[i]; V[i]=V[j]; V[j]=aux; } }

Linguagem C
4) Converso de horas, minutos e segundos para segundos; ) , g p g ;
#include<stdio.h> int ConversaoHMS2S(int H,int M,int S); main(){ int hor,min,seg,total; p printf("Entre com a hora: "); scanf("%d",&hor); printf("Entre com o minuto: "); scanf("%d",&min); f("%d" & i ) printf("Entre com o segundo: "); scanf("%d",&seg); total=ConversaoHMS2S(hor,min,seg); printf("Total = %d seg.",total); fflush(stdin); getchar(); }

Linguagem C
4) Converso de horas, minutos e segundos para segundos ) , g p g (cont.).
int ConversaoHMS2S(int H,int M,int S){ int ret; ret=S+(M*60)+(H*3600); return ret; }

Linguagem C
#include<stdio.h> int NaoModifica(int x); main(){ int A; A=10; NaoModifica(A); ( ); printf("A = %d.",A); fflush(stdin); getchar(); t h () } int NaoModifica(int x){ x=x+5; return x; }

// O que ser impresso?

Obs.: Desenvolver m Obs : Desen ol er um programa de converso de segundos con erso seg ndos para horas, minutos e segundos.

// Por valor valor.

Você também pode gostar