Baixe o app para aproveitar ainda mais
Prévia do material em texto
Prof. Rodrigo Hübner rodrigohubner@utfpr.edu.br IC31A – Introdução à Ciência da Computação Universidade Tecnológica Federal do Paraná – UTFPR Bacharelado em Ciência da Computação Aula 04 Algoritmos e Linguagens de Programação 2 Algoritmo “Um conjunto finito de regras que provê uma sequência de operações para resolver um tipo de problema específico” – [KNUTH] (autor da coleção “The art of computer programming”) 3 Pela Legibilidade do Código... “Devemos mudar nossa atitude tradicional em relação à construção de programas. Em vez de imaginar que nossa principal tarefa é instruir o computador sobre o que ele deve fazer, vamos imaginar que nossa principal tarefa é explicar a seres humanos o que queremos que o computador faça.” — D. E. Knuth 4 • Aspecto estático e aspecto dinâmico: – Estático: não depende do tempo, mas do espaço físico onde o algoritmo está sendo escrito; • Desenvolvimento: Escrita e Compilação. – Dinâmico: como se comporta a execução de cada ação do algoritmo com o passar do tempo. • Em tempo de Execução. “Todo algoritmo deve produzir resultados corretos, e ser finito tanto estática quanto dinamicamente.” Algoritmos 5 • Ambiguidade: relacionada à sintaxe e semântica de linguagens naturais. – “O artista produz formas perfeitas.” • Linguagens naturais são muito extensas, possuindo ambiguidade. – Linguagem Natural X Linguagem Computacional Linguagens X 6 Nos algoritmos, devemos utilizar construções que executarão uma ação específica bem definida. • Uma linguagem algorítmica deve ter sintaxe rígida e semântica bem definida. • Toda linguagem possui sintaxe e semântica. Linguagens Linguagem Algorítmica Linguagem Computacional Linguagem Natural 7 • Sintaxe: são as regras sintáticas de como as sentenças e cada um de seus elementos devem ser construídos corretamente. – int a = 10; – Existe uma regra na linguagem que define o formato de uma atribuição. • Semântica: se preocupa com o significado de uma sentença construída. – A atribuição do valor inteiro 10 para a variável a é válida? Sintaxe e Semântica 8 • Algoritmos geralmente descrevem algum processamento de dados: • Estes dados precisam ser representados (descritos) nos algoritmos Dados de Entrada Dados de Saída Processamento (Computador) Algoritmos 9 • Um algoritmo para fins computacionais é a descrição de ações que manipulam objetos em função do tempo. – Objetos descrevem o estado computacional – Objetos têm função específica – Ações são direcionadas aos objetos – Objetos são definidos como parte do programa – Estados diferentes requerem objetos diferentes. * Objetos na programação estruturada, serão chamados de variáveis. Algoritmos 10 Variável e Identificador Na matemática, uma variável é uma entidade capaz de representar um valor ou expressão. Ela pode representar um número ou um conjunto de números: • Como na equação • x2 + 2x + 1 = 0 • Ou na função • f(x) = x2 11 Variável e Identificador •Na computação uma variável é uma posição de memória para armazenar um determinado valor – Podemos modificá-lo ao longo da execução do programa • Uma variável pode ser vista como uma caixa com um rótulo ou nome colado nela – Em um dado instante ela guarda um determinado conteúdo. • O conteúdo desta caixa pode ser alterado diversas vezes 12 Variável e Identificador •Na computação uma variável é uma posição de memória para armazenar um determinado valor – Podemos modificá-lo ao longo da execução do programa • Uma variável pode ser vista como uma caixa com um rótulo ou nome colado nela – Em um dado instante ela guarda um determinado conteúdo. • O conteúdo desta caixa pode ser alterado diversas vezes – Contudo o conteúdo deve ser sempre do mesmo tipo. 13 • A cada objeto é associado um nome que identifica este objeto ao longo da programação. • Este nome é chamado identificador. • De forma geral, podemos dizer que um identificador está associado à uma célula de memória. • O termo variável é frequentemente utilizado como sinônimo de identificador. Variável e Identificador 14 • Em geral, as linguagens de programação exigem nomes de identificadores com as seguintes característica: – Use somente letras e números; – O primeiro caractere do nome deve ser uma letra; – Não é permitido o uso de caracteres especiais. • Exemplos válidos: ImpostoDeRenda, F1, soma, produto, desconto, SalarioHora. • Exemplos inválidos: 1f, Imposto-renda, salario hora. Identificadores 15 Variáveis: Identificadores, Tipo, Valor 16 Variáveis: Identificadores, Tipo, Valor 17 Formas de Representação • Descrição em Linguagem Natural • Fluxograma • Linguagem Algorítmica ou Pseudocódigo ou Portugol • Linguagem de Programação 18 Linguagem natural: algoritmos expressos diretamente em linguagem natural, como nas receitas. Vantagens: Facilidade de compreensão, linguagem já conhecida. Desvantagens: Pode levar a ambiguidade (várias interpretações); Não há rigor, portanto um algoritmo pode ser resumido ou detalhado demais; Por exemplo, em um algoritmo de troca de pneu – A instrução “afrouxar ligeiramente os parafusos”, está sujeita interpretações diferentes. Uma instrução mais precisa seria: – “afrouxar a porca, girando-a de 30º no sentido anti-horário”. Linguagem Natural 19 Exemplo • Faça um Algoritmo para calcular a média aritmética entre duas notas de um aluno e mostrar sua situação, o que pode ser APROVADO ou REPROVADO. Passo 1: Receber os valores das duas notas Passo 2: Calcular a média aritmética Passo 3: Mostrar a média aritmética Passo 4: Se a média aritmética for maior ou igual a 7, então situação do aluno é APROVADO; caso contrário, a situação é REPROVADO. 20 ●Fluxogramas: representação gráfica, por meio de símbolos geométricos. ● Cada tipo de operação é representado por um símbolo diferente. ● Permite o acompanhamento visual do fluxo do algoritmo. Vantagem: O entendimento de elementos gráficos é mais simples que o entendimento de textos. Desvantagem: Necessidade de aprender a simbologia; algoritmo resultante não apresenta muitos detalhes, dificultando sua transição para um programa. Fluxogramas 21 Início e fim de algoritmo Atribuições e cálculos de valores Decisões Entrada de dados Discos Fluxogramas: alguns símbolos 22 Impressão de resultados Conector na página Entrada manual Indica o sentido do fluxo e serve de ligação entre blocos existentes. Conector fora da página Fluxogramas: alguns símbolos 23 Exemplo Início N1, N2 M = (N1 + N2) /2 M M >= 7APROVADO REPROVADO SIM NÃO Fim 24 Pseudo-linguagem: emprega linguagem intermediária entre linguagem natural e linguagem de programação Este método procura misturar as facilidades da linguagem natural com a precisão das linguagens de programação A representação da solução em pseudo código possibilita ao programador a abstração dos detalhes da sintaxe da linguagem escolhida. Pseudocódigo 25 Exemplo ALGORITMO DECLARE N1, N2, M NUMÉRICO ESCREVA “Digite as duas notas” LEIA N1, N2 M ← (N1 + N2) / 2 ESCREVA “Média = ”, M SE M >= 7 ENTÃO ESCREVA “Aprovado” SENÃO ESCREVA “Reprovado” FIM_ALGORITMO. 26 Exemplo 27 Linguagem de Programação • A própria linguagem de programação é uma forma de representação de algoritmos. • Neste caso os algoritmos estão codificados na linguagem de programação específica. 28 Exemplo 29Técnicas de Construção Projetar o Algoritmo Problema Projeto Algoritmo 30 Técnicas de Construção Projetar o Algoritmo Muitas vezes nos esquecemos do projeto. Passamos direto para a codificação, o que é errado. Problema Projeto Algoritmo 31 Representação da InformaçãoRepresentação da Informação Sistemas de NumeraçãoSistemas de Numeração Linguagem de MontagemLinguagem de Montagem - Decimal (Base 10) - Binário (Base 2) - Hexadecimal (Base 16) - Octal (Base 8) - Assembly - Formada por mnemônicos que são montados (traduzidos) para a linguagem de máquina. add $2, $8, $0 10000001000000100000100000000001 Um Programa: dados e instruções 32 Linguagens de Programação • Uma Linguagem de Programação é um conjunto de notações formais para descrever ações ou operações a serem realizadas por um computador. • São ferramentas para o desenvolvimento de software. • Software: é um conjunto de programas, módulos, procedimentos, regras e quaisquer documentações associadas à operação de um sistema de processamento de dados. 33 Linguagens de Programação • São usadas para descrever algoritmos. • Uma maneira de formalizar a escrita de um algoritmo para que o computador possa entender. • Permitir que os usuários/programadores especifiquem como estes passos devem ser sequenciados para resolver um problema. • Especificar algoritmos com precisão. Algoritmos Sequências de passos que levam à solução de um problema. Exemplo Clássico: Receita de Bolo 34 Tipos de Linguagens • Linguagens de baixo nível • Restritas a linguagem de máquina • Forte relação entre as operações implementadas pela linguagem e as operações implementadas pelo hardware. • Estritamente vinculada às características do hardware • Linguagens de alto nível • Aproximam-se das linguagens utilizadas por humanos para expressar problemas e algoritmos. • Cada declaração numa linguagem de alto nível equivale a várias declarações numa linguagem de baixo nível. 35 Níveis de Linguagens • Linguagem de Máquina • Linguagem Hexadecimal • Linguagem Assembly • Linguagem de Alto Nível 36 Linguagens de Programação Hardware Linguagem de Máquina Ling. Montagem (Assembly) Linguagem de Alto Nível C Pascal Fortran... 37 Linguagens de Programação Código C GAS/Gnu 38 Linguagens de Programação Código C GAS/Gnu 39 Linguagens de Programação gcc teste.c shed a.out 40 Linguagens de Programação Código C Linguagem de máquina Assembly 41 Linguagens de Programação Código C Assembly 42 Linguagens de Programação Código C Assembly 43 Linguagens Compiladas • O código fonte é compilado e um código executável é gerado. • Exemplos: C, C++, Pascal, Fortran, Go! ... 44 Linguagens Interpretadas • O código é interpretado. • Exemplo: • Java → Java Virtual Machine (JVM). • Python → Interpretador Python (Cpython). • Shell script ... • Um interpretador obtém os comandos do programa e determina as ações que devem ser executadas. 45 Referências • Fluxograma: https://wiki.gnome.org/Dia • Pseudocódigo: AlgoUCS https://vposeidon9.ucs.br • VisuAlg http://www.guanabara.info/logica/Ferramentas/visualgv25.exe • The Knob & Switch Computer http://users.dickinson.edu/~braught/kands/kands.html 46 Próxima Aula • Noções de Software Básico e Construção de Linguagens de Programação Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36 Slide 37 Slide 38 Slide 39 Slide 40 Slide 41 Slide 42 Slide 43 Slide 44 Slide 45 Slide 46
Compartilhar