Você está na página 1de 49

Universidade do Estado do Rio de Janeiro Instituto de Matemtica e Estatstica

Linguagem de Programao I
(Programao de Computadores I)

Soraia Pacheco Felcio, M.Sc. soraiapas@gmail.com

Objetivo do Curso
Capacitar o aluno para desenvolver programas empregando uma linguagem de alto poder com orientao cientfica.

Ementa do Curso
Introduo Sintaxe Funes Bsicas Estruturas de Controle Matrizes Ponteiros Funes Estruturas de Dados Alocao Dinmica de Memria Manipulao de Arquivos

Bibliografia
Apostilas sobre C;
Fundamentos da Programao de Computadores Ana Fernanda G. Ascencio, Edilene Aparecida V. De Campos, 2 Ed., Pearson Prentice Hall, 2007. C Completo e Total Herbert Schildt, 3 Edio, MAKRON Books.

C: a linguagem de Programao Padro ANSI Brian W. Kernighan, Dennis M. Ritchie.

Avaliao e Contato
2 provas => P1 e P2 (9,0 pontos) Dinmicas => D11, D12, D21, D22 (0,5 pontos) Dinmicas Extras => DE1 e DE2 (0,5 pontos) Listas => L1 e L2 (0,5 pontos) Mdia = (N1+N2)/2 N1 = P1 + D11 + D12 + DE1 + L1 N2 = P2 + D21 + D22 + DE2 + L2 Horrio aulas: Seg : N3N4 ( Labime (VIP) / SALA: 6118 ) Qua : N3N4 (Labime(VIP)) Email: soraiapas@gmail.com

Regras para Entrega das Listas


Os arquivos devero ser enviados compactados; O nome do arquivo deve seguir a seguinte regra: <NOME_ALUNO+SOBRENOME>+_+LISTA+<NUMERO>.ZIP Exemplo: SORAIAPACHECO_LISTA1.ZIP Os arquivos devero ser enviados para Email: soraiapas@gmail.com O assunto do email deve ser: UERJ + <NOME DO ALUNO> + LISTA + <NUMERO> Exemplo: UERJ Soraia Pacheco Lista1

AVISOS SOBRE ENTREGA DAS LISTAS:


NO SERO ACEITAS LISTAS QUE ESTEJAM DESRESPEITANDO AS REGRAS DESCRITAS ANTERIORMENTE. NO SERO ACEITAS LISTAS FORA DO PRAZO DETERMINADO NO CRONOGRAMA.

Cronograma
Incio Aulas Dinmica 1 (D11) Dinmica 2 (D12) Lista 1 (Entrega at) Simulado P1
Prova 1 Dinmica 3 (D21) Dinmica 4 (D22) Lista 2 (Entrega at) Simulado P2 Prova 2 Reposio Simulado Final ltima Aula Prova Final Fim Perodo

08/08/2011 31/08/2011 26/09/2011 01/10/2011 03/10/2011


05/10/2011 19/10/2011 26/10/2011 01/11/2011 07/11/2011 09/11/2011 23/11/2011 05/12/2011 30/11/2011 07/12/2011 21/12/2011

INTRODUO

Algoritmos
O que so algoritmos?
Um algoritmo uma seqncia de instrues ordenadas de forma lgica para a resoluo de uma determinada tarefa ou problema.

Algoritmos

Algoritmos - reforando
algoritmo composto de um conjunto FINITO de passos, em que cada PASSO possui uma ou mais operaes. algoritmo deve ter FIM ! nmero FINITO de PASSOS). (aps concluir um

algoritmo deve possibilitar sua traduo em um procedimento computacional (PROGRAMA).

Exemplo:
At as coisas mais simples podem ser descritas por sequncias lgicas. Algoritmo: chupar uma bala Pegar uma bala Retirar o papel Chupar a bala Jogar o papel no lixo

Este algoritmo no pode ser implementado computacionalmente atravs de uma linguagem de programao.

Exemplo:
Problema: A atividade de um caixa de supermercado . Algoritmo: 1- Realizar leitura do cdigo de barras dos produtos; 2- informar o valor total das compras; 3- receber o pagamento;

Formas de Expresso de um Algoritmo


Linguagem natural: Os algoritmos so expressos diretamente em linguagem natural. Fluxograma: Esta um representao grfica que emprega formas geomtricas padronizadas para indicar as diversas aes e decises que devem ser executadas para resolver o problema. Pseudo-linguagem: Emprega uma linguagem intermediria entre a linguagem natural e uma linguagem de programao para descrever os algoritmos.

Linguagem formal (programa): refere-se prpria linguagem de programao.

Formas de Expresso de um Algoritmo


Linguagem natural: clculo do zero da equao ax+b=0 1. Incio de programa 2. ler a, b 3. se a diferente de 0 ento calcula o valor de x (ax+b=0) imprimir valor de x seno imprimir No h zero 4. Fim de programa

Formas de Expresso de um Algoritmo


Fluxograma: clculo do zero da equao ax+b=0

Formas de Expresso de um Algoritmo


Pseudo-cdigo: clculo do zero da equao ax+b=0
1. Incio de programa 2. ler a, b 3. se a0 ento x = -b/a imprimir valor do zero x seno imprimir No h zero fim-se 4. Fim de programa

Formas de Expresso de um Algoritmo


Linguagem de Programao C: clculo do zero da equao ax+b=0
#include <stdio.h> #include<conio.h> main() { float a, b, x; printf("Entre com os coeficientes da equacao.\n"); scanf("%f %f", &a, &b); if (a != 0) { x = -b/a; printf("O valor de x = %f\n",x); } else printf("No existe zero"); getch(); return 0; }

Algoritmo Computacional
Sequncia ordenada e finita, de operaes bem definidas e eficazes, operando sobre dados; Deve terminar num perodo de tempo finito e plausvel; Produzir um resultado ou indicar que no possvel encontr-lo.

Exemplo:
Calcular a mdia de alunos:

Receba a nota da prova mensal


Receba a nota da prova bimestral Calcule a mdia com a frmula media=(mensal+bimestral)/2 Exiba a mdia na tela

Exemplo:
O programa que realiza a tarefa anterior pode ser escrito em uma pseudo linguagem da seguinte forma:
PROGRAMA calc_media VAR mensal,bimestral,media: inteiro
INICIO mensal:=bimestral:=media:=0 ESCREVA Digite a nota mensal: LEIA mensal ESCREVA Digite a nota bimestral: LEIA bimestral media:=(mensal+bimestral)/2 ESCREVA A mdia do aluno : ESCREVA media FIM

Linguagem de Programao
Uma linguagem de programao um mtodo padronizado para expressar instrues para um computador.

um conjunto de regras sintticas e semnticas usadas para definir um programa de computador.

Linguagem de Programao
Uma linguagem permite que um programador especifique precisamente sobre quais dados um computador vai atuar, como estes dados sero armazenados ou transmitidos e quais aes devem ser tomadas sob vrias circunstncias.

Linguagem de Programao
Existem dois tipos de linguagens de programao: as de baixo nvel e as de alto nvel. Os computadores interpretam tudo como nmeros em base binria. As linguagens de baixo nvel so interpretadas diretamente pelo computador, tendo um resultado rpido, porm muito difcil e incmodo se trabalhar com elas.

Linguagem de Programao
J as linguagens de alto nvel so mais fceis de se trabalhar e de entender. Elas no so interpretadas diretamente pelo computador, sendo necessrio traduzi-las para linguagem de mquina.

Revisando Conceitos de Algoritmos


Estrutura Bsica de um Algoritmo
PROGRAMA <identificador>

CONST <declarao de constantes>


VAR <declarao de variveis> INICIO <comandos> FIM

Revisando Conceitos de Algoritmos


Declarao de Variveis e Comandos de Atribuio - Declarao <identificador> : tipo Exemplo: - Atribuio nota: real

nome_var:= <valor>
Exemplo: nota:= 9.3

Revisando Conceitos de Algoritmos


Operadores Aritmticos
+ * / ^ Adio Subtrao Multiplicao Diviso Exponenciao

Operadores Especiais

% (MOD) Retorna o resto da diviso entre 2 nmeros inteiros. DIV Retorna o valor inteiro que resulta da diviso entre 2 nmeros inteiros

Revisando Conceitos de Algoritmos


Operadores Relacionais
> < >= <= = <> Maior que Menor que Maior ou igual a Menor ou igual a Igual a Diferente de

Operadores Lgicos
Retorna verdadeiro se ambas as partes da expresso lgica forem verdadeiras. Basta que uma parte da expresso lgica seja OU VERDADEIRA para retornar VERDADEIRO. Inverte o estado de uma expresso lgica, ou NO seja, de VERDADEIRO passa para FALSO e vice-versa. E

Revisando Conceitos de Algoritmos


Tipos de Dados
Tipos Primitivos INTEIRO, REAL, CARACTER, LGICO. Tipos Sub-faixa de Dados Utilizam tipos primitivos, porm possibilitam a atribuio de mais de um valor a uma mesma varivel. Geralmente, utiliza-se para vetores e matrizes. Tipo Escalares de Dados Tipos de dados diferentes daqueles oferecidos pela linguagem. O programador cria o seu prprio tipo de dado.
Exemplo: Tipo cores=(azul, amarelo, vermelho);

Revisando Conceitos de Algoritmos


Comandos de Entrada/Sada de Dados
Entrada de Dados
LEIA (<<varivel>>) LEIA(<<varivel>>,..., <<varivel>>) Exemplo: LEIA (nota)

Sada de Dados
ESCREVA(<<varivel>>) ESCREVA('<<texto>>') ESCREVA(<<expresso>>) ESCREVA(<<varivel>>,'<<texto>>',<<exp resso>>) Exemplos: ESCREVA(nome,idade) ESCREVA('Nome: ',nome)

Revisando Conceitos de Algoritmos


Exemplo: Faa um algoritmo para ler dois nmeros inteiros e imprimi-los.
PROGRAMA lernum VAR n1,n2: INTEIRO INCIO ESCREVA('Primeiro nmero: ') LEIA(n1) ESCREVA('Segundo nmero: ') LEIA(n2) ESCREVA('Primeiro nmero : ', n1) ESCREVA('Segundo nmero : ', n2) FIM

Revisando Conceitos de Algoritmos


Estrutura de Seleo
SE condio ENTO <<comando1>> ... <<comandon>> SENO <<comando1>> ... <<comandon>> FIM-SE

Exemplo:
1. 2. 3. 4. digitar os preos dos produtos; informar o valor total das compras; receber o pagamento; se quantia recebida > valor total para compras calcular troco fornecer troco

ento

Revisando Conceitos de Algoritmos


Alternativa de Mltiplas Escolhas
ESCOLHA (expresso)
INICIO caso <<condio1>>: <<comando1>> caso <<condio2>>: <<comando1>> ... caso <<condion>>: <<comando1>> caso contrario: <<comando1>> FIM

... <<comandon>>
... <<comandon>> ... <<comandon>> ... <<comandon>>

Revisando Conceitos de Algoritmos


Alternativa de Mltiplas Escolhas
Exemplo: PROGRAMA menu VAR opcao,idade: inteiro nome: caracter INICIO ESCREVA('Menu') ESCREVA('1 Ler dados ') ESCREVA('2 Imprimir dados ') ESCREVA('Informe a opo: ') LEIA(opcao) ESCOLHA (opcao) INICIO caso 1: LEIA(nome) LEIA(idade) caso 2: ESCREVA('Nome: ',nome) ESCREVA('Idade: ',idade) caso contrario: ESCREVA('Opo invlida!!!') FIM

Exerccio - Algoritmos

Faa um algoritmo que leia um nmero inteiro, informe se este nmero par ou mpar e imprima seu sucessor e seu antecessor.

Resoluo
Programa alg1 VAR n1:inteiro INCIO escreva(Informe o 1 nmero) leia(n1) Se (n1 % 2=0) ento escreva(Nmero par) Seno escreva(Nmero mpar) escreva(Nmero lido: ,n1) escreva(Antecessor: ,n1-1) escreva(Sucessor: , n1+1) FIM

Revisando Conceitos de Algoritmos


Estruturas de Repetio
enquanto condio faa ao

Exemplo:
No exemplo inicial, supor que a caixa no saiba a quantidade de produtos, cujos preos devem ser registrados. Algoritmo: 1- enquanto houver produto com preo ainda no registrado faa ler o preo de um produto digit-lo 2- Informar o valor total das compras; 3- Receber o pagamento; 4- se a quantia recebida > valor total para as compras Ento calcular troco Fornecer troco

Revisando Conceitos de Algoritmos


Estruturas de Repetio
para <varivel> de <inicio> at <fim> faa ao

Exemplo:
Algoritmo: 1- para i=1 at N faa ler o preo de um produto digit-lo 2- Informar o valor total das compras; 3- Receber o pagamento; 4- se a quantia recebida > valor total para as compras ento calcular troco fornecer troco

Revisando Conceitos de Algoritmos


Estruturas de Repetio
repita ao at condio

Exemplo:
Algoritmo: 1- repita ler o preo de um produto digit-lo at cdigo produto = 0 2- Informar o valor total das compras; 3- Receber o pagamento; 4- se a quantia recebida > valor total para as compras ento calcular troco fornecer troco

Exerccios - Algoritmos
1. Faa um algoritmo para somar os nmeros pares naturais < 100 e imprimir o resultado ao final. 2. Faa um algoritmo para calcular n!, onde n ser informado pelo usurio. 3. Escreva um algoritmo que l um nmero no determinado de valores para a, todos inteiros e positivos, um de cada vez. Calcule e escreva a mdia aritmtica dos valores lidos, a quantidade de valores pares, a quantidade de valores mpares, a percentagem de valores pares e a percentagem de valores mpares. 4. Escrever um algoritmo que gera os nmeros de 1000 a 1999 e escreve aqueles que divididos por 11 do resto 5. 5. Escreva um algoritmo que leia um conjunto de 20 nmeros inteiros e mostre qual foi o maior e o menor nmero fornecido.

Resoluo
Programa Alg2 VAR cont,soma: inteiro INICIO cont:=1 soma:=0 enquanto (cont<100) faa se (cont % 2 = 0) ento soma:=soma+cont cont:=cont+1 fim-enquanto Escreva('Soma dos nmeros pares <100: ',soma) FIM

Resoluo
Programa Alg3 VAR n,fat,i: inteiro INICIO fat:=1 para i:=1 at n faa fat:=fat*i Fim-para Fim-se Escreva('Fatorial de ',n,' ',fat) FIM

Programa Alg4 VAR a,n,npar,nimpar,soma: inteiro media,porcp,porci:real INICIO soma:=0 npar:=0 nimpar:=0 porcp:=0.0 porci:=0.0 Escreva('Informe o valor de a: (-1 para terminar)') Leia(a) enquanto (a<>-1) faa soma:=soma+a se (a % 2=0) ento npar:=npar+1 seno nimpar:=nimpar+1 Fim-se Escreva('Informe o valor de a: (-1 para terminar)') Leia(a) Fim-enquanto media:=soma/(npar+nimpar) porcp:=npar/(npar+nimpar)*100 porci:=nimpar/(npar+nimpar)*100 Escreva('Mdia: ',media,'Total pares: ',npar,' Total mpar: ',nimpar) Escreva('Porcentagem de pares: ',porcp,' Porcentagem de mpares: ',porci) FIM

Resoluo

Resoluo
Programa Alg5 VAR i: inteiro INICIO para i:=1000 at 1999 faa se (i % 11 = 5) ento Escreva(i) fim-se Fim-para FIM

Resoluo
Programa Alg6 VAR i,n,maior,menor: inteiro INICIO Escreva('Informe um nmero: ') Leia(n) menor:=n maior:=n para i:=2 at 20 faa Escreva('Informe um nmero: ') Leia(n) se (n>maior) ento maior:=n Fim-se se (n<menor) ento menor:=n Fim-se Fim-para Escreva('Maior nmero:',maior,' Menor nmero: ',menor) FIM

Exerccio
A serie de fibonacci tem como dados os dois primeiros termos da srie que so, respectivamente 1 e 1. A partir deles, os demais termos so construdos pela seguinte regra Tn = tn-1 +tn-2. A regra diz que o prximo termo obtido pela soma dos dois termos anteriores. Escreva um algoritmo que gere os 30 primeiros termos da Srie de Fibonacci e calcule e escreva a soma desses termos.

Exemplo:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...

Resposta
Programa Fibonacci VAR Atual, proximo, n: inteiro INICIO atual = 0 proximo = 1 n = 30 Escreva (proximo + ); enquanto n > 2 faa: soma = atual + proximo Escreva (soma + ) atual = proximo proximo = soma n = n 1; Fim do loop FIM