Você está na página 1de 60

ALGORITMO I

CH: 60 h Créditos: 4.0.0 - Código: 5588.9

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
dados. Recursão e suas aplicações. Estudo de uma
linguagem de programação. Depuração e documentação
de programas.

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)
Programa
Algoritmos – Introdução
• Conceitos de algoritmos;
• Exemplos;
• Dados e informações.

Programas e Programação estruturada


• Conceito de linguagem de programação;
• Linguagem de programação: baixo e alto-nível;
• Compilação e compiladores

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 2
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Programa
Criação de algoritmos
• Roteiro para descrição de algoritmos;
• Formas de representação de algoritmos

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.

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 3
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
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;
• 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

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 4
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Programa
Estruturas de controle alternativas
• Desvio condicional alternativo em C;
• Desvio condicional com switch/case;

Algoritmos baseados em estruturas de dados


homogêneas
• Conceito de vetores;
• Algoritmos com vetores;
• Implementação de vetores na Linguagem C.

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 5
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
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
• 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.

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 6
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
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-
4.9.9.2_setup.exe/download?use_mirror=ufpr
• http://sites.google.com/site/yurilacerda/disciplinas/algoritm
os-e-programao-i
• http://www.deinf.ufma.br/~portela/
• http://www.deinf.ufma.br/~maria/

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 7
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
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.

• Ex. Falar no telefone, trocar uma lâmpada

• Cada linha de um algoritmo chamamos de INSTRUÇÃO

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 8
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
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 dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 9
Yuri 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:
.....
Var:
.....
Procedimentos ou Funções
.......
Inicio_algoritmo
corpo do algoritmo...
Fim_algoritmo

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 10
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
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).

PROGRAMAS: série de instruções legíveis ( lógica). Linguagem específica.

SOFTWARE: conjunto de programas.

SISTEMA: conjunto de software.

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 11
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Exemplo de Algoritmo

Exem1 - DESCREVER A TROCA DE UMA LÂMPADA

1- Pegue uma escada


2- Posicione-a embaixo da lâmpada
3- Busque uma lâmpada nova
4- Suba a escada
5- Retire a lâmpada velha
6- Coloque a lâmpada nova

CADA LINHA INSTRUÇÃO


CONJUNTO ALGORITMO.
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 12
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Algoritmo
LÓGICA DE PROGRAMAÇÃO –
• técnica de encadear pensamentos para atingir determinado
objetivos.

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).
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 13
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
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)].

• Linguagem de Montagem Também conhecida como


assembly, conhecida como uma linguagem de baixo nível

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 14
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Algoritmo
PROCESSANDO UM ALGORITMO

Algoritmo
10 para calcular
A média das
8 a média de
notas é: 9
entrada duas notas saída

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 15
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Algoritmo Portugol
algoritmo “SOMA_NOTA“
var
N1,N2,MEDIA: real
Inicio_algoritmo
escreva(“Entre com as notas")
leia(N1,N2)
MEDIA= (N1+N2)/2
escreva(“ A MEDIA = “, MEDIA)
Fim_algoritmo

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 16
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Conceitos Básicos
VARIÁVEIS - É um local (endereço) na memória principal
utilizado pelo programa para armazenar um determinado
conteúdo.
• Declaração de variáveis - devem ser declaradas no início do
algoritmo
• Sintaxe:
• nome da variável: Tipo da variável.
• Ex:
Idade: inteiro
Raio: real

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 17
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
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”)
• 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

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 18
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
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.

• 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)
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 19
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Conceitos Básicos
ATRIBUIÇÃO
• Maneira de armazenar um dado em uma variável

• leia – abstrai o que vem da entrada padrão e armazena


na variável
• LEIA X
• Outra forma de atribuir valores:
• X <- 10
• Nome <- “Antonio”
• Idade <- 20
• Pi <- 3.14

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 20
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Conceitos Básicos
Memória Principal Memória Principal
ATRIBUIÇÃO
A B A B
1 momento: A <- 10 10 20
B <- 20 20 10
AUX
AUX <- A 10 AUX
10
Memória Principal
2 momento: A <- B A B
20 20
AUX 3 momento:
10 B <- AUX
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 21
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Conceitos Básicos
Sem a variável auxiliar (AUX) Memória Principal
Memória Principal A B
A B
1 momento: A <- 10 20 10
10 20
B <- 20
AUX
10
Memória Principal

2 momento: A <- B A B
20 20
3 momento:
B <- AUX
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 22
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Conceitos Básicos
Exemplo – SOMA DE DOIS NÚMEROS INTEIROS

Algoritmo “SomaDeInteiros”
var
x, y, soma: inteiro
inicio
escreva(“Primeiro Numero:”)
leia(x)
escreva(“Segundo Numero:”)
leia(y)
soma <- x + y
escreva(“A soma é: ”, soma)
fimalgoritmo

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 23
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Conceitos Básicos
Exemplo – CÁLCULO DA ÁREA DE UM CIRCULO

algoritmo “CalculaArea”
const
pi: real
var
r: real
Inicio
pi <- 3,14159265
escreva(“Calculo da area”)
escreva(“Informe o raio:”)
leia(r)
escreva(“A area da circunferencia eh:”, pi * r * r)
fimalgoritmo

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 24
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Conceitos Básicos
Funçõ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

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


Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 25
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Conceitos Básicos
Funçõ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.

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

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 26
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Exercício de fixação - Lista1
Utilizando 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.

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:

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 27
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Exercício de fixação 1
Utilizando comandos de sequencia - Faça os algoritmos

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 )
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.

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 28
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Exercício de fixação 1
Utilizando comandos de sequencia - Faça os algoritmos

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 235
Somar o número da conta com o seu inverso: 235 + 532 = 767
Multiplicar cada dígito pela sua ordem posicional e somar estes resultados:
7 * 1 = 7 - 6 * 2 = 12 - 7 * 3 = 21 ------ 7 + 12 + 21 = 40
Digito verificar = último dígito da soma 0

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 29
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
VISUALIZANDO OS ALGORITMOS

• Utilizando Visualg

http://ultradownloads.uol.com.br/download/Visualg/

• Utilizando a linguagem C dev-C+4.9.9.2

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 30
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Conceitos Básicos

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 31
Yuri 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.

• 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.


Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 32
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Linguagem C
• Formada de funções;

• main() é a função principal;

• {} delimita blocos de comando;

• () lista de argumentos de uma função;

• /* comentários */

• ; termina linha de comando.

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 33
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
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>


#include <stdio.h>

(std = standard, padrão em inglês; io = Input/Output,


entrada e saída ==> stdio = Entrada e saída padronizadas).

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 34
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Linguagem C
conceitos básicos
• ESTRUTURA DE UM PROGRAMA

/* isto é um comentário */
#chamada de biblioteca
main ()
{
declaração de variável;
comandos;
return(0);
}

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 35
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
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 */


/* Um Primeiro Programa */
int main ()
{
printf ("Ola! Eu estou vivo!\n");
return(0);
}
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 36
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Linguagem C
VARIÁVEIS
• Tipos de Variáveis:
• INTEIRO int A;
• REAL float A;
• CARACTERE char nome

• Ex. de Leitura de Caractere


char 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). */

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 37
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
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

Ch = getch(c)

Chamar a biblioteca: #include <conio.h>

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 38
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Linguagem C
LEITURA / ESCRITA

GETCHAR obtém o caractere de entrada cada vez que é


chamada e retorna o mesmo com seu valor.

c = getchar()

PUTCHAR irá exibir o conteúdo de c na STDOUT

putchar(c)

Chamar a biblioteca: #include <conio.h>

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 39
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Linguagem C
Exemplos - LEITURA / ESCRITA
#include <stdio.h>
#include <conio.h>
/* Este programa usa conio.h */

int main ()
{
char Ch;
Ch=getch(); /* não é padrão ANSI */
putchar(Ch);

return(0);
}

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 40
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Linguagem C
Exemplos - LEITURA / ESCRITA
#include <stdio.h>
#include <conio.h>
#include <cstdlib>

int main ()
{
char Ch1,Ch2,c;
printf("entre com um valor: ");
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);
}
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 41
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
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);

PRINTF imprime seus argumentos na saída padrão, sob o


controle do formato especificado.

printf (“o numero eh %d \n”, num);

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 42
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Linguagem C
LEITURA / ESCRITA FORMATADA
Caracteres de conversão:

d – espera-se um inteiro decimal na entrada.


o - espera-se um inteiro octal.
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.

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 43
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Linguagem C
LEITURA / ESCRITA

• Função de leitura scanf().

• Exemplo: scanf("%d",&Dias);

"%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);


Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 44
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Linguagem C
Exemplos - LEITURA / ESCRITA
#include <cstdlib> /* biblioteca de chamada de sistema */
#include <iostream>

int main()
{
int x;
scanf("%d",&x);
printf("%d",x);

system("PAUSE");
return EXIT_SUCCESS;
}

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 45
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Linguagem C
LEITURA / ESCRITA FORMATADA

#include <stdio.h>
#include <conio.h>
/* Este programa usa conio.h */

int main2 ()
{
char Ch;

scanf (%c”, &Ch) /* padrão ANSI */


printf ("Voce pressionou a tecla %c",Ch);

return(0);
}

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 46
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
USO DO STRING
STRING: Strings são vetores de chars. As strings devem ser
igualadas elemento a elemento.
Sintaxe: char nome_da_string [tamanho];

FUNÇÕES:

gets() lê uma string do teclado.


Sintaxe: gets (nome_da_string);

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 47
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
USO DO STRING
Declaração: char nome[ ] = "Maria da Silva";

Funções:

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);
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 48
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
USO DO STRING

Funções:

strcat - concatena duas strings, adicionando o conteúdo


da segunda ao final da primeira, além do terminador
(\0).
Sintaxe:strcat (nome, nome2);

strncat – especifica o número de caracteres a serem


copiados.
Sintaxe:strncat (nome, nome2,3);

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 49
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
USO DO STRING

Funções:

strcmp - compara os endereços de memória onde


estão guardadas as strings.
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.

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 50
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
USO DO STRING
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.

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.

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 51
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Linguagem C
LEITURA / ESCRITA NOME

#include <stdio.h>
#include <cstdlib>
int main ()
{
char nome[100];
printf ("Digite um nome: ");
gets (nome);
printf ("\n\nVoce digitou %s\n",nome);
system("pause");
return(0);
}

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 52
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Linguagem C
LEITURA / ESCRITA NOME
#include <stdio.h>
#include <cstdlib>
#include <string.h>

int main ()
{
char nome[100];
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);
}

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 53
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Linguagem C
LEITURA / ESCRITA NOME
#include <stdio.h>
#include <cstdlib>
#include <string.h>

int main ()
{
char nome[100],nome1[100];
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);
}

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 54
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Linguagem C
LEITURA / ESCRITA NOME
............

int main ()
{
char nome[100],nome1[100] ,str2[100];
...........

printf ("Digite um sobrenome: ");


gets (nome1);
strcpy (str2," ");
strcat (str2,nome1);
strcat (nome,str2);
printf ("\n\n Nome completo ....%s\n",nome);
...........
}
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 55
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Linguagem C
LEITURA / ESCRITA NOME
.........

int main ()
{
.............

if (strcmp(nome,nome1))
printf ("\n\nNomes diferentes\n ");
else printf ("\n\nNomes são iguais.\n");
.......
}

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 56
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Conceitos Básicos

• OPERADORES DE INCREMENTO / DECREMENTO

SOMA ++
++n incrementa antes de usar o valor
n++ incrementa após usar o valor

Ex. n = 5;
x = n++ /* atribue 5 a x */
x = ++n /* atribue 6 a x */

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 57
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Conceitos Básicos

• OPERADORES DE INCREMENTO / DECREMENTO

SUBTRAÇÃO --
--n decrementa antes de usar o valor
n-- decrementa após usar o valor

Ex. n = 5;
x = n-- /* atribue 5 a x */
x = --n /* atribue 4 a x */

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 58
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Conceitos Básicos - resumo
LEIA UMA VARIÁVEL E IMPRIMA
PROBLEMA ALGORITMO LING. C

#include <stdio.h>
#include <cstdlib>
“LER/IMP” algoritmo “LER/IMP” int main ()

Inicio {

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);
}
Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 59
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Algoritmo
• SENTENÇAS E BLOCOS

• sentenças são seguidas de ;


• x = 0;
• 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

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de dados


Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 60
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)

Você também pode gostar