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 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 Barramento CPU UC ULA RC Dispositivo de Entrada e Saída Memória
Barramento
Unidade de Controle CPU UC Dispositivo de ULA Entrada e Saída Memória Barramento CPU UC ULA RC Dispositivo de Entrada e Saída Memória
Unidade Lógica e Aritimética Barramento CPU UC ULA RC Dispositivo de Entrada e Saída Memória
Registradores CPU UC Dispositivo de ULA Entrada e Saída Memória RC Barramento CPU UC ULA RC Dispositivo de Entrada e Saída Memória
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 Números inteiros 1, 22, 333, -430 Float Números reais 3.1415, 2.333, 5.0 Bool Verdadeiro ou Falso True / False (somente estes 2)
Pergunta: qual é o problema do exemplo?... 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 Números inteiros 1, 22, 333, -430 Float Números reais 3.1415, 2.333, 5.0 Bool Verdadeiro ou Falso 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 + Y X-Y X*Y X/Y ((3 + X)/(Y-4))
Expressões Lógicas (A) A e B A ou B não (A)
Tabelas Verdade OR True False
Tabelas Verdade AND True False
Tabelas Verdade NOT True False
Expressões Relacionais A > B A>=B A = B A<B A<=B A≠ B ou A <>B
Prioridades Prioridade Operadores parenteses,funções 1 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 ) MySprite.MoveTo( 300, 300 ) MySprite.MoveTo( 0, 300 ) 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
Concatenação de Ifs If tecla = seta_frente Then //anda para frente End If If tecla = seta_traz Then //anda para traz If tecla = espaco Then //pula desgracado!
Desafio Master! Qual é a diferença? If condicao1 Then //faz coisa 1 Else If condicao2 Then //faz outra coisa If condicao3 Then //Nossa! Outra coisa! End If If condicao1 Then //faz coisa 1 End If If condicao2 Then //faz outra coisa If condicao3 Then //mais outra coisa
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...