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