Title: Constru
1Construção de AlgoritmosAULA 02
- Aquiles BurlamaquiUERN
- 2007.1
2previously
- Apresentação da Disciplina
- Definição de algoritmo
- Conceitos de memória, variáveis e constantes.
- Tipos básicos de dados
3Variáveis
- Guardar dados
- Nome
- Tipo
- Informação
Pseudocódigo ltTipogtltLista de
Variáveis ExInteiro idade Real
media,n1,n2,n3,n4,mf Lógico passou, flag
Literal letra
4Variá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
5Constantes
- 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 ltnome_da_constantegt ltvalorgt
- Ex
- Constante pi 3,14
6Conteú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
7Expressõ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
8Operadores 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
9Operadores Aritméticos
- Vamos considerar alguns exemplos para mostrar
como estas regras são aplicadas. Considere as
seguintes variáveis - A2.0
- B4.0
- C1.0
- Vamos então analisar expressões com estas
variáveis e seus resultados. - AB-C
- A(B-C)
- BA/C5
- (BA)/(C5)
10Operadores Aritméticos
- 1)5x3 7x2 3x 1
- Resp. 5.0x3 7.0x2 3.0x 1.0
- 2)x0 v0t 1 gt2
- 2
- Resp.xo vot 0.5gt2
11Operadores Lógicos
- Operador Tipo Operação
Prioridade - .OU. binário disjunção
3 - .E. binário conjunção
2 - .NÃO. unário negação
1
12Operadores Relacionais
- Operador Comparação
- igual
- ltgt diferente
- lt menor
- lt menor ou igual
- gt maior
- gt maior ou igual
13Operadores Literais
- Não há padronização para seus operadores. Vamos
considerar apenas o operador de concatenação (
) . - Exemplo
- sonha dor resulta sonhador
14Avaliaçã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.
15Instruções Primitivas
16Entrada
- Sintaxe Leia ( lt lista_de_variáveis gt )
- 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 )
17Saída
- Sintaxe Escreva ( lt lista_de_expressões gt )
- 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 , pir2)
- Escreva (Area , xy, Perimetro , 2(x
y))
18Saí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.
19Atribuição
- É a principal maneira de se armazenar uma
informação numa variável. - Sintaxe lt nome_da_variável gt ? lt expressão gt
- 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).
20Controle de Fluxo de um Programa
- Comando Composto
- Estrutura Seqüencial
- Estrutura de Decisão
- Se
- Caso
- Estrutura de Repetição
- Para
- Enquanto
- Repita
21Comando Composto
- É um conjunto de comandos simples como
atribuição, entrada, saída ou algumas construções
(estruturas) apresentadas a seguir. - Ex
- Escreve((ab)/15)
- ou
- bas (- b (b b 4. a c)0.5)/(2 a)
22Estrutura 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)
23Estrutura 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
24Se
- Sintaxe
- Se ( lt condição gt ) então Se ( lt condição gt
) então - lt comando1 gt lt
comando1 gt - senão Fim_se
- lt comando2 gt
- Fim_se
25Se Aninhados
- Algoritmo Max_min
- Real a, b, c, max, min
- Início
- Escreva (Digite tres numeros )
- Leia (a, b, c)
- Se ( a lt b ) então
- Se ( b lt c ) então
- min ? a
- max ? c
- senão
- max ? b
- Se ( a lt c ) então
- min ? a
- senão
- min ? c
- Fim_se
- Fim_se
- senão
- Se ( b gt c ) então
26Escolha...Caso
- Sintaxe
-
- Escolha(ltexpressãogt)
- Caso(ltcondição1gt)faça
- ltcomando1gt
- Caso(ltcondição2gt)faça
- ltcomando2gt
- .
- .
- .
- Caso(ltcondiçãotgt)faça
- ltcomandotgt
- senão
- ltcomandokgt
- Fim_escolha
27Escolha...Caso
- Algoritmo Calculadora
- Real num1,num2
- Literal2 op
- Inicio
- Escreva(Digite um numero, o operador e outro
numero ) - Leia(num1,op,num2)
- Escolha(op)
- Caso(op)faça
- Escreva(num1,op,num2, , num1num2)
- 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(num2ltgt0)então
-
Escreva(num1,op,num2, ,num1/ num2) - Senão
- Escreva(Não existe
divisão por zero.) - Fim_se
28Estrutura de Repetição
- Tipos
- Contados
- Para Faça
- Condicionais
- ENQUANTO FAÇA
- REPITA ATÉ
29Para- Faça
- Sintaxe
- Para ltvargt de ltinigt até ltfimgt passo ltincgt faça
- ltcomandogt
- Fim_para
30- Algoritmo Fatorial
- Inteiro num,k,fat
- Início
- Escreva(Digite um número)
- Leia(num)
- Se(num gt 0)então
- fat ? 1
- Para k de 2 até num passo 1 faça
- fat ? fatk
- Fim_para
- Escreva(Fatorial de, num, igual a ,fat)
- Senão
- Escreva(Não existe fatorial de número
negativo.) - Fim_se
- Fim
31Enquanto - Faça
- Sintaxe
- Enquanto (ltexpressão lógicagt)faça
- ltcomandogt
- Fim_enquanto
32- Algoritmo MDC
- Inteiro a, b
- Início
- Escreva (Digite dois numeros inteiro
positivos ) - Leia (a,b)
- Se ( agt0 .e. bgt0 ) então
- Enquanto ( alt gt b ) faça
- Se ( a gt 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
- Fim
33Repita - Até
- Sintaxe
- Repita
- ltcomandogt
- Até (ltexpressão lógicagt)
34- Algoritmo Divisores
- Inteiro num, div
- Início
- Repita
- Escreva (Digite um numero inteiro positivo
) - Leia (num)
- Até (num gt 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 gt num)
- Fim
35 36Linguagem 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
37Linguagem de Programação C
- Uso
- Desenvolvimento de software de sistemas
operacionais - Drivers
- Kernel
- Api
- Etc.
- Desenvolvimento de sistemas embutidos
- Etc.
38Palavras 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
39Estrutura básica de um programa em C
- /
- Modelo de programa em C
- /
- int main()
-
-
- return(0)
40Programa 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 ltstdio.hgt
- int main()
-
- printf(Olá mundo!)
- return(0)
-
41Compilando um código em C
- Após escrever e salvar um código em c, vá para o
terminal e digite - gcc ltnome_do_arquivo.cgt -o ltnome_do_programagt
- Em seguida, digite no terminal
- ./ltnome_do_programagt
- Observe o resultado da saída no terminal.
42Comentários
- Por área selecionada
- / - início da área de comentário
- lttexto comentadogt
- ...
- / - fim da área
- Por linha
- // ltlinha comentadagt
43Tipos 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
44Tipos 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.4E38
double Real com dobro de precisão. 8 1.7E-308 a 1.7E308
long double Real com presisão de 19 dígitos. 10 3.4E-4932 a 3.4E4932
void Nenhum valor. 0
45Declaração de constantes e variáveis
- Variáveis
- tipo ltidentificadorgt
- ex int x
- Constantes
- const tipo ltidentificadorgtltvalorgt
- ex const int numero5
- define ltidentificadorgt valor
- ex define numero 5
46Operadores Aritméticos
Operador Descrição
Soma
- Subtração
Multiplicação
/ Divisão (inteira ou real)
Resto da divisão inteira
- sinalização negativa
47Operadores de incremento e decremento
- Ex
- int num1, num2
- num15
- num2 num1 //num16 num25
- num15
- num2 num1 //num16 num26
- num15
- num2 num1-- //num14 num25
- num15
- num2 -- num1 //num14 num24
48Operadores Binários
- Operam sobre os bits de um dado
Operador Operação
E
Ou
Ou-exclusivo
gtgt Deslocamento para a direita
ltlt Deslocamento para a esquerda
Não
49Operadores Relacionais
Retornam 1 se a expressão for verdadeira, e 0 se
for falsa.
Operador Operação
Igual
! Diferente
lt Menor
gt Maior
lt Menor ou igual
gt Maior ou igual
50Operadores Lógicos
- E
-
- ex (5 gt 7) ( (4/2) 2)
- Ou
-
- ex (5 gt 7) ( (4/2) 2)
51Atribuição
- Atribuição simples
- ltvariávelgt valor
- ex
- int num12
- Atribuição composta
- ltvariávelgt ltopgt ltvalorgt
- para ltopgt , -, , /, , ltlt, gtgt, , ,
- ex
- num1 1
52Entrada e Saída
- Entrada
- scanf( lttipogt, ltvariávelgt)
- Saída
- printf(texto)
- printf(texto lttipo1gt texto lttipoNgt texto,
ltvariável 1gt,...,ltvariável Ngt)
53tipos
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).
54Exercício
- 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.