aula-alg1 [Modo de Compatibilidade] - DEINF/UFMAmaria/arqalg/aula-alg1.pdf · • Esquema genérico...

60
EMENTA Resolução de problemas e desenvolvimento de algoritmos: análise do problema, estratégias de solução e representação. Estruturação e modularização. Tipos de ALGORITMO I CH: 60 h Créditos: 4.0.0 - Código: 5588.9 Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 1 Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i) representação. Estruturação e modularização. Tipos de dados. Recursão e suas aplicações. Estudo de uma linguagem de programação. Depuração e documentação de programas.

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