Baixe o app para aproveitar ainda mais
Prévia do material em texto
UFRN Escola de Ciências e Tecnologia Introdução a Algoritmos ECT1103 – INFORMÁTICA FUNDAMENTAL 2011.1 1 • Manter o telefone celular sempre desligado/silencioso quando estiver em sala de aula; • Nunca atender o celular na sala de aula. 2 Objetivo da Aula • Apresentar conceitos de desenvolvimento de Software • Apresentar conceitos de licenças de software • Introduzir o conceito de algoritmos; • Descrever as formas de representação de um algoritmo. 3 O que é Software? • Parte lógica do Sistema Computacional – São instruções ordenadas de forma lógica que informam tarefas a serem executadas pelo Hardware. 4 O que é Software? Analogia: Receita de bolo Receita de Bolo De Chocolate 1° bater ingredientes no liquidificador 2° untar forma 3° Colocar no forno Código Fonte Main(){ Int x; Int y; … } 5 Como um programa é criado? Compilador Interpretador Programa ExecutávelCódigo Fonte Main { Func() } Linguagem de programação Linguagem de Máquina 6 Voltando a analogia do bolo …. 7 O que pode ser feito com o bolo pronto? • Problemas: – E se o sabor não lhe agrada? – E se você gostaria com recheio de laranja? • Você vai ter que comprar outro bolo! • E se ninguém faz o bolo que você quer? 8 O que pode ser feito com a receita do bolo? Aprender a fazer um bolo Mudar ingredientes Produzir novos bolos Vender bolos 9 O que pode ser feito com um programa ? Executar Mas, e se o programa que eu comprei só roda em Sistema A e eu estou usando Sistema B? Posso aprender? Posso consertar? Posso emprestar? Posso vender? A B 10 O que pode ser feito com um código ? Aprender como o programa é feito Alterar sua funcionalidade Acrescentar funcionalidade Consertar Distribuir ? Gerar o programa Código Fonte Main(){ Int x; Int y; … } 11 Licença de Software Todo software possui uma licença. A licença é que lhe dá diretos e deveres em relação ao software. Quando você clica em “Eu aceito” está assinando um compromisso com o distribuidor/produtor daquele software. 12 13 Tipos de Software (Baseado na licença) Software Proprietário Licença: Concessão de uso Software não é seu Usuário só tem acesso ao programa Software Livre Licença: Liberdade de uso Livre acesso ao código fonte Para refletir... Vocês lembram da diferença entre SÓ TER o bolo e TER a RECEITA do bolo? 14 Liberdades do Software Livre A principal licença de SL é a GPL (General Public License – Licença Pública Geral): Uso Estudo Modificação (Re)distribuição 15 Liberdade de Uso Usar o Software para qualquer finalidade desejada; Pode ser usado para finalidade não projetada 16 Liberdade de Uso Em software Proprietário, mesmo você tendo pago, você não pode utilizá-lo para fins não especificados na licença Caso contrário, você estará infringindo o acordo 17 18 Liberdade de Estudo Programadores passam a ter um arsenal enorme de códigos para estudo. Como uma biblioteca de exemplos para desenvolvedores Permite: aprendizagem, treinamento, qualificação Para refletir Software proprietário não está disponível para estudo O que você pensa sobre a patente de idéias? E se os grandes pesquisadores tivessem patenteado suas idéias? Isaac Newton Thomas Edson Einstein 19 Para refletir E se você tivesse que adquirir uma licença para: Usar a fórmula da gravidade Calcular a inércia do seu veículo É isso que acontece quando você adquire uma licença de software proprietário E estudar as Leis de Newton e a Teoria da Relatividade? Nem com a licença proprietária você pode estudar o código! 20 Liberdade de Modificar Alterar e aprimorar o Software Para corrigir falhas e vulnerabilidades Adaptação para realidade da empresa / comunidade / usuário; 21 Liberdade de (Re)distribuição Livre compartilhamento Copiar Distribuir Vender 22 Quem usa Software Livre http://www- 03.ibm.com/linux/ossstds/ http://code.google.com/intl/pt- BR/opensource/ http://wiki.developers.facebook.com/index.php/Open_source_p rojects http://www.opensource.apple.c om/ http://twitter.com/about/openso urce http://www.microsoft.com/opensou rce/ 23 Onde SL é usado 24 Porque empresas usam SL Modelo Proprietário Número limitado de desenvolvedores Alto custo por desenvolvedor Termos de Sigilo entre empresa e desenvolvedor Criar software é caro Manter é mais caro ainda 25 Porque empresas usam SL Modelo Software Livre Investem parte dos seus funcionários, mas ganham a produção de vários desenvolvedores ao redor do mundo Recebem o resultado completo do desenvolvimento colaborativo Muitos usuários testando Mais sustentável Melhor qualidade Mais robusto Tempo de correção de erros menor 26 Porque empresas usam SL Para refletir Quanto custa para uma empresa com 500 computadores as licenças do Windows e Office? Se existe uma vulnerabilidade no Windows e ela não é corrigida, como fica a segurança da sua empresa? E se a empresa que vendeu o software não presta serviço de suporte adequadamente? E se sua empresa depende de um software proprietário para funcionar? 27 Algoritmos 28 Por Que Estudar Construção de Algoritmos? • Problema: Como construir uma trave de madeira? 29 Etapas da Solução do Problema • Análise – Etapa em que o problema a ser resolvido é estudado em detalhes para definição dos materiais e passos necessários para a sua resolução; • Algoritmo – Utilização de ferramentas para descrever o problema com suas soluções: – Ferramentas: descrição narrativa, fluxograma ou português estruturado. 30 Por Que Estudar Construção de Algoritmos? • Análise: o que eu preciso para resolver tal problema? – Material: madeira e ferramentas. 31 Por Que Estudar Construção de Algoritmos? • Análise: – Usar pregos ou parafusos? – Esta decisão implica em usar martelo ou chave de fenda. 32 Definir Passos 1 - Serrar a madeira para ficar no tamanho desejado: 2 – Pregar as pontas formando a trave: 33 Algoritmos - Definição • Uma sequência de passos que visa atingir um objetivo bem definido; • Tem como objetivo representar o raciocínio (ordem dos passos) envolvido na realização de uma tarefa; • Exemplo (Colocar um carro em movimento): – Colocar a chave na ignição e dar partida no motor; – Pisar na embreagem; – Passar a primeira marcha; – Soltar a embreagem lentamente, enquanto pisa no acelerador. 34 Algoritmos – Exemplos • Enviar mensagem SMS. • Enviar email. • Acessar o facebook/orkut. • Golpes especiais em jogos de luta (Street Fighters). • Ensinar a mãe a usar o computador. • Ordens para o irmão mais novo. 35 Algoritmos - Características • Finitude: algoritmos devem terminar após um número finito de passos; • Definição: cada passo deve ser precisamente definido; • Entradas: devem ter zero ou mais entradas; • Saídas: devem ter uma ou mais saídas; • Efetividade: todas as operações devem ser simples de modo que possam ser executadas em um tempo limitado. 36 Exemplo de Problema • Defina um programa que receba dois números pelo teclado, calcule a média aritmética destes dois números e imprima o resultado no monitor; • Quais ferramentas posso utilizar para definir meu algoritmo ? Leia, some, divida, escreva, compare, multiplique, subtraia 37 Formas de Representação de Algoritmos • Descrição Narrativa; • Fluxograma; • Pseudocódigo; • Linguagens de programação. 38 Formas de Representação de Algoritmos • Descrição Narrativa: – Uso da linguagem natural; – Temos a inconveniência da má interpretação, originando ambigüidades e imprecisões; – Exemplo: a troca de um pneu furado; – Analisar as ambigüidades e imprecisões. 39 Descrição Narrativa • Algoritmo: – afrouxar ligeiramente as porcas; – suspender o carro; – retirar as porcas e o pneu; – colocar o pneu reservae as porcas; – abaixar o carro; – dar o aperto final nas porcas. 40 Descrição Narrativa • Algoritmo: – afrouxar ligeiramente as porcas; • Afrouxar quanto? Com que? Que porcas? – suspender o carro; • Como? Quanto? – retirar as porcas e o pneu; • De onde? – colocar o pneu reserva e as porcas; • Onde? – abaixar o carro; – dar o aperto final nas porcas. • Quais? 41 Conceitos Fundamentais • Algoritmo: – De modo a torná-lo não ambíguo, é necessária uma formalização; – Definição de regras de semântica e sintaxe. 42 Fluxograma • Uso de formas geométricas distintas produzindo ações distintas: Início ou fim do fluxograma; Entrada de dados; Cálculo de expressões; Saída de resultados; Tomada de decisão; Fluxo. 43 Fluxograma 44 Pseudocódigo • Uso de linguagem própria, aproximando-se mais das linguagens de alto nível, chamado, também de pseudolinguagem ou ainda portugol; • Forma geral: algoritmo nome_do_algoritmo ; variaveis < declaração_de_variáveis >; fim-variaveis inicio < instruções > ; fim 45 Pseudocódigo • algoritmo Media_do_aluno; variaveis m1, m2, m3, media: real; fim-variaveis inicio m1 := leia( ); m2 := leia( ); m3 := leia( ); media := ((m1*4)+(m2*5)+(m3*6))/15; se media >= 7 então imprima(“APROVADO”); senão imprima(“REPROVADO”); fim-se fim 46 Linguagens de Programação • Linguagens de programação: – Uma linguagem de programação é um método padronizado para descrever instruções para um computador; – É um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador. 47 Linguagens de Programação • Linguagens de baixo nível: – Linguagens de máquina, assembly. • Linguagens de alto nível: – Fortran, Cobol, C, C++, Java, Python, Basic, Pascal, etc. 48 Conceitos Básicos • Baixo nível: – Código otimizado; – Indicado para situações em que seja necessário explorar com mais profundidade os recursos da máquina. • Alto nível: – Facilidade na programação do algoritmo; – Portabilidade; – Manutenção do código. 49 Linguagens de alto Nível • Exemplo usando a linguagem C/C++: #include <iostream> using namespace std; int main() { float N1, N2, media; media = (N1+N2)/2.0; return 0; } 50 51 Site • http://www.ect.ufrn.br/modulo/ect1103/ 52
Compartilhar