Tecnologia em Análise e
Desenvolvimento de Sistemas
INTRODUÇÃO À CIÊNCIA DA
COMPUTAÇÃ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).
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”
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.
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.
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
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
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
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
Linguagem Hipotética
Fluxograma Convencional
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
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” fimErros
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
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
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
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
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
Tipos de Dados
Linguagens manipulam um conjunto limitado de tipos,
normalmente:
Números inteiros
1, 2, 3, etcNúmeros reais
1.1, 5.6, ¾Letras
A, B, C, etcObjetos lógicos (booleanos)
Oriundos da lógica matemática ou de Boole
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
Valor Lógico
Tabela Verdade
Binários
Unário
Precedência dos operadores lógicos
1. Parênteses
2. não
3. e, ou
e V F V V F F F F ou V F V V V F V F não V F F VOperadores 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 = 2Divisã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
Precedência dos operadores
aritméticos
1. Parênteses
2. pot, raiz
3. *, /, div, resto
4. +,
-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
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.
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
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.