Você está na página 1de 13

Paradigma de Programao Apoio - Linguagem C/C++ Reviso: O que programar?

? Algoritmo; Estrutura seqencial em Algoritmo; Estrutura seqencial em Pascal; Estrutura seqencial em C/C++; Bibliotecas #include <biblioteca> Tipo_retorno nome_funo() void main() { { Bloco de comandos Bloco de comandos } } Bibliotecas / #include; Tipo_Retorno / void Nome_Funo / main; { }; ; (ponto-e-vrgula); Maisculas e minsculas.

Aula 03

Comandos de sada em C/C++ printf Mostra mensagens na tela. Sintaxe: printf(Expresso de controle, lista de argumentos); Expresso de controle: pode conter caracteres que sero exibidos na tela, cdigos de formatao e tambm de cdigos especiais; Lista de argumentos: variveis ou constantes que sero mostrados no local onde esto especificados os cdigos de formatao. Podem ser vrios, e neste caso separados por vrgula. cout Mostra mensagens na tela, uso exclusive em C++. Sintaxe: cout << Mensagem <<: chamado de operador de insero conecta a msg a ser impressa cout. Tambm pode-se utilizar os cdigos especiais. Tabela de cdigos para impresso formatada com a funo printf: Cdigos printf Formato %c Caractere simples %d Decimal %e Notao cientfica %f Ponto flutuante %g %e ou %f (o mais curto) %o Octal %s Cadeia de caracteres %u Decimal sem sinal %x Hexadecimal Tabela de caracteres que podem ser utilizados com a funo printf e cout Cdigos Especiais Significado \n Nova linha \t TAB \b Retrocesso \ Aspas \\ Barra
Prof. Msc. Marcos da Silva Alves 1

Paradigma de Programao Apoio - Linguagem C/C++ \f \0 Salta pgina de formulrio Nulo

Aula 03

Exerccio 1: Fazer um algoritmo utilizando a linguagem Portugol para mostra a seguinte mensagem: Universidade Paulista. Resposta: ALGORITMO ESCREVA Universidade Paulista. FIM_ALGORITMO Exerccio 2: Transpor o exerccio anterior para a linguagem C/C++, compilar e execut-lo. Resposta: #include <stdio.h> main() { printf(Universidade Paulista); getch() } Exerccio 3: Fazer um algoritmo utilizando a linguagem Portugol para mostra a seguinte mensagem: Universidade Paulista Cincia da Computao Resposta: ALGORITMO ESCREVA Universidade Paulista ESCREVA Cincia da Computao FIM_ALGORITMO Exerccio 4: Transpor o exerccio anterior para a linguagem C/C++, compilar e executar Resposta: #include <stdio.h> main() { printf(Universidade Paulista\n); printf(Cincia da Computao); getch(); } Exerccio 5: Fazer o exerccio 1 transpondo-o para a linguagem C/C++, usando o comando de sada cout Resposta: #include <stdio.h> main() { cout << Universidade Paulista; getch(); } Exerccio 6: Fazer o exerccio 3 transpondo-o para a linguagem C/C++, usando o comando de sada cout Resposta:
Prof. Msc. Marcos da Silva Alves 2

Paradigma de Programao Apoio - Linguagem C/C++ #include <stdio.h> main() { cout << Universidade Paulista << \n << Cincia da Computao; getch(); } Obs.: no foi possvel visualizar nada, Alterao 1: Incluir o comando getch():(Turma_A_Aula_02_Exemplo_01b.cpp) #include <stdio.h> #include <conio.h>

Aula 03

void main() { cout << Sempre; getch(); } Nota: foram necessrios incluir os Arquivos/Cabealhos stdio.h e conio.h que fazem parte do C (isto porque o C++ veio do C). Sintaxe: Exemplos: (,) vrgula No possui um tipo especial para armazenar cadeias de caracteres (strings). Deve-se utilizar um vetor para armazenar vrios elementos do tipo char Possui 5 tipos bsicos: int, float, double, void e char. Tipo Bit Bytes Escala char 8 1 -128 a 127 int 16 2 -32768 a 32767 float 32 4 3.4E-38 a 3.4E+38 double 64 8 1.7E-308 a 1.7E+308 void 0 0 sem valor unsigned char 8 1 0 a 255 unsigned 16 2 0 a 65535 short 16 2 -32768 a 32767 long 32 4 -2147483648 a 2147483647 unsigned long 32 4 0 a 4294967295 long double 80 10 3.4E-4932 a 1.1E+4932 De acordo com o processador ou compilador, o tamanho em bit, bytes e a escala podem variar. A escala est de acordo com o padro ANSI e considerada como faixa mnima; Sintaxe: Comando de atribuio: = (igual); Sexo = F; float Valor_Compra; int Codigo_Vendedor, Codigo_Cliente; Variveis do mesmo tipo podem ser declaradas na mesma linha desde que separadas por Declarao de variveis em C/C++: tipo_dado nome_varivel; tipo_dado nome_varivel_1, nome_varivel;

Prof. Msc. Marcos da Silva Alves

Paradigma de Programao Apoio - Linguagem C/C++

Aula 03

Comandos de entrada em C/C++: scanf() permite ler dados formatados do teclado. No aceita espaos em branco. sintaxe: scanf(Expresso de controle, lista de argumentos); onde: Expresso de controle: cdigos de formatao como na funo printf(); Lista de argumentos: endereos das variveis. Devem ser precedidas de & (operador de endereo). exemplo: scanf(%d, %anos); getch() l o caractere do teclado e no mostra na tela. Aceita apenas um caractere getche() l o caractere do teclado e mostra na tela. Aceita apenas um caractere Exemplos: main() { char, ch_1, ch_2, ch_3; printf(Digite o Primeiro caractere); ch_1 = getche(); printf(\nDigite o Segundo caractere); ch_2 = getch(); printf(\nDigite o Terceiro caractere); scanf(%c, &ch_3); printf(\nO Primeiro caractere que voc digitou foi: %c, ch_1); printf(\nO Segundo caractere que voc digitou foi: %c, ch_2); printf(\nO Terceiro caractere que voc digitou foi: %c, ch_3); getch(); } gets() Sintaxe: gets(nome_variavel) Armazena toda a cadeia at que seja pressionada a tecla ENTER; Permite espaos em branco. cin() manipula toda entrada do teclado por meio do operador de extrao >> que conecta a entrada de dados varivel que a conter. Sintaxe: cin >> variavel Exerccio 01: faa um programa que pea a idade de uma pessoa, o seu sexo e o valor das compras. Mostra as seguintes mensagens: Voce tem ___ anos Seu sexo : ___ Voc gastou ___ em compras Obs.: utilize as funes printf(), cout, cin, scanf(). Operadores Aritmticos: + soma;

Prof. Msc. Marcos da Silva Alves

Paradigma de Programao Apoio - Linguagem C/C++

Aula 03

- subtrao; * multiplicao; / diviso; % mdulo: opera somente com valores inteiros, e retorna o resto da diviso entre dois nmeros. Exemplo: Pedir para o usurio digitar dois nmeros e mostrar o resto da diviso entre eles. Operadores de Incremento: ++ Adiciona 1 varivel operando; ++X operador prefixado: incrementa a varivel operando antes de executar a instruo; X++ operador ps-fixado: incrementa a varivel operando aps a execuo da instruo. Exemplos: N = 5; X = ++N; Cout << \nN= << N << \tX= << X; /* A Sada ser: N=6 X=6*/ N = 5; X = N++; Cout << \nN= << N << \tX= << X; /* A Sada ser: N=6 X=5*/ > >= < <= == != Operadores relacionais: maior maior ou igual menor menor ou igual igual diferente

Em C/C++ no existe varivel chamada booleana. O valor 0 (zero) falso; qualquer outro valor verdadeiro e representado por 1 (um). Exemplo: void main() { int verdadeiro, falso; verdadeiro = (15 < 20); falso = (15 == 20); cout << \nVerdadeiro << verdadeiro; cout << \nFalso << falso; } Operadores Lgicos: && lgico e: Tabela verdade: V && V = V V && F = F F && V = F F && F = F || lgico ou: Tabela verdade: V || V = V V || F = V
5

Prof. Msc. Marcos da Silva Alves

Paradigma de Programao Apoio - Linguagem C/C++ F || V = V F || F = F lgico no: Tabela verdade: !V = F !F = V

Aula 03

Estrutura condicional simples: if condio { bloco de comandos; } O bloco de comandos s ser executado se a condio for verdadeira. Uma condio uma comparao que possui dois valores possveis: verdadeiro ou falso. Estrutura condicional composta: if condio { bloco_de_comandos_1; } else { bloco_de_comandos_2; } Se a condio for verdadeira, ser executado o bloco_de_comandos_1; caso contrrio, se a condio for falsa, ser executado o bloco_de_comandos_2. Exerccio 02: Faa um programa que receba as quatro notas bimestrais de um aluno e calcular a mdia anual. Se esta mdia for maior ou igual a 5, mostrar a mensagem: Voc foi aprovado com media: __; caso contrrio, mostrar a mensagem: Voc foi reprovado com mdia: __. Exerccio 03: Faa um programa que receba dois nmeros e mostre o maior. Exerccio 04: A nota final de um aluno calculada a partir das quatro notas bimestrais. A mdia das quatro notas obedece os seguintes pesos: Nota_1 peso 2 Nota_2 peso 2 Nota_3 peso 3 Nota_4 peso 5 Faa um programa que receba as quatro notas, calcule e mostre a mdia ponderada e o conceito que segue a tabela abaixo: Mdia ponderada 8,1 a 10 conceito A 7,1 a 8,0 conceito B 6,1 a 7,0 conceito C 5,1 a 6,0 conceito D 0,0 a 5,0 conceito E A mensagem dever ser: Mdia ponderada: __
Prof. Msc. Marcos da Silva Alves 6

Paradigma de Programao Apoio - Linguagem C/C++ Obteve conceito __ Resposta em algoritmo: ALGORITMO DECLARE N1, N2, N3, N4, MEDIA NUMRICO LEIA N1,N2,N3,N4 MDIA <- (N1*2 + N2*2 + N3*3 + N4*5) / 10 ESCREVA MEDIA PONDERADA: , MEDIA SE (MEDIA>=8.1) E (MEDIA <=10) ENTO ESCREVA Obteve Conceito A SE (MEDIA>=7.1) E (MEDIA <=8.0) ENTO ESCREVA Obteve Conceito B SE (MEDIA>=6.1) E (MEDIA <=7.0) ENTO ESCREVA Obteve Conceito C SE (MEDIA>=5.1) E (MEDIA <=6.0) ENTO ESCREVA Obteve Conceito D SE (MEDIA>=0.0) E (MEDIA <=5.0) ENTO ESCREVA Obteve Conceito E FIM_ALGORITMO Laos/Repeties: for, while e do-while Lao for (faa) for: sintaxe: for (expresso_de_inicializao; expresso_de_teste; expresso_de_incremento) { instruo/bloco_de_comandos; }

Aula 03

onde: expresso_de_inicializao: instruo de atribuio, ou seja, iniciar uma varivel com um valor; expresso_de_teste: Instruo de condio que controla o lao (Ex.: At que contador < 10); avaliada como Verdadeira ou Falsa toda vez que o lao for iniciado ou reiniciado; Se Verdadeiro o corpo/instrues do lao executado; Se Falso o lao terminado e o controle passa pra a instruo seguinte ao lao; Expresso_de_incremento: define a maneira como a varivel de controle do lao ser alterada cada vez que o lao repetido (Ex.: Contador = Contador + 1 ou Contador++) Modo de execuo do comando for: 1) A expresso de inicializao, caso exista, executada; 2) A expresso de teste avaliada; 3) Se valor encontrado seja Verdadeiro a. O bloco de instrues/comandos executado; b. A expresso de incremento ser executada; c. Retorna ao item 2. 4) Se valor encontrado seja Falso; a. Termina o processamento do lao;
Prof. Msc. Marcos da Silva Alves 7

Paradigma de Programao Apoio - Linguagem C/C++ b. Executa a primeira instruo aps o lao; Exemplo 01: Fazer um programa pra mostrar os nmeros de 9 0: (Aula_06_Exemplo_01.c) /* Lao for */ Sada: Contador: 9 /* imprimir um contador de 9 a 0 */ Contador: 8 #include <stdio.h> Contador: 7 main() { int Contador; for (Contador=9; Contador>=0; Contador--) { printf("Contador: %d\n", Contador); } printf("Ate que enfim esse laco chegou ao fim"); getch(); }
Contador: 6 Contador: 5 Contador: 4 Contador: 3 Contador: 2 Contador: 1 Contador: 0 Ate que enfim esse lao chegou ao fim

Aula 03

Exemplo 02: Fazer um programa pra mostrar todos os nmeros mpares de 1 a 20: (Aula_06_Exemplo_02c) /* Lao for */ /* imprimir todos os nmeros mpares de 1 a 20 */ main() { int Contador; for (Contador=1; Contador<=20; Contador+=2) { printf("Contador: %d\n", Contador); } printf("Ate que enfim esse laco chegou ao fim"); getch(); } Exerccio: 01) Fazer um programa para digitar o nome de um aluno e as 4 notas bimestrais de um aluno, usando um lao do tipo for. No final mostrar a media anual deste aluno. 02) Achar uma tabela de cdigos ASCII: /* Lao for */ /* usando caracteres ao invs de inteiros */ main() { char Ch_1; char Ch_Procurar; printf("Digite o ltimo caractere voce deseja achar o codigo ASCII? "); Ch_Procurar = getche(); for (Ch_1='?'; Ch_1<=Ch_Procurar; Ch_1++) { printf("\nO Valor ASCII de %c e igual a: %d", Ch_1, Ch_1);
Prof. Msc. Marcos da Silva Alves 8

Paradigma de Programao Apoio - Linguagem C/C++ } printf("\nAte que enfim esse laco chegou ao fim"); getch(); }

Aula 03

Lao while (enquanto) while: sintaxe: while (expresso de teste) { bloco_de_comandos; } A expresso de teste avaliada antes da execuo do bloco de instrues/comandos. Modo de execuo do lao while: 1) A expresso avaliada; 2) Se valor encontrado seja Verdadeiro a. O bloco de bloco_de_comandos executado; b. Retorna ao item 1. 3) Se valor encontrado seja Falso; a. Executa a primeira instruo/comando aps o lao; Exemplo 03: Fazer um programa para mostrar os nmeros de 9 0 utilizando o lao while: ALGORITMO /* Imprimir um contador de 9 a 0 */ DECLEARE contador NUMRICO /* utilizando o lao while */ ENQUANTO (contador >= 0) FAA #include <stdio.h> INCIO main() CONTADOR <- CONTADOR 1 { ESCREVA CONTADOR, conador int Contador = 9; CONTADOR <- CONTADOR + 1 while (Contador>=0) FIM { FIM_ALGORITMO Contador--; printf("Contador: %d\n", Contador); } getch(); } Explicao: Em relao ao lao for: o a) a expresso de inicializao feita antes do lao; o b) a expresso de incremento feita dentro do lao. Observe que o contador iniciou com o nmero 8, e no com o nmero 9. Por qu? o R.: porque a primeira instruo dentro do lao uma instruo de decremento. O lao while mais apropriado que o lao for quando a condio de parada do lao ocorrer inesperadamente. O lao for mais apropriado que o lao while quando o nmero de iteraes conhecido; Exemplo 04: Digitar uma frase e a cada caractere digitado incrementar uma varivel. Quando for pressionado a <ENTER> mostrar o total de caracteres digitados. (Aula_07_Exemplo_03.c) /* Contar o nmero de caracteres digitados */ /* em uma frase utilizando o lao while */
Prof. Msc. Marcos da Silva Alves 9

Paradigma de Programao Apoio - Linguagem C/C++ /* Condio de parada do lao: Tecla <ENTER> */ main() { int Contador = 0; printf("Digite uma frase:\n"); while (getche() != 13) { Contador++; } printf("\nTotal de caracteres da frase: %d\n", Contador); getch(); }

Aula 03

Exemplo 04: Faa um programa que determine e mostre os cinco primeiros mltiplos de 3, considerando nmeros > 0. ALGORITMO DECLARE Contador, Numero NUMRICO Contador <- 0; Numero <- 1; ENQUANTO (Contador < 5) FAA INCIO SE (RESTO(Numero / 3) = 0) ENTO INCIO ESCREVA Nmero mltiplo:, Numero Contador <- Contador + 1 FIM Numero <- Numero + 1 FIM FIM_ALGORITMO O lao do-while (faa-enquanto) (repeat-until) do-while: sintaxe: do { instruo } while (expresso de teste); ponto-e-vrgula A avaliao da expresso feita aps a primeira iterao; sempre executado pelo menos uma vez (diferente do lao while); O teste de condio avaliado depois do lao ser executado (diferente do lao while); Ponto-e-vrgula: deve-se colocar no final da expresso de teste. Razes para uso do lao do-while: 1. Legibilidade, isto , ler a expresso de teste antes de percorrer o lao, ajudando desta forma interpretar facilmente o sentido do bloco de instrues; 2. Possibilidade de execuo do lao mesmo que o teste seja falso de incio. 1) 2) 3) 4) Modo de execuo do lao do-while: O bloco de instrues/comandos executado; A expresso avaliada; Se valor encontrado seja Verdadeiro a. O fluxo de execuo volta para o item a; Se valor encontrado seja Falso
10

Prof. Msc. Marcos da Silva Alves

Paradigma de Programao Apoio - Linguagem C/C++ a. O lao terminar; b. Executa as instrues/comandos aps o lao;

Aula 03

Exemplo 05: Faa um programa para calcular a rea de um tringulo. Esse programa no pode permitir a entrada de dados invlidos, ou seja, medidas menores ou iguais a 0 (zero). Se as medidas estiverem erradas posicionar o cursor na mesma linha at que a medida seja digitada correta. ALGORITMO main(){ DECLARE Base, Altura, Area NUMRICO int Base, Altura, Area; REPITA do { LEIA Base gotoxy(1, 1); // Posiciona o cursor na Col/Lin AT QUE (Base > 0) cleareol(); // Limpa toda a Linha; REPITA cout << Digite a base: ; LEIA Altura cin >> Base; ATE QUE (Altura > 0) } while (Base > 0); Area <- Base * Altura / 2 do { ESCREVA Area; gotoxy(1, 2); // Posiciona o cursor na Col/Lin FIM_ALGORITMO cleareol(); cout << Digite a Altura: ; cin >> Altura; } while (Altura > 0); rea = Base * Altura / 2; cout << rea do tringulo: >> rea; getch(); } Exemplo 06: Mostrar um contador de 0 a 10: /* Imprimir um contador de 1 a 10 */ /* utilizando o lao do-while */ #include <stdio.h> main() { int Contador = 10; do { Contador++; printf("Contador: %d\n", Contador); } while (Contador<=10); getch(); }

Contador: 11

Explicao: no exemplo acima, era pra mostrar um contador de 0 a 10. Porm a varivel que utilizamos para contar, j se inicia com 10. Ento o programa no deveria executar os comandos que esto dentro do lao. Mas como utilizamos o lao do-while, e na sua prpria definio afirma que ele ser executado pelo menos uma vez, ento foi o que aconteceu. Ou seja, ele acrescentou 1 a varivel contador (que passou a ser 11) e mostrou o valor dessa varivel. Depois ele fez o teste se a varivel menor ou igual a 10, como 11 maior, ento o lao para de executar. Comando switch: possibilita a tomada de mltiplas decises baseada em uma expresso. Sintaxe: Swith (expresso)
Prof. Msc. Marcos da Silva Alves 11

Paradigma de Programao Apoio - Linguagem C/C++ { case <constante_1>: comando_1; case <constante_2>: comando_2; . . . case <constante_n>: comando_n; default: <comando_z> } Modo de execuo do switch: 1) A expresso avaliada; 2) Se houver um case com rtulo (constante) igual a expresso avaliada a. A execuo do programa continuar a partir do comando correspondente 3) Caso o valor encontrado no possua um rtulo correspondente a. A execuo continuar a partir do rtulo default. A clusula do default opcional; /*------------------------------------------------------------------------*/ /* Comando de Deciso switch. Digitar uma opo de menu. */ /*------------------------------------------------------------------------*/ #include <stdio.h> main() { char ch_1; printf("\tInclusao"); printf("\n\tAlteracao"); printf("\n\tExclusao"); printf("\n\n\nDigite a opcao: "); ch_1 = getche(); switch (ch_1) { case 'i': printf("\nOpcao escolhida: Inclusao"); break; case 'a': printf("\nOpcao escolhida: Alteracao"); break; case 'e': printf("\nOpcao escolhida: Exclusao"); break; default: printf("\nOpcao invalida!"); } getch();
Prof. Msc. Marcos da Silva Alves

Aula 03

12

Paradigma de Programao Apoio - Linguagem C/C++

Aula 03

} O comando break desvia o processamento para fora do switch. Se no tiver, executa os outros cases.

Prof. Msc. Marcos da Silva Alves

13