Tecnologia em Análise e Desenvolvimento de Sistemas INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Capítulo 2 Introdução à Programação Prof. Claudinei Dias email: prof.claudinei.dias@gmail.com
Plano de Ensino 2. Introdução à Programação Algoritmo (conceito, estruturas sequênciais, estruturas de seleção, estruturas de repetição) Apresentação de uma linguagem hipotética Solução de problemas através do computador hipotético Vetores Dados Estruturados definidos pelo usuário Erros (sintaxe, lógica). 2/26
Algoritmo Por exemplo na automação, os processo desempenhadas pelo homem passa a ser realizadas por máquinas. Seja dispositivos mecânicos (máquinas industriais) Seja dispositivos eletrônicos (computadores) Ou de natureza mista (robôs) A automatização segue uma sequencia ordenada de passos para a realização da tarefa são processos que garantem a sua repetibilidade. Para esta sequencia ordenada dá-se o nome de Algoritmo Algoritmo é um conjunto finito de regras, bem definidas, para a solução de um problema em um tempo finito e com um número finito de passos 3/26
Algoritmo Um algoritmo é qualquer procedimento computacional bem definido que recebe valores de entrada e produz valores de saída Para se ter um algoritmo é necessário: Que se tenha um número finito de passos; Que cada passo esteja precisamente definido, sem ambiguidades; Que exista zero ou mais entradas tomadas de conjuntos bem definidas; Que exista ações dentro de uma sequencia finita de passos Que exista uma ou mais saídas; Que exista uma condição de fim sempre atingida para quaisquer entradas e num tempo definido. 4/26
Algoritmo Portanto, algoritmo é: um procedimento passo a passo para a solução de um problema Uma sequencia detalhada de ações a serem executadas para realizar alguma tarefa Fases de um algoritmo Entrada: dados de entrada do algoritmo informações necessárias para que o algoritmo possa ser executado (préestabelecidas ou fornecidas no momento da execução). Teclado, mouse, arquivo... Processamento: procedimentos para chegar no resultado final avaliadas todas as expressões algébricas, relacionais e lógicas, assim como todas as estruturas de controle existentes no algoritmo (condição e/ou repetição); Saída: dados processados resultados do processamento (ou parte deles) são enviados para um ou mais dispositivos de saída, como: monitor, impressora, ou até mesmo a própria memória do computador ou um arquivo. 5/26
Algoritmo Tarefas Ler e escrever dados Avaliar expressões algébricas, relacionais e lógicas Tomar decisões com base nos resultados das expressões avaliadas Repetir um conjunto de ações de acordo com uma condição Exemplos: Escovação de dentes Troca de pneu Receita de bolo de chocolate 6/26
Tipos de Estruturas Estruturas Sequenciais O algoritmo segue uma sequencia linear A B C Estruturas de Seleção Seleção de um conjunto de ações, segundo uma determinada condição Representadas por expressões lógicas ou relacionais Se B então A Se B então A1 senão A2 Estrutura de Repetição Quando um trecho do algoritmo deve ser repetido Enquanto B repetir A Repetir A até B 7/26
Linguagem Hipotética Descrição Narrativa a forma de representação é descrita em linguagem natural Exemplo 1: Troca de pneu furado Afrouxar ligeiramente as porcas Suspender o carro Retirar as porcas e o pneu Colocar o pneu reserva Apertar as porcas Abaixar o carro Dar o aperto final nas porcas Exemplo 2: Cálculo da média de um aluno Obter as notas da primeira e da segunda prova Calcular a média aritmética entre as duas notas Se a média for maio ou igual a 7, aluno aprovado, senão reprovado 8/26
Linguagem Hipotética Fluxograma Convencional representação gráfica em que formas diferentes implicam ações (instruções, comandos) distintos Inicio ou final do fluxograma Operação de entrada de dados Operação de saída de dados Operações de atribuição e chamada ou retorno de subalgoritmo Decisão Seta de fluxo de dados Conector para particionar o diagrama 9/26
Linguagem Hipotética Fluxograma Convencional Exemplo do cálculo da média do aluno 10/26
Linguagem Hipotética Pseudocódigo Estruturação de um algoritmo com uma linguagem que permite a tradução direta para uma linguagem de programação específica Algoritmo <nome_do_algoritmo> <declaracao_de_variaveis> <subalgoritmos> inicio <escopo_do_algoritmo> fim Algoritmo: palavra que indica o inicio do algoritmo em pseudcódigo <nome_do_algoritmo>: nome simbólico dado ao algoritmo <declaracao_de_variaveis>: porção opcional onde são declaras as variáveis globais usadas no algoritmo <subalgoritmos>: porção opcional onde são definidos subalgoritmos Inicio e Fim: delimitam respectivamente o inicio e fim do conjunto de instruções do corpo do algoritmo 11/26
Computador Hipotético Representação do algoritmo de cálculo da média de um aluno na forma de pseudocódigo Algoritmo Media var N1, N2, Media inicio Leia N1, N2 Media := (N1+N2)/2 Se Media >= 7 entao Escreva Aprovado senao Escreva Reprovado fim 12/26
Erros Um algoritmo pode conter erros devido a instruções que não estão em uma sequencia correta, a sintaxe está errada, erro de lógica, tipos de dados ou informações que não existam Alguns erros que podem ocorrer 1. Algoritmo Media 2. var N1, N2, Media: real 3. inicio 4. Media <= (N1+N2)/2 5. Leia N1, M2 6. Se Media < 7 entao 7. Escreva Aprovado 8. senao 9. Escreva Reprovado 10. fim 13/26
Erros Algumas instruções foram alteradas para simular erros As linhas 4 e 5 estão invertidas, não se pode calcular a média sem antes saber quais são as notas Na linha 5 temos uma instrução onde o programa pede informações que serão armazenadas em variáveis. Perceba que a variável M2 não existe. Este tipo de erro é bastante comum Na linha 6, onde acontece uma comparação lógica, o programa escreverá aprovado se a média for menor que 7. Na realidade a instrução deverá ser média >= 7, ou seja, se a expressão for verdadeira então o programa escreverá aprovado, caso contrario (se a média for <7) então o programa escrevera reprovado Máquinas não podem: Tomar decisões com base em premissas Corrigir comandos mal redigidos Descobrir a intenção do programador Resolver ambiguidades 14/26
Linguagem de Alto Nível Estruturação de algoritmos Linguagens de alto nível se afastam da linguagem de máquina e se aproximam da lógica humana Tarefa complexa para iniciantes, pois é dirigida a orientar uma máquina (e não pessoas) Vantagens: Mais próxima da lógica humana Menor tempo de desenvolvimento Maior portabilidade 15/26
Característica de uma linguagem Rigidez sintática Compilador é um tradutor sobre um idioma com construções muito bem definidas Palavras da linguagem natural utilizadas com menos liberdade Rigidez semântica Não se pode lidar com ambiguidades (intenções devem sem expressas de forma exata) O computador é um ótimo cumpridor de ordens, porém não tem idéia sobre elas 16/26
Manipulação de Dados A manipulação de dados é uma das principais funções do computador São necessários diferentes tipos de dados (computador só manipula números internamente) Tipo de dados Objeto que tem em comum o mesmo comportamento diante de um conjunto definido de operações. Exemplo: Números suportam operações matemáticas Letras suportam operações como concatenação 17/26
Tipos de Dados Linguagens manipulam um conjunto limitado de tipos, normalmente: Números inteiros 1, 2, 3, etc Números reais 1.1, 5.6, ¾ Letras A, B, C, etc Objetos lógicos (booleanos) Oriundos da lógica matemática ou de Boole Baseada em um conjunto de apenas dois valores: 1 e 0 ou Verdadeiro (V) e Falso (F) 18/26
Valor Lógico Operandos de uma operação lógica são necessariamente valores lógicos Um valor lógico pode ser obtido como resultado de uma afirmação ou proposição. Exemplos: Cachorros são mamíferos Cachorros são aves. Homens pensam. 5 > 3 7 = 3 Operadores Lógicos são operações que se definem sobre o conjunto {V,F} Sempre opera com valores lógicos e tem como resultado um valor lógico Operadores lógicos (conectivos) úteis na construção de algoritmos: e ou não 19/26
Valor Lógico Tabela Verdade Binários e V F ou V F Unário não V F V V F V V V F V F F F F V F Precedência dos operadores lógicos 1. Parênteses 2. não 3. e, ou 20/26
Operadores Pseudocódigo Aritméticos (+, -, *, /) Potenciação (pot) 10 pot 2 = 100 2 pot 10 = 1024 Radiciação (raiz) 9 raiz 2 = 3 1024 raiz 10 = 2 Precedência dos operadores aritméticos 1. Parênteses 2. pot, raiz 3. *, /, div, resto 4. +, - Divisão inteira (div) 10 div 4 = 2 22 div 6 = 3 Resto de divisão inteira (resto, mod) 10 resto 4 = 2 22 resto 6 = 4 21/26
Constantes de Variáveis Durante a execução de um programa, dados/informações ficam armazenadas temporariamente em memória Para que possam ser manipulados, é preciso que haja algum identificador Informa o local da memória (endereço) Constante: definido inicialmente e não é mais modificado Variável: pode ser alterado durante a execução Ambas identificadas por um nome 22/26
Constantes de Variáveis Regras e Convenções de Nomenclaturas Convém utilizar nomes significativos às variáveis e constantes de acordo com os elementos (ou valores) que armazenarão para manter o algoritmo o mais legível e documentável possível. Mnemônicos: nomes ou abreviatura que lembram o uso da variável no algoritmo Nomes de variáveis: podem começar com qualquer letra minúscula e os caracteres $ ou _, porém não podem começar com números. Caso o nome de uma variável seja composto por mais de uma palavra, a primeira letra de cada palavra deve ser em maiúscula. Exemplos de nomes de variáveis: x, y, resultado, valordex, valordey, ligado,... Nomes de constantes: devem ser escritos em letras maiúsculas. Usamos underline (_) para separar nomes compostos. Exemplos de nomes de constantes: TAMANHO, PARAR_DE_EXECUTAR,... 23/26
Teste de Mesa Retrato da memória a cada passo de execução de um trecho de código Consiste na verificação do conteúdo de cada variável após a execução de cada instrução Finalidade: verificar a correção da implementação Exemplo: 24/26
Bibliografia BIBLIOGRAFIA BÁSICA: SCHILDT H., C Completo e Total, Makron Books, São Paulo, 1997. FEDELI R. D.; POLLONI E. G. F; PERES, F. E., Introdução à Ciência da Computação, Cengage Learning, 2010. MEDINA M; FERTIG C., Algoritmos e Programação Teoria e Prática, Novatec, São Paulo, 2006. BIBLIOGRAFIA COMPLEMENTAR: GUIMARÃES A. e LAGES N., Algoritmos e Estruturas de Dados, Ed. LTC Livros Técnicos e Científicos, Rio de Janeiro, 1985. JAMSA K., Salvo pelo C++, LTC Livros Técnicos e Científicos Editora, 1994. ALCADE E. Informática Básica e outros Ed. Makron Books São Paulo 1991. SALIBA, CARAM W. L. Técnicas de Programação: uma abordagem estruturada, Ed. Makron, McGrawHill, São Paulo, 1992. MACHADO F. M. Ed. LTC, Introdução à Arquitetura de Sistemas Operacionais Livros Técnicos e Científicos, Rio de Janeiro, 1992. DAVIS W. S. D. Sistemas Operacionais: uma visão sistemática Ed. Campus, Rio de Janeiro, 1990. Instituto Brasileiro de Pesquisa em Informática Técnicas de Programação com Pascal IBPI Rio de Janeiro, 1993. VASCONCELOS A., Computadores Eletrônicos Digitais Ed. LTC Livros Técnicos e Científicos, Rio de Janeiro. MONTEIRO, M. Introdução a Organização de Computadores Ed. LTC Livros Técnicos e Científicos, Rio de Janeiro. EBERSPÄCHER A. L., FREDERICO H. Algoritmos e Estruturas de Dados Forbellone Ed. Makron, McGrawHill, São Paulo. 25/26
Tecnologia em Análise e Desenvolvimento de Sistemas INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Capítulo 2 Introdução à Programação Prof. Claudinei Dias email: prof.claudinei.dias@gmail.com