View
124
Download
4
Category
Preview:
Citation preview
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Construção de AlgoritmosAULA 02
Aquiles BurlamaquiUERN2007.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 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)
Estruturas de Dados Homogêneas (vetores e matrizes)
Unidade II Estruturas de Dados Heterogêneas (registros) Modularização
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éticos1)5x3 + 7x2 – 3x – 1
Resp.: 5.0*x**3 + 7.0*x**2 – 3.0*x –1.0
2)x0 + v0t – 1 gt2
2Resp.:xo + vo*t – 0.5*g*t**2
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Operadores LógicosOperador Tipo Operação Prioridade .OU. binário disjunção 3 .E. binário conjunção 2 .NÃO. unário negação 1
Professor: Aquiles Burlamaqui
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ídaSintaxe : 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 (“Programa elaborado pelo aluno
Thiago.”)Escreva (“Digite um número inteiro positivo:”)Escreva (“Lados do triângulo: “, L1 , L2 , L3 )
Escreva (“Area do circulo = “, pi*r**2)Escreva (“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.1Escreve(“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
SeSintaxe: Se ( < condição > ) então Se ( < condição > ) então
< comando1 > < comando1 >senão Fim_se
< comando2 >Fim_se
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Se AninhadosAlgoritmo Max_min
Real: a, b, c, max, minInício
Escreva (“Digite tres numeros: “)Leia (a, b, c)Se ( a < b ) então
Se ( b < c ) entãomin amax c
senãomax bSe ( a < c ) então
min asenão
min cFim_se
Fim_sesenão
Se ( b > c ) entãomin cmax a
senãomin bSe ( a > c ) então
max asenão
max cFim_se
Fim_seFim_seEscreva (“Maior numero = “, max)Escreva (“Menor numero = “, min)
Fim
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...CasoAlgoritmo Calculadora
Real: num1,num2Literal[2]: op
InicioEscreva(“Digite um numero, o operador e outro numero: “)Leia(num1,op,num2)Escolha(op)
Caso(op=”+”)façaEscreva(num1,op,num2,” =”, num1+num2)
Caso(op=”– “ )façaEscreva(num1,op,num2,” =”, num1 – num2)
Caso(op=”* “)façaEscreva(num1,op,num2,” =”,num1* num2)
Caso(op=” / ”)façaSe(num2<>0)então
Escreva(num1,op,num2,” =”,num1/ num2)Senão
Escreva(“Não existe divisão por zero.”)Fim_se
SenãoEscreva(“Operador desconhecido.”)
Fim_escolhaFim
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 FatorialInteiro: num,k,fat
InícioEscreva(“Digite um número:”)Leia(num)Se(num >= 0)então
fat 1Para k de 2 até num passo 1 faça
fat fat*kFim_paraEscreva(“Fatorial de”, num, “ igual a
“ ,fat)Senão
Escreva(“Não existe fatorial de número negativo.”)
Fim_seFim
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Enquanto - FaçaSintaxe:
Enquanto (<expressão lógica>)faça<comando>
Fim_enquanto
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Algoritmo MDCInteiro: a, b
InícioEscreva (“Digite dois numeros inteiro positivos: “)Leia (a,b)Se ( a>0 .e. b>0 ) então
Enquanto ( a< > b ) façaSe ( a > b ) então
a a – b senão
b b – a Fim_se
Fim_enquantoEscreva (“ mdc = “, a)
SenãoEscreva (“Dados incorretos.”)
Fim_seFim
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 DivisoresInteiro: num, div
InícioRepita
Escreva (“Digite um numero inteiro positivo: “)Leia (num)
Até (num > 0)Escreva (“Divisores do número “, num)div 1Repita
Se ( num / div * div = num) entãoEscreva (div)
Fim_sediv 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;
Constantesconst tipo <identificador>=<valor>; ex: const int numero=5;#define <identificador> valor ex: #define numero 5
Professor: Aquiles Burlamaqui
Construção de Algoritmos
Operador Descrição
+ Soma
- Subtração
* Multiplicação
/ Divisão (inteira ou
real)
%Resto da divisão
inteira
- sinalização negativa
Operadores Aritméticos
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
Operador Operação
== Igual
!= Diferente
< Menor
> Maior
<= Menor ou igual
>= Maior ou igual
Retornam 1 se a expressão for verdadeira, e 0 se for falsa.
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
Entradascanf(“ <%tipo>”, &<variável>);
Saídaprintf(“texto”);printf(“texto %<tipo1> texto %<tipoN>
texto”, <variável 1>,...,<variável N>);
Professor: Aquiles Burlamaqui
Construção de Algoritmos
%tiposSí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ício1. Escreva um programa em C que leia um dado do tipo inteiro e em seguida escreva o
dobro do seu valor.2. Escreva um algoritmo que leia três números e imprima o maior deles. 3. Escreva um algoritmo que leia três números e os imprima em ordem crescente. 4. Escreva um algoritmo que leia 10 números e imprima o maior deles. 5. 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.
6. 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.
7. 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.
8. 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.
9. 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.
10. 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.
Recommended