aula-alg1 [Modo de Compatibilidade] - DEINF/UFMAmaria/arqalg/aula-alg1.pdf · • Esquema genérico...
Transcript of aula-alg1 [Modo de Compatibilidade] - DEINF/UFMAmaria/arqalg/aula-alg1.pdf · • Esquema genérico...
EMENTA
Resolução de problemas e desenvolvimento dealgoritmos: análise do problema, estratégias de solução erepresentação. Estruturação e modularização. Tipos de
ALGORITMO ICH: 60 h Créditos: 4.0.0 - Código: 5588.9
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 1Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
representação. Estruturação e modularização. Tipos dedados. Recursão e suas aplicações. Estudo de umalinguagem de programação. Depuração e documentaçãode programas.
Programa
� Algoritmos – Introdução• Conceitos de algoritmos;• Exemplos;• Dados e informações.
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 2Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
� Programas e Programação estruturada• Conceito de linguagem de programação;• Linguagem de programação: baixo e alto-nível;• Compilação e compiladores
Programa
� Criação de algoritmos• Roteiro para descrição de algoritmos;• Formas de representação de algoritmos
� Algoritmos e dados
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 3Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
� Algoritmos e dados• Tipos de dados;• Variáveis e constantes;• Operações básicas e operadores;• Esquema genérico de um algoritmo em pseudo-código.
Programa
� Algoritmos e estruturas de controle• Estruturas de controle básicas
• Estrutura de controle seqüencial;• Estrutura de controle de desvio condicional;• Estruturas de repetição;
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 4Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
• Estruturas de repetição;
• Uso de variáveis em algoritmos
� Tratamento de dados na Linguagem C• Tipos de dados em C;• Variáveis e constantes em C;• Variáveis locais e globais em C
Programa
� Estruturas de controle alternativas• Desvio condicional alternativo em C;• Desvio condicional com switch/case;
Algoritmos baseados em estruturas de dados
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 5Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
� Algoritmos baseados em estruturas de dados homogêneas• Conceito de vetores;• Algoritmos com vetores;• Implementação de vetores na Linguagem C.
Bibliografia� Bibliografia Básica
• Guimarães, A de M.; LAGES, N A.de C. Algoritmos e estruturas de dados, Rio de Janeiro, Ed.L.T.C.S.A ., 1994, 216pp.
• Herbert Schildt. C Completo e Total, Makron Books, 1997, 827 pp.
Bibliografia de Apoio
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 6Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
� Bibliografia de Apoio• FORBELLONE, André L. V.; Eberspächer, Henri F. Lógica de
Programação - A Construção de Algoritmos e Estruturas de Dados 2a. Edição. Makron Books. 2000.
• FARRER, H. e outros. Algoritmos Estruturados Editora Guanabara. 1985.
Bibliografia� Bibliografia de Apoio ( internet)
• http://www.inf.pucrs.br/~pinho/LaproI/DevC/Dev.html• Compilador dev-C++ ����
http://sourceforge.net/projects/dev-cpp/files/Binaries/Dev-C%2B%2B%204.9.9.2/devcpp-
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 7Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
C%2B%2B%204.9.9.2/devcpp-4.9.9.2_setup.exe/download?use_mirror=ufpr
• http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i
• http://www.deinf.ufma.br/~portela/• http://www.deinf.ufma.br/~maria/
Algoritmo
� ALGORITMO –• sequência de passos finitos com o objetivo de solucionar um problema.
• é um conjunto de passos (ações) que levam à solução de um determinado problema.
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 8Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
problema.
• Ex. Falar no telefone, trocar uma lâmpada
• Cada linha de um algoritmo chamamos de INSTRUÇÃO
Algoritmo� PORTUGUÊS ESTRUTURADO - tem como finalidade mostrar uma
notação para elaborações futuras de algoritmos, os quais serão utilizados na definição, criação e desenvolvimento de uma linguagem computacional ( Fortran, Clipper, C, pascal, Delphi, Visual-Objects) e sua documentação.
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 9Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Algoritmo
� PSEUDO-CÓDIGOS - formalismo para representar os algoritmos• Sintaxe:
Algoritmo “NomeDoAlgoritmo”;Cons:
.....
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 10Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
.....Var:
.....Procedimentos ou Funções
.......Inicio_algoritmo
corpo do algoritmo...Fim_algoritmo
Lógica de Programação INSTRUÇÕES ���� ALGORITMOS ���� PROGRAMAS ���� SOFTWARE ���� SISTEMAS
INSTRUÇÕES: informação que indica uma ação.
ALGORITMO: série de instruções ( linguagem humana).
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 11Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
PROGRAMAS: série de instruções legíveis ( lógica). Linguagem específica.
SOFTWARE: conjunto de programas.
SISTEMA: conjunto de software.
Exemplo de Algoritmo
Exem1 - DESCREVER A TROCA DE UMA LÂMPADA
1- Pegue uma escada2- Posicione-a embaixo da lâmpada3- Busque uma lâmpada nova
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 12Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
3- Busque uma lâmpada nova4- Suba a escada5- Retire a lâmpada velha6- Coloque a lâmpada nova
CADA LINHA ���� INSTRUÇÃOCONJUNTO ���� ALGORITMO.
Algoritmo
� LÓGICA DE PROGRAMAÇÃO –• técnica de encadear pensamentos para atingir determinado
objetivos.
� LINGUAGEM DE PROGRAMAÇÃO
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 13Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
� LINGUAGEM DE PROGRAMAÇÃO• Linguagem de máquina � Comunicação através de um
fenômeno físico. Foram escolhidos dois símbolos básicos [0 (zero) / 1 (um)].
• Linguagem de baixo nível ���� Linguagem de Montagem, também conhecida como assembly.
• Linguagem de alto nível � próxima do ser humano com alto poder de expressividade. (Ex. C, Pascal, Java).
Algoritmo
� LINGUAGEM DE PROGRAMAÇÃO
• Linguagem de máquina � Comunicação através de um fenômeno físico. Foram escolhidos dois símbolos básicos [0 (zero) / 1 (um)].
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 14Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
(zero) / 1 (um)].
• Linguagem de Montagem �Também conhecida como assembly, conhecida como uma linguagem de baixo nível
Algoritmo
� PROCESSANDO UM ALGORITMO
Algoritmo
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 15Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
108
Algoritmo para calcular a média de duas notasentrada
A média das notas é: 9
saída
Algoritmo ���� Portugol
algoritmo “SOMA_NOTA“var
N1,N2,MEDIA: realInicio_algoritmo
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 16Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
escreva(“Entre com as notas")leia(N1,N2)MEDIA= (N1+N2)/2escreva(“ A MEDIA = “, MEDIA)
Fim_algoritmo
Conceitos Básicos
VARIÁVEIS - É um local (endereço) na memória principalutilizado pelo programa para armazenar um determinadoconteúdo.
• Declaração de variáveis - devem ser declaradas no início do algoritmo
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 17Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
algoritmo• Sintaxe: • nome da variável: Tipo da variável.• Ex:
� Idade: inteiro� Raio: real
Conceitos Básicos
VARIÁVEIS• Tipos de Variáveis:
• INT A; ( Inteiro: 5, 10, -5)• REAL B; (Décimais, Fracionários: 5.4, -7.34)• STRING NOME; (Caractere, Literal, Alfanumérica: “maria”, “A”)
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 18Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
• STRING NOME; (Caractere, Literal, Alfanumérica: “maria”, “A”)• LOGICO R; (booleano: Verdadeiro e Falso)
CONSTANTES - São valores que não sofrem nenhuma variação no decorrer da execução do algoritmo
• PI = 3.14
Conceitos Básicos
EXPRESSÃO• Tipos de expressões:
� Aritméticas - São aquelas que usam operadores aritméticos e os operandos são constantes ou variáveis numéricas.
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 19Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
numéricas.
• Soma (+) Ex. (a + b)• Subtração (-) Ex. (a - b)• Mutiplicação (*) Ex. (a*b)• Divisão (/) Ex. (a/b)• Exponenciação (** ou ^ ) Ex. (a**b)• Resto (%) Ex. (a%b) (ou mod)
Conceitos BásicosATRIBUIÇÃO• Maneira de armazenar um dado em uma variável
• leia – abstrai o que vem da entrada padrão e armazena na variável
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 20Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
na variável• LEIA X
• Outra forma de atribuir valores: • X <- 10• Nome <- “Antonio”• Idade <- 20• Pi <- 3.14
Conceitos BásicosATRIBUIÇÃO
1� momento: A <- 10B <- 20AUX <- A
10 20
10
A B
AUX
Memória Principal
20 10
A B
AUX
Memória Principal
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 21Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
2� momento: A <- B
3� momento: B <- AUX
10
20 20
10
A B
AUX
Memória Principal
AUX
10
Conceitos BásicosSem a variável auxiliar (AUX)
1� momento: A <- 10B <- 20
10 20
A BMemória Principal
20 10
A B
AUX
Memória Principal
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 22Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
2� momento: A <- B
3� momento: B <- AUX
20 20A B
Memória Principal
AUX
10
Conceitos BásicosExemplo – SOMA DE DOIS NÚMEROS INTEIROS
Algoritmo “SomaDeInteiros”var
x, y, soma: inteiroinicio
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 23Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
inicioescreva(“Primeiro Numero:”)leia(x)escreva(“Segundo Numero:”)leia(y)soma <- x + yescreva(“A soma é: ”, soma)
fimalgoritmo
Conceitos BásicosExemplo – CÁLCULO DA ÁREA DE UM CIRCULO
algoritmo “CalculaArea”const
pi: realvar
r: real
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 24Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
r: realInicio
pi <- 3,14159265escreva(“Calculo da area”)escreva(“Informe o raio:”)leia(r)escreva(“A area da circunferencia eh:”, pi * r * r)
fimalgoritmo
Conceitos BásicosFunções Numéricas
pi Ângulo em Graus ���� ângulo Radiano
sen(x) Seno de um ângulo em radiano X <- ang * PI / 180
cos(x) Co-seno de um ângulo em radiano X <- ang * PI / 180
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 25Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
cos(x)
tan(x) tan de um ângulo em radiano X <- ang * PI / 180
abs(x) Valor Absoluto de um número Abs(-7) ���� 7
exp(x) Base do logaritmo neperiano Exp(3) ���� e³2.71828182846 **3
log(x) Logaritmo neperiano e um número
raizq(x) Raiz quadrada e um número positivo raiz (4) ���� � 4
Conceitos BásicosFunções Conversão de Tipos
Resposta
realint(11.5) Converte real em inteiro. ���� 12
realint(11) Converte inteiro em real . ���� 11.
strtam(“jose”) Retorna o número de caracteres. ���� 4.
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 26Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
strlem(“jose”,0) Retorna o elemento da posição ���� j
strnprim(“jose”,3) Retorna o elemento da posição ���� jos
Exercício de fixação – lista 1
Exercício de fixação - Lista1Utilizando comandos de sequencia - Faça os algoritmos
1 - Entre com uma data no formato ddmmaa e imprima no formato:dia: mês:ano:
2- Faça um algoritmo que leia e imprima seu nome.
3- Ler dois números e imprimi-los.
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 27Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
4- Ler um número inteiro e imprimir seu sucessor e seu antecessor.
5- Ler nome, endereço e telefone e imprimi-los.
6- Ler dois números inteiros e imprimir a seguinte saída:Dividendo:Divisor:Quociente:Resto:
7- Entrar com os valores dos catetos de um triângulo retângulo e imprimir a hipotenusa.
8- A pressão em um líquido varia com a profundidade de acordo com a fórmula : p= 0,03H , onde H é a profundidade. Dado o valor da profundidade H; calcule a pressão e imprima H,p
9 - Leia uma temperatura em graus centígrados e apresentá-las convertida em graus Fahrenheit. ( Dica: F = (9�C + 160)/5 )
Exercício de fixação 1Utilizando comandos de sequencia - Faça os algoritmos
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 28Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
( Dica: F = (9�C + 160)/5 )10 - Ler dois números para as variáveis A e B, efetuar a troca dos valores de forma que a variável A passe a ter o valor da variável B e que a variável B passe a ter o valor da variável A. Apresentar os valores trocados.
13 - Criar um algoritmo que, dado um número de conta corrente com três dígitos, retorne o seu dígito verificador, o qual é calculado da seguinte maneira:
Exemplo: número da conta � 235Somar o número da conta com o seu inverso: 235 + 532 = 767Multiplicar cada dígito pela sua ordem posicional e somar estes resultados: 7 * 1 = 7 - 6 * 2 = 12 - 7 * 3 = 21 ------ 7 + 12 + 21 = 40Digito verificar = último dígito da soma � 0
Exercício de fixação 1Utilizando comandos de sequencia - Faça os algoritmos
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 29Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Digito verificar = último dígito da soma � 0
VISUALIZANDO OS ALGORITMOS
• Utilizando Visualg
http://ultradownloads.uol.com.br/download/Visualg/
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 30Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
• Utilizando a linguagem C ���� dev-C+4.9.9.2
Conceitos Básicos
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 31Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Linguagem C• O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o
pela primeira vez usando um DEC PDP-11 rodando o sistema operacional UNIX.
• O C é derivado de uma outra linguagem: o B, criado por Ken Thompson. O B, por sua vez, veio da linguagem BCPL, inventada por Martin Richards.
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 32Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
• O C é uma linguagem de programação genérica que é utilizada para a criação de programas diversos como processadores de texto, planilhas eletrônicas, sistemas operacionais, programas de comunicação, programas para a automação industrial, gerenciadores de bancos de dados, programas de projeto assistido por computador, programas para a solução de problemas da Engenharia, Física, Química e outras Ciências, etc
• Estudaremos a estrutura do ANSI C, o C padronizado pela ANSI.
Linguagem C• Formada de funções;
• main() ���� é a função principal;
• { } ���� delimita blocos de comando;
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 33Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
• ( ) ���� lista de argumentos de uma função;
• /* comentários */
• ; ���� termina linha de comando.
Linguagem C conceitos básicos
• C é "Case Sensitive", isto é, maiúsculas e minúsculas fazem diferença. Se declarar uma variável com o nome soma ela serádiferente de Soma, SOMA, SoMa ou sOmA.
• Inicie o programa com a chamada do arquivo: <stdio.h>
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 34Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
• Inicie o programa com a chamada do arquivo: <stdio.h>#include <stdio.h>
(std = standard, padrão em inglês; io = Input/Output, entrada e saída ==> stdio = Entrada e saída padronizadas).
Linguagem C conceitos básicos
• ESTRUTURA DE UM PROGRAMA
/* isto é um comentário */#chamada de biblioteca main ()
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 35Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
main (){
declaração de variável; comandos;return(0);
}
Linguagem C conceitos básicos
• Use comentário: /* Um Primeiro Programa */.
• Todos os programas em C começam com uma função main()
#include <stdio.h> /* biblioteca de entrada/saída */
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 36Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
#include <stdio.h> /* biblioteca de entrada/saída *//* Um Primeiro Programa */
int main (){
printf ("Ola! Eu estou vivo!\n");return(0);
}
Linguagem CVARIÁVEIS
• Tipos de Variáveis: • INTEIRO ���� int A;• REAL ���� float A;• CARACTERE ���� char nome
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 37Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
• Ex. de Leitura de Caracterechar Ch;Ch='D';printf ("%c",Ch); /* imprime como caractere */printf ("%d",Ch); /* Imprime o caracter como inteiro *//*código ASCII correspondente ao caractere 'D' (d maiúsculo). */
Linguagem C LEITURA / ESCRITA
GETCHE ���� obtém o caractere de entrada e mostra no vídeo.
Ch = getche()
GETCH ���� obtém o caractere de entrada, mas mostra no vídeo
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 38Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
GETCH ���� obtém o caractere de entrada, mas mostra no vídeo
Ch = getch(c)
Chamar a biblioteca: #include <conio.h>
Linguagem C LEITURA / ESCRITA
GETCHAR ���� obtém o caractere de entrada cada vez que é chamada e retorna o mesmo com seu valor.
c = getchar()
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 39Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
PUTCHAR ���� irá exibir o conteúdo de c na STDOUT
putchar(c)
Chamar a biblioteca: #include <conio.h>
Linguagem C Exemplos - LEITURA / ESCRITA
#include <stdio.h>#include <conio.h>/* Este programa usa conio.h */
int main (){
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 40Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
{char Ch;Ch=getch(); /* não é padrão ANSI */putchar(Ch);
return(0);}
Linguagem C Exemplos - LEITURA / ESCRITA
#include <stdio.h>#include <conio.h>#include <cstdlib>
int main (){char Ch1,Ch2,c;printf("entre com um valor: ");
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 41Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Ch1=getche(); /* mostra o que esta sendo digitado */
c=getchar(); /* zerar a memória */printf("entre com um valor: ");Ch2=getch(); /* nao mostra o que esta sendo digitado */
printf("\n caracteres digitados: %c %c\n",Ch1,Ch2);printf("\n valores digitados: %d %d\n",Ch1,Ch2); system("pause");return(0);
}
Linguagem C LEITURA / ESCRITA FORMATADA
SCANF ���� lê caracteres de entrada padrão, interpretando-os de acordo com o formato especificado em argumentos de controle.
scanf (“%d”, &num);
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 42Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
scanf (“%d”, &num);
PRINTF ���� imprime seus argumentos na saída padrão, sob o controle do formato especificado.
printf (“o numero eh %d \n”, num);
Linguagem C LEITURA / ESCRITA FORMATADA
Caracteres de conversão:
d – espera-se um inteiro decimal na entrada.o - espera-se um inteiro octal.
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 43Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
x - espera-se um inteiro hexa.c – espera-se um único caractere na entrada.s - espera-se uma cadeia de caracteres na entrada.f - espera-se um número de ponto flutuante.
Linguagem C LEITURA / ESCRITA
• Função de leitura � scanf().
• Exemplo: scanf("%d",&Dias);
"%d" � leitura de um inteiro.
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 44Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
"%d" � leitura de um inteiro.&Dias � colocar o valor lido na variável Dias
• Função de escrita � printf().
• Exemplo: printf ("\n\n%d dias \n",Dias);
Linguagem C Exemplos - LEITURA / ESCRITA
#include <cstdlib> /* biblioteca de chamada de sistema */#include <iostream>
int main(){
int x;
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 45Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
int x; scanf("%d",&x); printf("%d",x);
system("PAUSE");return EXIT_SUCCESS;
}
Linguagem C LEITURA / ESCRITA FORMATADA
#include <stdio.h>#include <conio.h>/* Este programa usa conio.h */
int main2 (){
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 46Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
{char Ch;
scanf (%c”, &Ch) /* padrão ANSI */printf ("Voce pressionou a tecla %c",Ch);
return(0);}
STRING: Strings são vetores de chars. As strings devem ser igualadas elemento a elemento.
Sintaxe: char nome_da_string [tamanho];
FUNÇÕES:
USO DO STRING
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 47Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
gets() lê uma string do teclado. Sintaxe: gets (nome_da_string);
Declaração: char nome[ ] = "Maria da Silva";
Funções:
strlen - retorna o tamanho, em caracteres, de uma
USO DO STRING
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 48Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
strlen - retorna o tamanho, em caracteres, de uma string dada.
Sintaxe: s = strlen (nome);
strcpy - copia o conteúdo de uma string para outra e coloca um terminador de string.
Sintaxe: strcpy (destino, origem);
Funções:
strcat - concatena duas strings, adicionando o conteúdo da segunda ao final da primeira, além do terminador (\0).
USO DO STRING
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 49Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
(\0). Sintaxe:strcat (nome, nome2);
strncat – especifica o número de caracteres a serem copiados.
Sintaxe:strncat (nome, nome2,3);
Funções:
strcmp - compara os endereços de memória onde estão guardadas as strings.
Sintaxe: int strcmp (char *s1, char *s2);
USO DO STRING
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 50Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Sintaxe: int strcmp (char *s1, char *s2);
O valor de retorno é:menor que zero se s1 for menor que s2; igual a zero se s1 e s2 são iguais; maior que zero se s1 for maior que s2.
Funções:
As variantes mais usadas de strcmp são:strncmp - compara apenas os n primeiros caracteres das duas strings, sendo n um terceiro argumento.
USO DO STRING
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 51Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
stricmp - compara duas strings sem distinção entre maiúsculas e minúsculas.
Obs. A sintaxe é igual à de strcmp. Essa função não faz parte da biblioteca padrão, mas é comumente encontrada como extensão particular de várias delas.
Linguagem C LEITURA / ESCRITA NOME
#include <stdio.h>#include <cstdlib> int main () {
char nome[100]; printf ("Digite um nome: ");
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 52Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
printf ("Digite um nome: "); gets (nome); printf ("\n\nVoce digitou %s\n",nome); system("pause");return(0);
}
Linguagem C LEITURA / ESCRITA NOME
#include <stdio.h>#include <cstdlib> #include <string.h>
int main () {
char nome[100]; int s;
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 53Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
int s;printf ("Digite um nome: "); gets (nome); printf ("\n\nVoce digitou %s\n",nome); s = strlen (nome); printf ("\n\n%s Tem %d caracteres\n",nome,s);
system("pause");return(0);
}
Linguagem C LEITURA / ESCRITA NOME
#include <stdio.h>#include <cstdlib> #include <string.h>
int main () {
char nome[100],nome1[100];printf ("Digite um nome: ");
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 54Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
printf ("Digite um nome: "); gets (nome); printf ("\n\nVoce digitou %s\n",nome);
strcpy (nome1,nome);printf ("\n\n Copia ....%s\n",nome1);system("pause");return(0);
}
Linguagem C LEITURA / ESCRITA NOME
............
int main () {
char nome[100],nome1[100] ,str2[100];...........
printf ("Digite um sobrenome: ");
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 55Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
printf ("Digite um sobrenome: "); gets (nome1);strcpy (str2," ");strcat (str2,nome1);strcat (nome,str2);printf ("\n\n Nome completo ....%s\n",nome);...........
}
Linguagem C LEITURA / ESCRITA NOME
.........
int main () { .............
if (strcmp(nome,nome1))
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 56Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
if (strcmp(nome,nome1))printf ("\n\nNomes diferentes\n ");else printf ("\n\nNomes são iguais.\n");
.......}
Conceitos Básicos
• OPERADORES DE INCREMENTO / DECREMENTO
SOMA ���� ++ ++n ���� incrementa antes de usar o valor
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 57Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
n++ ���� incrementa após usar o valor
Ex. n = 5;x = n++ /* atribue 5 a x */x = ++n /* atribue 6 a x */
Conceitos Básicos
• OPERADORES DE INCREMENTO / DECREMENTO
SUBTRAÇÃO ���� ----n ���� decrementa antes de usar o valor
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 58Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
n-- ���� decrementa após usar o valor
Ex. n = 5;x = n-- /* atribue 5 a x */x = --n /* atribue 4 a x */
Conceitos Básicos - resumoLEIA UMA VARIÁVEL E IMPRIMA
PROBLEMA ALGORITMO LING. C
#include <stdio.h>#include <cstdlib>
“LER/IMP” algoritmo “LER/IMP” int main ()
Inicio {
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 59Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
var num: real int n;
escreva(“qual o numero?”); printf ("qual o valor do numero");
Leia num leia num scanf ("%d", &n);
Escreva num escreva (“numero =“, num); printf ("valor do numero %d\n",n);
fimalgoritmo system("pause");return(0);
}
Algoritmo
• SENTENÇAS E BLOCOS
• sentenças são seguidas de � ;
• x = 0;
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dadosJaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 60Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
• x++;• as chaves { e } são usadas para agrupar declarações e
sentenças dentro de uma “sentença composta” ou “blocos”
Exercício de fixação – passe para a linguagem C a lista 1