Você está na página 1de 57

Programao Estruturada I

Professor: Fernando Camargo Carga horria: 60 horas E-mail: fernando.camargo@gmail.com

Contedo da Semana
Reviso
Funes bsicas; Estruturas de Repetio; Estruturas de Iterao; Matrizes;

Exerccio

Reviso
Variveis
Variveis espaos na memria utilizado para armazenar informaes;
Cada varivel possui um tipo e esse tipo determina o contedo que ser armazenado;

Os principais tipos de variveis so:


int float char Armazena nmeros inteiros; Armazena nmeros decimais; Armazena caracteres;

Reviso
Variveis
Todas as variveis devem ser declaradas antes de serem utilizadas;
Ao declarar uma varivel o programa j aloca um espao na memria RAM para que o dado seja armazenado;

Uma varivel destruda sempre que o contexto em que ela foi declarada;

Reviso
Variveis
Exemplo:
#include <stdio.h> main () { int x; // Declarao de nmero inteiro float y; // Declarao de nmero decimal char c; // Declarao de um caractere; char s[40]; // Declarao de uma varivel com 60 caracteres;

system("pause");
}

Reviso
Operadores

Reviso
Operadores

Reviso
Operadores

Reviso
Funes Bsicas
printf(Texto)
Funo para imprimir texto na tela; A funo tem como parmetro o texto a ser impresso; scanf(Tipo,&varivel) Funo utilizada para ler variveis; A funo tem como parmetro o tipo de varivel e o nome da varivel;

Reviso
Funes Bsicas
scanf(Tipo,&varivel) Os tipos possveis so:

Reviso
Funes Bsicas
Na funo printf() possvel tambm imprimir o valor das variveis, dessa forma, no local onde deve ser impresso a variavel inserido um cdigo abaixo e ento o valor aps o texto.

... int x = 20; printf(Eu tenho %d anos de idade,x); ...

Reviso
Funes Bsicas
Varivel = getch() Funo para ler um caractere; O valor digitado no exibido na tela;

Varivel = getche()
Funo para ler um caractere; O valor digitado exibido na tela; gets(varivel) Funo que l uma varivel texto;

putchar(varivel)
Funo que imprime um caractere; toupper(varivel) Funo que converte um caractere em maisculo;

tolower(varivel)
Funo que converte um caractere em minsculo;

Reviso
Funes Bsicas
Exemplo
#include <stdio.h> main () { char x[100]; printf("Digite o valor de x:"); gets(x); printf("\n\n\n\n"); putchar(x[0]); printf("\n\n\n\n%c",toupper(x[0])); printf("\n\n\n\n%c",tolower(x[0])); system("pause"); }

Reviso
Faa um programa em C que leia duas notas, os pesos de cada nota e mostre a mdia ponderada. Mdia Ponderada = (nota 1 * peso nota 1) + (nota 2 * peso nota 2) / soma dos pesos.

Reviso
Exemplo 1:
#include <stdio.h> main () { float n1,n2,p1,p2; printf("Digite a nota 1: "); scanf("%f",&n1); printf("\nDigite o peso da nota 1: "); scanf("%f",&p1); printf("\nDigite a nota 2: "); scanf("%f",&n2); printf("\nDigite o peso da nota 2: "); scanf("%f",&p2); printf("\n\n"); printf("Media: %f",(n1*p1 + n2*p2)/(p1+p2)); system("pause"); }

Reviso
Estruturas de Deciso - if Como o C uma linguagem seqencial, as vezes torna-se necessrio inibir determinados comandos ou ainda fazer o programa decidir quais sero executados;
Nesse contexto utiliza-se comandos de deciso; As estruturas de deciso visam determinar se determinado comando ser ou no executado;

Reviso
Estruturas de Deciso - if A estrutura if a estrutura de deciso mais utilizada e possui a seguinte sintaxe:
... if (condio1){ comando1; comando2; } else if (condio2){ comando3; comando4; } else comando5; ...

Reviso
Estruturas de Deciso - if Na estrutura if o compilador verifica se a condio verdadeira (diferente de 0);
Se for verdadeira o compilador executa o comando seguinte e caso existe chaves executa os comandos entre as chaves;

Se for falsa o compilador verifica a outra condio.

Reviso
Exemplo:
#include <stdio.h> main () { int num; printf ("Digite um numero: "); scanf ("%d",&num); if (num == 5) { printf ("\n\nVoce acertou!\n"); printf ("O numero e igual a 5."); } else printf ("\n\nVoce errou!"); printf ("\n\n"); system("pause"); }

Reviso
Exemplo: Fazer um programa que determine se uma pessoa pode entrar em uma boate. Podem entrar homens com 18 anos ou mais e mulheres com 16 anos ou mais
#include <stdio.h> main(){ int idade; char sexo; printf("Digite a idade:"); scanf("%d",&idade); getchar(); printf("\nDigite o sexo (M/F):"); sexo = getchar(); sexo = toupper(sexo); printf("\n\n\n");

if (sexo==77 && idade >= 18) printf("Acesso permitido\n"); else if (sexo==70 && idade >= 16) printf("Acesso permitido\n"); else if (sexo!=70 && sexo!=77) printf("Sexo invalido\n"); else printf("Acesso negado\n"); system("pause"); }

Reviso
Estruturas de Deciso switch
A estrutura de deciso switch outro comando utilizado para determinar rotas para um programa;
O comando switch utilizado quando se h um conjunto de opes determinadas e conhecidas; A estrutura composta por uma varivel que tem seu valor analisado e comparado com cada um dos casos; Havendo um caso compatvel o compilador executa todos os comandos abaixo, at a instruo break;

Reviso
Estruturas de Deciso switch
Exemplo:
switch(x) { case '1': printf("Escolheu inclusao\n"); break; case '2': printf("Escolheu alteracao\n"); break; case '3': printf("Escolheu exclusao\n"); break; default: printf("Opcao Invalida\n"); } system("pause"); }

#include <stdio.h> main() { char x; printf("1. Inclusao\n"); printf("2. Alteracao\n"); printf("3. Exclusao\n"); printf("Digite sua opcao:"); x=getchar();

Reviso
Estruturas de Deciso switch
Exemplo:
... switch(x){ case 1: printf(a); break; case 2: printf(b); case 3: printf(c); case 4: printf(d); break; default: printf(e); }

Se x for igual a 1 Sada = a; Se x for igual a 2 Sada = bcd;


Se x for igual a 3 Sada = cd; Se x for igual a 4 Sada = d;

Se x for igual a 10 Sada = e;

Reviso
Estruturas de Repetio Estruturas de repeties so comandos de controle de fluxo que objetivo executar o mesmo comando por diversas vezes; Existem trs comandos para estruturas de repetio:
for while do ... while

Reviso
Estruturas de Repetio
As estrutura de repeties so em varivel de controle e uma condio;
A estrutura ir repetir um bloco de cdigo enquanto uma condio for verdadeira. A condio baseada na varivel de controle;

Reviso
Estruturas de Repetio - Sintaxes
for
for(inicializao;condio;incremento) { comando1; comando2; }

while

while (condio){ comando1; comando2; }

do ... while

do{ Comando1; Comando2; } while ( condio);

Reviso
Estruturas de Repetio - Exemplo
#include <stdio.h> main() { int x; for(x=1;x<100;x++) printf("%d\n",x); system(pause); } #include <stdio.h> main() { int x; for(x=1;x<=10;x++) printf("2 x %d = %d\n",x,x*2); system("pause"); }

#include <stdio.h> main() { int linha,coluna; for(linha=1;linha<=10;linha++) { for(coluna=1;coluna<40;coluna++) printf("-"); putchar('\n'); } system("pause"); }

Reviso
Estruturas de Repetio - Exemplo

#include <stdio.h>
main(){ int x,continuar=1,soma=0; while (continuar==1){ printf("Digite um numero:"); scanf("%d",&x); soma +=x; printf("\n\n\nDeseja continuar?\n1 - Sim\n2 - Nao\n"); scanf("%d",&continuar); } printf("\nA soma dos numeros e: %d",soma); system("pause"); }

Reviso
Estruturas de Repetio - Exemplo
#include <stdio.h> main(){ int num1,num2,continuar; do{ system("cls"); printf("\nDigite o numero 1:"); scanf("%d",&num1); printf("\nDigite o numero 2:"); scanf("%d",&num2); printf("\n%d + %d = %d",num1,num2,num1+num2); printf("\n\nDigite 1 para continuar:"); scanf("%d",&continuar); } while (continuar==1); }

Reviso
Estruturas de Repetio Comentrios adicionais
for
a forma mais simples de repetio. Em sua sintaxe j definido a inicializao da varivel, a condio de repetio e como ser o incremento da varivel.

while
muito utilizado pois permite uma maior flexibilidade na manipulao da varivel de controle. Exige o cuidado de que a varivel de controle deve ser iniciada antes do while e ela deve ser incrementada no meio do cdigo.

do ... while
Tem a mesma regra do comando while, porm a verificao da condio ocorre aps a execuo, ou seja, ao menos uma vez sempre ser executado.

Reviso
Vetores
Vetor um tipo de dado capaz de armazenar diversos valores; A declarao de um vetor :
tipo nome_varivel[tamanho]; Exemplo:

Reviso
Vetores
Um vetor sempre tem o primeiro elemento na posio zero, ou seja:
Se tiver um vetor com 5 posies os elementos vo de 0 4; Se tiver um vetor com 9 posies os elementos vo de 0 8; Se tiver um vetor com 3 posies os elementos vo de 0 2;

O Vetor sempre contm uma dimenso, quando contm mais de uma dimenso uma Matriz.

Reviso
Vetores
Exemplo:
#include <stdio.h> main(){ float notas[3]; Declarao de uma varivel que armazena 3 valores float media=0; int x; for (x=0; x<3; x++){ A primeira posio a posio ZERO printf("Digite a nota %d:",x+1); scanf("%f",&notas[x]); media = media + notas[x]; } media = media/3; system("cls"); for (x=0; x<3; x++) printf("Nota %d: %.2f\n",x+1,notas[x]); printf("Media: %.2f\n\n",media); system("pause"); }

Reviso
Matriz
Pode-se dizer que uma matriz um conjunto de vetores; Exemplo: matriz 3,2 contm 3 vetores com duas posies
Vetor[2]
Vetor[2]

Linha 1 Coluna 1 Linha 2 Coluna 1


Linha 3 Coluna 1

Linha 1 Coluna 2 Linha 2 Coluna 2


Linha 3 Coluna 2

Vetor[2]

Reviso
Matriz
A declarao de uma matriz :

tipo nome_varivel [tamanho] [tamanho]


Exemplo: int var[2][2]

Reviso
Matriz
Exemplo:
#include <stdio.h> main(){ int m[5][5]; int x,y; for (y=0;y<5;y++) for (x=0;x<5;x++){ printf("Digite o elemento linha %d Coluna %d:",y+1,x+1); scanf("%d",&m[y][x]); } system("cls"); for (y=0;y<5;y++){ for (x=0;x<5;x++) printf("%d \t",m[y][x]); printf("\n"); } system("pause"); }

Reviso
Strings
Strings uma das mais teis e importantes formas de dados em C; usada para armazenar e manipular textos como palavras, nomes ou frases; Na verdade, uma string nada mais que um vetor de uma varivel do tipo char;

Reviso
Strings
A declarao de uma string sempre: char nome_da_string[tamanho];
Exemplo:

Reviso
Funes para Strings
scanf(): Utilizada para leitura de strings;
scanf("%s",c);

gets(): Utilizada para leitura de string;


gets(c);

puts(): Utilizada para impresso de string;


puts(c);

printf(): Utilizada para impresso de string;


printf("\n\n O nome digitado e: %s\n\n",c);

Reviso
Funes para Strings
strlen(): Retorna o tamanho de uma string;
strlen(c);

strcat(): Concatenar duas strings;


strcat(c1,c2);

strcmp(): Comparar duas strings;


strcmp(c1,c2);

strcpy(): Copiar uma string para outra string;


strcpy(c1,c2);

Exerccios
Os trechos de programa a seguir so equivalentes entre si, sob o ponto de vista do que impresso:
for (i = 0 ; i < 10; i++) printf("%d", i); for (i = 0 ; i < 10; ++i) printf("%d", i);

a. Verdadeiro b. Falso

Exerccios
Os trechos de programa a seguir so equivalentes entre si, sob o ponto de vista do que impresso:
for (i = 0 ; i < 10; i++) printf("%d", i); for (i = 0 ; i < 10; ++i) printf("%d", i);

a. Verdadeiro b. Falso

Exerccios
Os dois blocos de cdigo a seguir produzem o mesmo resultado:
for( i = 0 ; i < 3 ; i++) for ( j =0 ; j < 3; j++) printf("i+j = %d \n", i+j); for( i = 0 , j=0 ; i < 3 ; i++) for ( ; j < 3 ; j++) printf("i+j = %d \n", i+j);

a. Verdadeiro b. Falso

Exerccios
Os dois blocos de cdigo a seguir produzem o mesmo resultado:
for( i = 0 ; i < 3 ; i++) for ( j =0 ; j < 3; j++) printf("i+j = %d \n", i+j); for( i = 0 , j=0 ; i < 3 ; i++) for ( ; j < 3 ; j++) printf("i+j = %d \n", i+j);

a. Verdadeiro b. Falso

Exerccios
Qual a sada produzida pelo cdigo a seguir: int x; for ( x = 35 ; x > 0 ; x/=3) printf("%d " , x) ;

a. 35 11 3 1 b. 11 3 1 c. 11 3 1 0 d. 35 11 3 e. Nenhuma das opes anteriores

Exerccios
Qual a sada produzida pelo cdigo a seguir: int x; for ( x = 35 ; x > 0 ; x/=3) printf("%d " , x) ;

a. 35 11 3 1 b. 11 3 1 c. 11 3 1 0 d. 35 11 3 e. Nenhuma das opes anteriores

Exerccios
O lao for a seguir: int i; for ( i = 0 ; i <= 5; i++ , printf("%d ", i));
a. Imprime 0 1 2 3 4 5 b. No funciona, pois tem sintaxe errada c. Imprime 1 2 3 4 5 6 d. Imprime 1 2 3 4 5 e. Nenhuma das opes anteriores

Exerccios
Sendo i declarado e inicializado como: int i = 0; Os seguintes extratos de cdigo: while (i = 5) { printf("%d %d %d \n", i, i+2, i+3); i = 0; } e if (i = 5) printf ("%d %d %d \n", i, i+2, i+3);
a. So idnticos sob o ponto de vista do que imprimem na tela b. No imprimem nada na tela c. Tm sintaxe errada d. Um deles imprime 5, 7 e 9 uma nica vez e o outro entra em loop, imprimindo estes valores indefinidamente e. Nenhuma das opes anteriores

Exerccios
Sendo i declarado e inicializado como: int i = 0; Os seguintes extratos de cdigo: while (i = 5) { printf("%d %d %d \n", i, i+2, i+3); i = 0; } e if (i = 5) printf ("%d %d %d \n", i, i+2, i+3);
a. So idnticos sob o ponto de vista do que imprimem na tela b. No imprimem nada na tela c. Tm sintaxe errada d. Um deles imprime 5, 7 e 9 uma nica vez e o outro entra em loop, imprimindo estes valores indefinidamente e. Nenhuma das opes anteriores

Exerccios
Se declararmos um vetor como: int vet[30]
A instruo abaixo acessa corretamente os elementos deste vetor? for (j=0; j <= 30; j++) vet[j] = j*j; a. Sim b. No

Exerccios
Se declararmos um vetor como: int vet[30]
A instruo abaixo acessa corretamente os elementos deste vetor? for (j=0; j <= 30; j++) vet[j] = j*j; a. Sim b. No

Exerccios
Seja a matriz matrx declarada e inicializada por: int matrx[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
O que conter o elemento matrx[1][2] ? a. 2 b. 5 c. 6 d. 7 e. Nenhuma das opes anteriores

Exerccios
Seja a matriz matrx declarada e inicializada por: int matrx[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
O que conter o elemento matrx[1][2] ? a. 2 b. 5 c. 6 d. 7 e. Nenhuma das opes anteriores

Exerccios
Qual funo pode ser usada para concaternar uma string?
a. gets b. strcpy c. strcat d. strlen e. strcmp

Exerccios
Qual funo pode ser usada para concaternar uma string?
a. gets b. strcpy c. strcat d. strlen e. strcmp

Exerccios
Qual funo pode ser usada para determinar o comprimento de uma string?
a. gets b. strcpy c. strcat d. strlen e. strcmp

Exerccios
Qual funo pode ser usada para determinar o comprimento de uma string?
a. gets b. strcpy c. strcat d. strlen e. strcmp