Construção de Algoritmos
Construção de Algoritmos
AULA 02
Aquiles Burlamaqui
UERN
2007.1
Professor: Aquiles Burlamaqui
Construção de Algoritmos
…previously
 Apresentação da Disciplina
 Definição de algoritmo
 Conceitos de memória, variáveis e
constantes.
 Tipos básicos de dados
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Variáveis
 Guardar dados
 Nome
 Tipo
 Informação
Pseudocódigo
<Tipo>:<Lista de Variáveis
Ex:Inteiro: idade
Real : media,n1,n2,n3,n4,mf
Lógico : passou, flag
Literal : letra
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Variáveis
 Existem algumas regras básicas que
regulam a o batismo de variáveis. Estas
regras básicas são:
 Todo nome só pode conter letras e dígitos;
 O caractere "_" é contado como uma letra;
 Todo primeiro caractere deve ser sempre uma
letra;
 Letras maiúsculas e minúsculas são
consideradas caracteres diferentes;
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Constantes
 Reserva um espaço na memória acessado através do seu
endereço que é vinculado no algoritmo a um nome;
 Esse espaço possui tamanho necessário para guardar
seu tipo de dado, e guarda um valor fixo do início ao
final do programa;
 Sintaxe:
 Constante <nome_da_constante> = <valor>;
 Ex:
 Constante pi = 3,14;
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Conteúdo Programático

Unidade I

Fundamentos de Lógica de Programação










Estruturas de Dados Homogêneas (vetores e matrizes)
Unidade II


Estruturas de Dados Heterogêneas (registros)
Modularização






Algoritmo (metalinguagem)
Conceitos de memória, variáveis e constantes.
Tipos básicos de dados
Operadores aritméticos, relacionais e lógicos.
Comandos básicos de entrada e saída e atribuição
Conceito de bloco de comandos
Estruturas de controle de fluxo – condicionais (se, se-senão e caso)
Estruturas de controle de fluxo – repetições (para, enquanto e repita-enquanto)
Variáveis locais e globais
Funções
Passagem de parâmetros por valor e por referência
Funções recursivas
Biblioteca de funções
Unidade III


Algoritmos de Busca
Ponteiros




Conceitos
Operador endereço e operador de acesso indireto
Alocação dinâmica de memória
Arquivo
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Expressões
 Expressão
 é uma combinação de variáveis, constantes e
operadores que, uma vez avaliada, resulta num valor
 Operadores
 Quanto ao número de operandos
 Unários
 Binários
 Quanto ao tipo de dado
 Operadores Aritméticos
 Operadores Lógicos
 Operadores Literais
 Operadores Relacionais
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Operadores Aritméticos
Operador Tipo
Operação
Prioridade
+
binário
adição
4
“
subtração
4
*
“
multiplicação
3
/
“
divisão
3
**
“
exponenciação
2
+
unário manutenção de sinal 1
“
inversão de sinal
1
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Operadores Aritméticos
 Vamos considerar alguns exemplos para mostrar
como estas regras são aplicadas. Considere as
seguintes variáveis:
A=2.0
B=4.0
C=1.0
 Vamos então analisar expressões com estas variáveis
e seus resultados.
 A*B-C
 A*(B-C)
 B+A/C+5
 (B+A)/(C+5)
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Operadores Aritméticos
1)5x3 + 7x2 – 3x – 1
Resp.: 5.0*x**3 + 7.0*x**2 – 3.0*x –1.0
2)x0 + v0t – 1 gt2
2
Resp.:xo + vo*t – 0.5*g*t**2
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Operadores Lógicos
Operador
.OU.
.E.
.NÃO.
Tipo
binário
binário
unário
Operação
disjunção
conjunção
negação
Professor: Aquiles Burlamaqui
Prioridade
3
2
1
Construção de Algoritmos
Operadores Relacionais
Operador
=
<>
<
<=
>
>=
Comparação
igual
diferente
menor
menor ou igual
maior
maior ou igual
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Operadores Literais
 Não há padronização para seus operadores.
Vamos considerar apenas o operador de
concatenação ( + ) .
 Exemplo:
 “sonha” + “dor” resulta “sonhador”
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Avaliação de Expressões
 Regras:
 Observar a prioridade dos operadores.
Se houver empate, considera-se a
expressão da esquerda para a direita.
 Os parênteses alteram a prioridade,
forçando a avaliação da subexpressão
em seu interior.
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Instruções Primitivas
 Entrada
 Saída
 Atribuição
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Entrada
Sintaxe : Leia ( < lista_de_variáveis > )
Semântica : Os dados são fornecidos ao
computador por meio de um dispositivo de
entrada e armazenados nas posições de
memória das variáveis cujos nomes
aparecem na lista.
Exemplo:
Leia ( x )
Leia ( a , b , c )
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Saída
Sintaxe : Escreva ( < lista_de_expressões > )
Semântica : Os argumentos são enviados para o dispositivo de saída. No
caso de uma lista de variáveis, o conjunto de cada uma delas é
pesquisado na posição de memória correspondente a variável. No
caso de argumento constante(número, literal ou lógico) este é
enviado diretamente ao referido dispositivo. E no caso de
expressões, após sua avaliação, segue como uma constante.
Exemplos:
Escreva
Escreva
Escreva
Escreva
Escreva
(“Programa elaborado pelo aluno Thiago.”)
(“Digite um número inteiro positivo:”)
(“Lados do triângulo: “, L1 , L2 , L3 )
(“Area do circulo = “, pi*r**2)
(“Area = “, x*y, “Perimetro = “, 2*(x + y))
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Saída
 Regras Básicas (Interface com o Usuário:
fase de execução)
 Toda vez que um programa estiver esperando
que o usuário forneça a ele um determinado
dado (operação de leitura), ele deve antes
enviar uma mensagem dizendo o que o usuário
deve digitar, por meio de um instrução de saída.
 Antes de enviar qualquer resultado ao usuário,
um programa deve escrever uma mensagem
explicando o significado do mesmo.
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Atribuição
 É a principal maneira de se armazenar uma
informação numa variável.
Sintaxe :< nome_da_variável >  < expressão >
Semântica : 1) avaliação da expressão
2) armazenamento do valor resultante na
posição de memória correspondente à variável que
aparece à esquerda do comando.
Importante :
Deve haver compatibilidade entre o tipo de dado
resultante da avaliação da expressão e o tipo de dado
da variável ( a não ser, propositadamente, com tipos
numéricos).
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Controle de Fluxo de um Programa
 Comando Composto
 Estrutura Seqüencial
 Estrutura de Decisão
 Se
 Caso
 Estrutura de Repetição
 Para
 Enquanto
 Repita
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Comando Composto
 É um conjunto de comandos simples como
atribuição, entrada, saída ou algumas
construções (estruturas) apresentadas a
seguir.
 Ex:
 Escreve((a+b)/15)

ou
 bas =(- b + (b * b – 4.* a * c)**0.5)/(2 * a)
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Estrutura Seqüencial
 Cada comando é executado somente
após o término do comando anterior.
 Ex:
Escreve(“Qual o valor da conta?”)
Leia(b);
a  b * 0.1
Escreve(“10 % do garçom dá:”+a)
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Estrutura de Decisão
 Classificação quanto ao número de
condições:
 uma condição ( decisão simples ) :
estrutura do SE
 várias condições ( decisão múltipla ) :
estrutura do ESCOLHA
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Se
Sintaxe:
Se ( < condição > ) então
< comando1 >
senão
< comando2 >
Fim_se
Se ( < condição > ) então
< comando1 >
Fim_se
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Se Aninhados
Algoritmo Max_min
Real: a, b, c, max, min
Início
Escreva (“Digite tres numeros: “)
Leia (a, b, c)
Se ( a < b ) então
Se ( b < c ) então
min 
max 
senão
max 
Se ( a <
senão
senão
Fim
Fim_se
Fim_se
a
c
b
c ) então
min  a
min  c
Se ( b > c ) então
min  c
max  a
senão
min  b
Se ( a > c ) então
max  a
senão
max  c
Fim_se
Fim_se
Fim_se
Escreva (“Maior numero = “, max)
Escreva (“Menor numero = “, min)
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Escolha...Caso

Sintaxe:
Escolha(<expressão>)
Caso(<condição1>)faça
<comando1>
Caso(<condição2>)faça
<comando2>
.
.
.
Caso(<condiçãot>)faça
<comandot>
senão
<comandok>
Fim_escolha
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Escolha...Caso
Algoritmo Calculadora
Inicio
Fim
Real: num1,num2
Literal[2]: op
Escreva(“Digite um numero, o operador e outro numero: “)
Leia(num1,op,num2)
Escolha(op)
Caso(op=”+”)faça
Escreva(num1,op,num2,” =”, num1+num2)
Caso(op=”– “ )faça
Escreva(num1,op,num2,” =”, num1 – num2)
Caso(op=”* “)faça
Escreva(num1,op,num2,” =”,num1* num2)
Caso(op=” / ”)faça
Se(num2<>0)então
Escreva(num1,op,num2,” =”,num1/ num2)
Senão
Escreva(“Não existe divisão por zero.”)
Fim_se
Senão
Escreva(“Operador desconhecido.”)
Fim_escolha
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Estrutura de Repetição
 Tipos
 Contados
 Para – Faça
 Condicionais
 ENQUANTO – FAÇA
 REPITA – ATÉ
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Para- Faça
 Sintaxe:
Para <var> de <ini> até <fim> passo <inc> faça
<comando>
Fim_para
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Algoritmo Fatorial
Inteiro: num,k,fat
Início
Escreva(“Digite um número:”)
Leia(num)
Se(num >= 0)então
fat  1
Para k de 2 até num passo 1 faça
fat  fat*k
Fim_para
Escreva(“Fatorial de”, num, “ igual a “ ,fat)
Senão
Escreva(“Não existe fatorial de número
negativo.”)
Fim_se
Fim
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Enquanto - Faça
Sintaxe:
Enquanto (<expressão lógica>)faça
<comando>
Fim_enquanto
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Algoritmo MDC
Início
Fim
Inteiro: a, b
Escreva (“Digite dois numeros inteiro positivos: “)
Leia (a,b)
Se ( a>0 .e. b>0 ) então
Enquanto ( a< > b ) faça
Se ( a > b ) então
a a–b
senão
b b–a
Fim_se
Fim_enquanto
Escreva (“ mdc = “, a)
Senão
Escreva (“Dados incorretos.”)
Fim_se
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Repita - Até
 Sintaxe:
Repita
<comando>
Até (<expressão lógica>)
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Algoritmo Divisores
Inteiro: num, div
Início
Repita
Escreva (“Digite um numero inteiro positivo: “)
Leia (num)
Até (num > 0)
Escreva (“Divisores do número “, num)
div  1
Repita
Se ( num / div * div = num) então
Escreva (div)
Fim_se
div  div + 1
Até (div > num)
Fim
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Linguagem C
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Linguagem de Programação C
 Criada em 1972 por Dennis Ritchie
 Inicialmente para uso no UNIX
 Características
 Linguagem de programação imperativa
 Apenas 32 palavras-chave
 Estruturação modular, módulos compilados
separadamente
 Ponteiros como tipo de dado
 Passagem de argumentos por valor
 Facilidade de trabalhar os dados em bits
 Nível intermediário entre nível de máquina e
alto nível
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Linguagem de Programação C
 Uso:
 Desenvolvimento de software de
sistemas operacionais:




Drivers;
Kernel;
Api;
Etc.
 Desenvolvimento de sistemas
embutidos;
 Etc.
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Palavras reservadas do ANSI C
auto
double
int
struct
break
else
long
switch
case
enum
register
typedef
char
extern
return
union
const
float
short
unsigned
continue
for
signed
void
default
goto
sizeof
volatile
do
if
static
while
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Estrutura básica de um programa
em C
/*
Modelo de programa em C
*/
int main()
{
return(0);
}
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Programa Olá Mundo

Copie o texto a seguir em um editor de textos, e salve com
um nome qualquer, mas extensão .c
/*
Programa Olá Mundo
*/
#include <stdio.h>
int main()
{
printf(“Olá mundo!”);
return(0);
}
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Compilando um código em C
 Após escrever e salvar um código em c, vá para o
terminal e digite:
gcc <nome_do_arquivo.c> -o <nome_do_programa>
 Em seguida, digite no terminal:
./<nome_do_programa>
 Observe o resultado da saída no terminal.
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Comentários
 Por área selecionada
/* - início da área de comentário
<texto comentado>
...
*/ - fim da área
 Por linha
// <linha comentada>
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Tipos Primitivos
Tipo
Especificação
Bytes
Valores
char
Armazena um byte com sinal.
1
-128 a 127
unsigned
char
Armazena um byte sem sinal.
1
0 a 255
int
Inteiro.
4
-2,147,483,648 a
+2,147,483,647
short int
Inteiro curto.
2
-32,768 a +32,767
long int
Inteiro longo.
4
-2,147,483,648 a
+2,147,483,647
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Tipos Primitivos
Tipo
Especificação
Bytes
Valores
unsigned int
Inteiro sem sinal.
4
0 a +4,294,967,295
unsigned
short
Inteiro curto sem sinal.
2
0 a +65,535
unsigned
long
Inteiro longo com sinal.
4
0 a +4,294,967,295
float
Real.
4
3.4E-38 a 3.4E+38
double
Real com dobro de precisão.
8
1.7E-308 a
1.7E+308
long double
Real com presisão de 19 dígitos.
10
3.4E-4932 a
3.4E+4932
void
Nenhum valor.
0
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Declaração de constantes e
variáveis
 Variáveis:
tipo <identificador>;
 ex: int x;
 Constantes
const tipo <identificador>=<valor>;
 ex: const int numero=5;
#define <identificador> valor
 ex: #define numero 5
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Operadores Aritméticos
Operador Descrição
+
Soma
-
Subtração
*
Multiplicação
/
Divisão (inteira ou
real)
%
Resto da divisão
inteira
-
sinalização negativa
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Operadores de incremento e
decremento


Incremento
++
Decremento
--
 Ex:
int num1, num2;
num1=5;
num2 = num1++; //num1=6; num2=5;
num1=5;
num2 = ++num1; //num1=6; num2=6;
num1=5;
num2 = num1--; //num1=4; num2=5;
num1=5;
num2 = -- num1; //num1=4; num2=4;
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Operadores Binários
 Operam sobre os bits de um dado
Operador
Operação
&&
E
||
Ou
^
Ou-exclusivo
>>
Deslocamento para a direita
<<
Deslocamento para a esquerda
~
Não
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Operadores Relacionais
Retornam 1 se a expressão for verdadeira, e 0 se for falsa.
Operador
Operação
==
Igual
!=
Diferente
<
Menor
>
Maior
<=
Menor ou igual
>=
Maior ou igual
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Operadores Lógicos
E
&&
 ex: (5 >= 7) && ( (4/2) == 2)
 Ou
||
 ex: (5 >= 7) || ( (4/2) == 2)
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Atribuição
 Atribuição simples
<variável> = valor;
 ex:
int num1=2;
 Atribuição composta
<variável> <op>= <valor>;
para <op> = {+, -, *, /, %, <<, >>, &, |,
^}
 ex:
num1 += 1;
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Entrada e Saída
 Entrada
scanf(“ <%tipo>”, &<variável>);
 Saída
printf(“texto”);
printf(“texto %<tipo1> texto %<tipoN>
texto”, <variável 1>,...,<variável N>);
Professor: Aquiles Burlamaqui
Construção de Algoritmos
%tipos
Símbolo
Significado.
%d
Inteiro.
%u
Inteiro sem sinal.
%f
Real.
%e
Real no formato exponencial.
%g
Escolher %e ou %f de acordo com o tamanho do
dado.
%c
Caractere.
%s
Cadeia de caracteres.
%o
Número em octal (sem sinal).
%x
Número em hexadecimal (sem sinal).
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Exercício
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Escreva um programa em C que leia um dado do tipo inteiro e em seguida escreva o
dobro do seu valor.
Escreva um algoritmo que leia três números e imprima o maior deles.
Escreva um algoritmo que leia três números e os imprima em ordem crescente.
Escreva um algoritmo que leia 10 números e imprima o maior deles.
Escreva um algoritmo que leia uma certa quantidade de números e imprima o maior
deles e quantas vezes o maior número foi lido. A quantidade de números a serem
lidos deve ser fornecida pelo usuário. Assuma que o usuário sempre fornecerá um
número positivo.
Modifique o problema anterior de modo que caso o usuário digite um número negativo
o programa peça novamente a quantidade de números e repita este procedimento até
que o usuário forneça um número positivo.
Modifique o problema anterior para permitir que o usuário possa em caso de erro ter
três tentivas. Na terceira tentativa o programa deve terminar avisando ao usuário a
razão da interrupção.
Escreva um algoritmo que leia um número inteiro entre 100 e 999 e imprima na saída
cada um dos algarismos que compõem o número.
Uma empresa paga R10.00 por hora normal trabalhada e R$ 15.00 por hora extra.
Escreva um programa que leia o total de horas normais e o total de horas extras
trabalhadas por um empregado em um ano e calcule o salário anual deste trabalhador.
Assuma que o trabalhador do exercício anterior deve pagar 10% de imposto se o seu
salário anual for menor ou igual a R$ 12000.00. Caso o salário seja maior que este
valor o imposto devido é igual a 10% sobre R$ 12000.00 mais 25% sobre o que
passar de R$ 12000.00. Escreva um programa que calcule o imposto devido pelo
trabalhador.
Professor: Aquiles Burlamaqui
Download

Aula02 - Aquiles Burlamaqui