Escolar Documentos
Profissional Documentos
Cultura Documentos
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); } }
Programao de Computadores
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 }
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() {
int x, y, ret;
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
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
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
* }
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.
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.
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
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
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
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; }
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
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
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
Inicializar
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
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]
Matrizes - multiplicao
Regras da multiplicao ?
a11 a12 A = a21 a22 a31 a32
Matrizes - multiplicao
b b B = 11 12 b21 b22
b13 b 23
b b B = 11 12 b21 b22
b13 b23
C = A B
c c C = 11 12 c21
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
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
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 1 2 3 4 5
RECURSIVIDADE
para n > 0
71
12