Introdução a Programação I
A Long long Time ago…
o ENIAC. Esta máquina das cavernas media 17m x 9m, era capaz de fazer 38 divisões e 357
multiplicações por segundo e levava 2 horas para calcular o mesmo que 100 engenheiros
levariam 1 ano apenas com lápis e papel. Seriam necessárias 1.000.000 destas máquinas
para poder competir com um único PlayStation 3...
Máquina de Fazer contas
previsão meteorológica: Para fazer uma previsão corretamente para um país como o Brasil
são necessárias aproximadamente 155.520.000.000.000.000 contas
100 contas por segundo, irá levar mais ou menos 3 bilhões de anos (mais ou menos a idade
da Terra...) para calcular a previsão do tempo para o dia de amanhã no Brasil.
O que faz um computador?
+, -, /, x
>, <, =
CISC x RISC
al-Khowarizm ou Algoritmos
1.
2.
3.
4.
5.
6.
Pegar uma escada;
Posicionar abaixo da lâmpada;
Pegar uma nova lâmpada;
Remover a lâmpada queimada;
Colocar a nova lâmpada;
Guardar a escada.
O algoritmo mais antigo do mundo
Um dos algoritmos mais antigos é o de Euclides, que foi escrito na Grécia em torno de 300 A.C. (adivinhe como era o nome do
matemático que o escreveu...). Este algoritmo se propõem a encontrar o maior divisor inteiro comum entre um par de números.
O algoritmo diz:
divida um dos números pelo outro e pegue o resto desta divisão
pegue o segundo número da divisão e coloque-o no lugar do primeiro, dividindo-o pelo resto obtido no cálculo anterior.
Continue este procedimento até que o resto da divisão seja zero.
O último resto obtido será o maior divisor comum.
3654  1365  resto 924
1365  924  resto 441
924  441  resto 42
441  42  resto 21
42  21  resto 0
Definição Formal
Algoritmo é uma seqüência ordenada e finita de passos bem definidos que descrevem como
realizar uma certa tarefa específica.
Propriedades de um algoritmo:
Os passos obedecem a uma ordem específica;
Não existe ambigüidade;
O número de passos é finito.
Áreas da Computação
-
Banco de Dados: desenvolve algoritmos para gerar e manipular um volume grande de dados;
Computação Gráfica: desenvolve soluções para sintetizar imagens numa tela plana, buscando
simular (através de algoritmos) a iluminação, sombras, reflexos, etc.
Inteligência Artificial: busca algoritmos que de alguma forma procuram resolver problemas de
planejamento ou de simulação de comportamento;
Otimização: procura algoritmos que sejam mais eficientes dos que os conhecidos
(normalmente esta efixiência é medida em tempo).
Entretenimento: Faz algoritmos para dar razão de ser ao PlayStation e ao Xbox...
Linguagem dos computadores
-
Linguagem mais simples
Linguagem Matemática e binária: 100111010101001001
Alfabeto
Bits e bytes
CPUs de 8, 16, 24, 64 e 128 bits
Linguagem de Programação
Linguagem de Programação
-
C++
JAVA
C
Pascal
Fortran
Visual Basic
ASP
LUA
Phyton
C#
SQL
Pseudo-código
Declare N1, N2, N3 como inteiro
Escreva “Entre com o dividendo e com o divisor: ”
Leia N1,N2
Se N2≠0 então
N3 ← N1 div N2
Escreva “O quociente é igual a”, N3
Senão
Escreva “Operação Inválida”
FimSe
Compiladores
Interpretadores
Máquina Virtual
Insetos (Bugs...)
Debugers
Sintaxe x Semântica
Compilador
IDE - Integrated Development Environment
Arquitetura de Computadores
CPU
UC
Dispositivo de
ULA
Memória
RC
Barramento
Entrada e
Saída
Barramento
Unidade de Controle
CPU
UC
Dispositivo de
ULA
Memória
RC
Barramento
Entrada e
Saída
Unidade Lógica e Aritimética
CPU
UC
Dispositivo de
ULA
Memória
RC
Barramento
Entrada e
Saída
Registradores
CPU
UC
Dispositivo de
ULA
Memória
RC
Barramento
Entrada e
Saída
Operações Elementares
Atribuição
Vidas = 5;
Avaliação de Expressões
(5 * PI) / 360
Precedência de Operadores
5+4/2 ?
Leitura de dados
Le (posição de mouse);
Escrita de dados
Imprime “Iniciando fase 1”
Palavras Reservadas
Case Sensitive
Posicao x posicao
Variáveis
Declaração de Variáveis
Var <nome_da_variavel> As <Tipo da Variável>
Nome
Descrição
Exemplos
Int
Float
Bool
Números inteiros
Números reais
Verdadeiro ou Falso
1, 22, 333, -430
3.1415, 2.333, 5.0
True / False (somente estes 2)
Exemplos
Var v1 As Int
Var v2 As Int
Pergunta: qual é o problema do
exemplo?...
Regras para nomear variáveis
OBRIGATÓRIO...
- Não usar palavras reservadas
- Não colocar espaço entre partes da variável:
Var numero de vidas as Int
- Não começar a palavra com números
- Não usar símbolos: #Vidas, Custo$, etc... (exceção: _)
- Não usar acentos
Regras para nomear variáveis
Boas maneiras...
-
Dar nomes sugestivos
Não usar nomes muito extensos:
Numerototaldevidasdopersonagem
Usar como separadores: _ ou maiúsculas:
NumeroDeVidas, numero_de_vidas
Inicialização de Variáveis
Var fase As Int
...
fase = 0
Nome
Descrição
Exemplos
Int
Float
Bool
Números inteiros
Números reais
Verdadeiro ou Falso
1, 22, 333, -430
3.1415, 2.333, 5.0
True / False (somente estes 2)
Exercício
Suponha que o seu programa possua duas variáves:
CorFundo e CorFrente
Escreva um programa que faça a cor do fundo passar a
ser a cor da frente e a cor da frente a cor do fundo
Expressões
Retornam um valor
3 tipos:
- Aritiméticas
- Lógicas
- Relacionais
Expressões Aritiméticas
X
X+Y
X-Y
X*Y
X/Y
((3 + X)/(Y-4))
Expressões Lógicas
(A)
AeB
A ou B
não (A)
Tabelas Verdade
OR
True
False
True
True
True
False
True
False
Tabelas Verdade
AND
True
False
True
True
False
False
False
False
Tabelas Verdade
NOT
True
False
False
True
Expressões Relacionais
A>B
A>=B
A=B
A<B
A<=B
A≠ B ou A <>B
Prioridades
Prioridade
Operadores
0
parenteses,funções
1
+, - (operadores unitários)
2
potenciação
3
*, /
4
+, -
5
operadores relacionais
6
não
7
e
8
ou
Estrutura de um programa
Program NomeDoPrograma
Method Main()
// Programa
End Method
End Program
Hello World
Program MeuPrimeiroPrograma
Method Main()
Print ("Hello World")
End Method
End Program
Funções
Nome_da_Funcao (parametro1, parametro2, ...)
Ex: Print (<conteudo>)
ConsoleWriteLine (<conteudo>)
Sin (<valor>)
...
Exercicio
Obsereve a sintaxe da funcao round:
Floor (numero_real)
A funcao devolve a parte inteira do numero real
passado como parametro
Esrcreva um programa que imprime a parte
decimal de um numero:
Var numero as decimal
Numero = 3.1415
[seu codigo]
Exercicio
Var numero as decimal
Numero = 3.1415
Var num2 As Integer
num2 = floor (num)
print(num - num2)
Outra forma de imprimir
Console.WriteLine(“alguma coisa”)
Leitura de dados
num = ConsoleReaddecimal(“entre com um numero", False)
Melhorando o exercicio...
Var num As Decimal
num = ConsoleReaddecimal("Entre com um numero", False)
Var num2 As Integer
num2 = floor (num)
Console.WriteLine(num - num2)
Objetos
Carro
Atributos
Carro.placa
Carro.cor
Carro.modelo
Carro.anda()
Carro.mede_velocidade()
Carro.para()
Objetos
Program UFO
Method Main()
Define MySprite As Sprite
MySprite.Load( "ufo.gif" )
MySprite.MoveTo( 200, 200 )
MySprite.Show()
End Method
End Program
Mais sobre Objetos
Program UFO
Method Main()
Define MySprite As Sprite
MySprite.Load( "ufo.gif" )
MySprite.MoveTo( 0, 0 )
MySprite.Show()
Delay(1000)
MySprite.MoveTo( 300, 0 )
Delay(1000)
MySprite.MoveTo( 300, 300 )
Delay(1000)
MySprite.MoveTo( 0, 300 )
Delay(1000)
MySprite.MoveTo( 0, 0 )
Delay(1000)
MySprite.MoveTo( 150, 150 )
End Method
End Program
Condicao
If <expressao logica> Then
// faz alguma coisa
Else
// faz outra coisa…
End If
Condicao
If <expressao logica> Then
// faz alguma coisa
End If
Condicao - exemplo
Var num As Integer
num = ConsoleReadint("Enter com um numero",
False)
If num > 0 Then
console.Write("numero e positivo")
Else
console.Write("numero negativo...")
End If
exercicio
O operador mod funciona da seguinte maneira:
Resultado = numero1 mod numero2
Resultado contem o resto da divisao inteira de
numero1 e numero2
Escreva uma função que le um numero e responde se
ele é par ou impar
exercicio
Var num As Integer
num = ConsoleReadint("Enter com um numero", False)
If (num Mod 2) = 1 Then
console.Write("numero e impar")
Else
console.Write("numero par...")
End If
Concatenação de Ifs
If condicao1 Then
//faz coisa 1
End If
If condicao1 Then
//faz coisa 1
End If
If condicao1 Then
//faz coisa 1
End If
Concatenação de Ifs
If tecla = seta_frente Then
//anda para frente
End If
If tecla = seta_traz Then
//anda para traz
End If
If tecla = espaco Then
//pula desgracado!
End If
Desafio Master!
Qual é a diferença?
If condicao1 Then
//faz coisa 1
End If
If condicao2 Then
//faz outra coisa
End If
If condicao1 Then
//faz coisa 1
Else
If condicao2 Then
//faz outra coisa
Else
If condicao3 Then
//Nossa! Outra coisa!
End If
If condicao3 Then
//mais outra coisa
End If
End If
End If
Mais um exercicio
Escreva um algoritmo que leia um ano e verifique se é bissexto. Um ano é bissexto se é
divisível por 4, senão é um século. No caso de século, o ano é considerado bissexto se for
divisível por 400.
Mais um!
Escrever um algoritmo que determina o maior dentre três números inteiros
Ultimo!
Escreva um algoritmo que leia três valores inteiros que serão armazenados em três
variáveis L, M, N e troque seus valores, se necessário, de modo que L seja o menor, M o
valor do meio e N o maior.
Incrementos e decrementos
Contador = Contador + 1
Contador = Contador + 10
Contador += 10
Tempo -= 100
Caracteres especiais
console.ConsoleWrite (“ quero pular uma linha \n")
console.ConsoleWrite (“ agora uma tabulacao \t")
E finalmente os Loops...
Como poderia fazer um objeto se mover suavemente pela tela?
While
While Condição
// comandos
End While
Exemplos While
Var contador As Integer
contador = 0
While (contador < 10)
contador += 1
console.ConsoleWrite(contador)
End While
O que faz este programa?
Var contador As Integer
contador = 0
While true
contador += 1
console.ConsoleWrite(contador)
End While
Exercicio
Disco Voador que anda de um lado para outro...
Download

Introdução a Programação I - Instituto de Computação