Вы находитесь на странице: 1из 9

Fundamentos de Computação

Lógica e Algoritmos
Conceitos Básicos da Linguagem C
Estruturas de Controle
Estruturas de Dados
Programação de Computadores
Arquivos
Modularização

Conteúdo:
Programação de Computadores
1. Fundamentos de Computação
2. Lógica e Algoritmos
3. Conceitos Básicos da Linguagem C
4. Estruturas de Controle
5. Estruturas de Dados
6. Arquivos
7. Modularização

Referências:
• Senne, E.L.F. Primeiro Curso de Programação em C – 2ª edição.
Florianópolis: Visual Books, 2006.
• Mizrahi, V.Z. Treinamento em Linguagem C – Curso Completo. São Paulo:
Makron Books, 2005.
• Página da disciplina: www.feg.unesp.br/~mapereira/PC.html

1 MAP © 2006

Fundamentos de Computação
Lógica e Algoritmos
Conceitos Básicos da Linguagem C
Estruturas de Controle
Estruturas de Dados
Engenharia de resolução de problemas
Arquivos
Modularização

O processo de resolução de um problema pode ser visto como uma seqüência


Programação de Computadores

de tarefas que devem ser definidas e aprimoradas, até que o modelo


escolhido para sua representação forneça resultados satisfatórios.

PROBLEMA análise MODELO síntese SOLUÇÃO

- dados - métodos
- condicionantes - etapas
- teoria

Uma boa modelagem exige alto nível de abstração e conhecimentos


acadêmicos (teoria) e/ou empíricos (prática) sobre o problema em questão.

2 MAP © 2006
Fundamentos de Computação
Lógica e Algoritmos
Conceitos Básicos da Linguagem C
Estruturas de Controle
Estruturas de Dados
Motivação e objetivos
Arquivos
Modularização

• A resolução de modelos computacionais pode exigir um número muito


Programação de Computadores
grande de cálculos, que devem ser executados de forma rápida e precisa.
• A programação de computadores é considerada, geralmente, uma tarefa
difícil, pois exige uma boa dose de abstração.
• O desenvolvimento das linguagens de programação sempre teve como
objetivo construir ferramentas para tornar essa tarefa cada vez mais fácil.
• A programação de computadores exige raciocínio lógico e o domínio de
conceitos como algoritmo, estrutura de dados, atribuição,
procedimento e recursão.
• O objetivo da disciplina é habilitar o aluno a desenvolver algoritmos e
escrever programas, visando a resolução de problemas que possam ser
resolvidos computacionalmente. Aprender e implementar algoritmos ajuda no
aperfeiçoamento do raciocínio lógico, de importância vital em disciplinas da
área de ciências exatas.

3 MAP © 2006

Fundamentos de Computação
Lógica e Algoritmos
Conceitos Básicos da Linguagem C
Estruturas de Controle
Estruturas de Dados
Algoritmo
Arquivos
Modularização

Informalmente, um algoritmo consiste numa lista de instruções para executar


Programação de Computadores

uma tarefa.

Algoritmo para se arrumar para ir para a balada:

1. Escovar os dentes.
2. Se for homem, fazer a barba.
Senão, depilar as pernas.
3. Tomar banho.
4. Aplicar desodorante.
5. Se for mulher, aplicar perfume. Algoritmo para escovar os dentes:
Senão, aplicar colônia.
6. Vestir a roupa adequada. 1. Pegar a escova de dente.
2. Colocar creme dental na escova.
3. Enxaguar a boca.
4. Escovar os dentes.
5. Escovar a língua.
6. Lavar a escova.
7. Enxaguar a boca.
8. Secar o rosto.

4 MAP © 2006
Fundamentos de Computação
Lógica e Algoritmos
Conceitos Básicos da Linguagem C
Estruturas de Controle
Estruturas de Dados
Algoritmo
Arquivos
Modularização

Como um mesmo Versão “mulher-executiva” Versão “mulher-patricinha”


Programação de Computadores
problema pode ser 1. Estacionar o carro.
2. Fechar o carro.
1.
2.
Estacionar o carro.
Verificar a maquiagem.
resolvido de 3. Entrar na agência. 3. Fechar o carro.

maneiras diferentes, 4. Inserir o cartão magnético.


5. Digitar a senha.
4.
5.
Retirar as chaves do contato.
Entrar na agência.
vários algoritmos 6. Digitar a quantia desejada. 6. Procurar na bolsa o cartão

podem ser 7. Guardar o dinheiro.


8. Guardar o cartão. 7.
magnético.
Inserir o cartão magnético.
desenvolvidos para 9. Sair da agência. 8. Procurar na bolsa o papelzinho

resolver o mesmo 10. Entrar no carro.


11. Sair com o carro. 9.
onde está anotada a senha.
Digitar a senha.
problema, 10. Procurar na bolsa o talão de

produzindo o mesmo 11.


cheques.
Verificar o saldo no canhoto do
resultado mediante talão de cheques.

as mesmas condições 12.


13.
Digitar a quantia desejada.
Guardar na bolsa tudo o que foi
iniciais. retirado.
14. Guardar o dinheiro.
15. Sair da agência.
16. Procurar na bolsa as chaves do
Problema: Ir de carro carro.
ao caixa-eletrônico e 17. Entrar no carro.
18. Verificar a maquiagem.
fazer um saque. 19. Sair com o carro.
5 20. Soltar o freio de mão.MAP © 2006

Fundamentos de Computação
Lógica e Algoritmos
Conceitos Básicos da Linguagem C
Estruturas de Controle
Estruturas de Dados
Estruturas básicas
Arquivos
Modularização

Formalmente, um algoritmo é uma lista finita de instruções(1) que, se


Programação de Computadores

executadas, realizam de uma tarefa específica. O projeto de algoritmos


baseia-se em 3 estruturas básicas que controlam a execução das instruções de
forma dinâmica, ou seja, em tempo de execução:
• Seqüência: o fluxo de execução das instruções ocorre de modo linear, uma
após a outra. Deve existir apenas um caminho possível no conjunto de
instruções de um algoritmo.
• Seleção: execução seletiva de um grupo de instruções baseada em alguma
condição. Criam alternativas no fluxo de execução das instruções do
algoritmo. Em tempo de execução, apenas uma das alternativas será
escolhida.
• Iteração: execução repetitiva de um grupo de instruções até que alguma
condição seja satisfeita. O fluxo da execução pode voltar várias vezes ao início
de um conjunto de etapas, antes de prosseguir para a etapa seguinte.
(1) conjunto finito de comandos elementares, cada um com uma ou mais operações capazes de
serem executadas por um computador em tempo finito.
6 MAP © 2006
Fundamentos de Computação
Lógica e Algoritmos
Conceitos Básicos da Linguagem C
Estruturas de Controle
Estruturas de Dados
Características de um algoritmo
Arquivos
Modularização

a. Entrada: uma quantidade suficiente de informação deve ser fornecida, a


Programação de Computadores
priori;
b. Saída: pelo menos um resultado deve ser produzido até o final da execução
de todas as instruções;
c. Finitude: para qualquer valor de entrada, a tarefa é realizada em um
número finito de passos (a menos de erros de lógica);
d. Bem-definido: cada instrução deve ser clara e precisa, sem que possa haver
diferenças de interpretação;
e. Executável: cada instrução deve ser capaz de ser realizada, em um
intervalo de tempo finito, por uma pessoa usando apenas lápis e papel.
Validação de algoritmos: etapa realizada após o desenvolvimento de um
algoritmo para verificar se ele fornece a resposta correta para qualquer valor
de entrada válido.
Para um algoritmo ser bem-definido é suficiente descrever suas instruções
utilizando alguma linguagem de programação.
7 MAP © 2006

Fundamentos de Computação
Lógica e Algoritmos
Conceitos Básicos da Linguagem C
Estruturas de Controle
Estruturas de Dados
Programa
Arquivos
Modularização

Um programa é a expressão de um algoritmo usando uma linguagem de


Programação de Computadores

programação.

Linguagens de programação são desenvolvidas de forma que cada instrução


ou comando tenha um único significado.

Uma linguagem de programação possui características próprias que definem


as instruções possíveis de serem realizadas (semântica) e a forma correta de
implementação das instruções (sintaxe), permitindo que um programador
especifique exatamente como os dados serão manipulados e quais ações
devem ser tomadas sob circunstâncias variadas.

Alguns ambientes de desenvolvimento de software trazem aplicativos


próprios para a edição de programas, com recursos que permitem destacar as
palavras reservadas da linguagem, mas a maioria das linguagens aceita que o
programa-fonte seja escrito em qualquer editor de textos simples (como o
Bloco de notas da Microsoft, ou o vi em ambientes Unix).
8 MAP © 2006
Fundamentos de Computação
Lógica e Algoritmos
Conceitos Básicos da Linguagem C
Estruturas de Controle
Estruturas de Dados
Ambiente de desenvolvimento
Arquivos
Programação de Computadores Modularização

9 MAP © 2006

Fundamentos de Computação
Lógica e Algoritmos
Conceitos Básicos da Linguagem C
Estruturas de Controle
Estruturas de Dados
Paradigmas de programação
Arquivos
Modularização

São estratégias de desenvolvimento de um programa, que determinam as


Programação de Computadores

relações entre seus elementos (dados, procedimentos, funções).

Baseiam-se em regras que privilegiam ou proíbem determinadas construções


(tipos de dados e seus comportamentos, alterações no fluxo de execução,
chamadas a sub-rotinas etc.)

Novos paradigmas tendem a ser mais rígidos que os tradicionais, o que pode
facilitar a concepção e o desenvolvimento de algoritmos, bem como o
entendimento de um programa. Por outro lado, pode haver uma dificuldade
inicial de adaptação às regras do novo paradigma.

Alguns paradigmas são utilizados por várias linguagens, e algumas linguagens


permitem a utilização de mais de um paradigma. Algumas linguagens de
programação são desenvolvidas em torno de paradigmas exclusivos, não
utilizados por nenhuma outra linguagem (LISP, Prolog etc.)
10 MAP © 2006
Fundamentos de Computação
Lógica e Algoritmos
Conceitos Básicos da Linguagem C
Estruturas de Controle
Estruturas de Dados
Paradigmas de programação
Arquivos
Modularização

Seqüencial: programa escrito em um único bloco, permitindo desvios


Programação de Computadores
forçados no fluxo de execução dos comandos (comando goto). Seqüências de
comandos podem ser repetidas em diferentes partes do programa-fonte,
tornando-o excessivamente extenso. Os comandos são executados em dados
com escopo global, ou seja, os dados são “visíveis” por todo o programa.
Exemplo: arquivos de lotes do MS-DOS.

programa

programa-fonte
+
dados

O abuso na utilização de desvios pode dificultar o entendimento do programa


por outros programadores (código espaguete).
11 MAP © 2006

Fundamentos de Computação
Lógica e Algoritmos
Conceitos Básicos da Linguagem C
Estruturas de Controle
Estruturas de Dados
Paradigmas de programação
Arquivos
Modularização

Procedural: agrupa comandos repetitivos do programa-fonte em sub-rotinas


Programação de Computadores

(procedimentos ou funções). No programa principal, a chamada a uma sub-


rotina desvia temporariamente o fluxo de execução para os comandos da sub-
rotina, retornando ao ponto de chamada assim que a seqüência de comandos
da sub-rotina for completada (FORTRAN).

programa
principal

sub-rotina

12 MAP © 2006
Fundamentos de Computação
Lógica e Algoritmos
Conceitos Básicos da Linguagem C
Estruturas de Controle
Estruturas de Dados
Paradigmas de programação
Arquivos
Modularização

As sub-rotinas podem operar sobre dados globais, que devem ser passados
Programação de Computadores
como parâmetros de chamada da sub-rotina, ou então operar sobre dados de
escopo local, que são visíveis apenas pela sub-rotina em que forem
definidos. Sub-rotinas podem fazer chamadas à outras sub-rotinas ou a si
mesmas (recursão).
programa

programa principal
+
dados

...
sub-rotina 1 sub-rotina 2 sub-rotina n
+ + +
dados dados dados

13 MAP © 2006

Fundamentos de Computação
Lógica e Algoritmos
Conceitos Básicos da Linguagem C
Estruturas de Controle
Estruturas de Dados
Paradigmas de programação
Arquivos
Modularização

Modular: procedimentos e funções com funcionalidades semelhantes são


Programação de Computadores

agrupados em módulos. Cada módulo deve conter seu próprio conjunto de


dados. O código-fonte do programa-coordenador deve incluir diretivas
que informam ao compilador os módulos que contém as sub-rotinas
referenciadas pelo programa coordenador (pré-processamento).
programa

módulo 1
+
dados

programa-
coordenador
+
dados
módulo 2
+
dados

14 MAP © 2006
Fundamentos de Computação
Lógica e Algoritmos
Conceitos Básicos da Linguagem C
Estruturas de Controle
Estruturas de Dados
Paradigmas de programação
Arquivos
Modularização

Estruturada: semelhante ao paradigma procedural, sem a utilização de


Programação de Computadores
desvios forçados no fluxo de execução dos comandos. Exemplos: Pascal, C.

Orientada a objetos: construção de tipos de dados complexos (classes) a


partir de entidades existentes, definindo também seu comportamento
(métodos). Exemplos: C++, Java.

O programa escrito (codificado) em uma linguagem de programação de alto


nível, de acordo com algum dos paradigmas existentes, é denominado
programa-fonte. Antes de poder ser executado, o programa-fonte precisa
ser traduzido para a linguagem de máquina, que é a linguagem utilizada pelo
computador.
Para isso, um ou mais programas devem ser executados sobre o programa-
fonte para gerar os comandos equivalentes em linguagem de máquina. A
forma como os programas-fonte são traduzidos para a linguagem de máquina
classifica as linguagens de programação em 2 categorias: compiladas e
interpretadas.
15 MAP © 2006

Fundamentos de Computação
Lógica e Algoritmos
Conceitos Básicos da Linguagem C
Estruturas de Controle
Estruturas de Dados
Linguagens compiladas
Arquivos
Modularização

Um programa compilador verifica se sintaxe do programa-fonte obedece às


Programação de Computadores

regras da linguagem. Em caso afirmativo, ele cria um programa-objeto, que


corresponde ao programa-fonte traduzido para linguagem de máquina
(mais rápida). O programa-objeto gerado é então ligado (link) a outros
módulos (bibliotecas ou outros programas-objeto), produzindo um
programa-executável (FORTRAN, Pascal, C, C++).
EDITOR COMPILADOR

programa-
fonte

LIGADOR
programa-
objeto

programa-
executável

bibliotecas
16 MAP © 2006
Fundamentos de Computação
Lógica e Algoritmos
Conceitos Básicos da Linguagem C
Estruturas de Controle
Estruturas de Dados
Linguagens interpretadas
Arquivos
Modularização

No ambiente de desenvolvimento, o programa interpretador compila o


Programação de Computadores
programa-fonte, linha a linha. A sintaxe de cada comando é verificada e, se
estiver correta, o comando é executado. Em tais linguagens, a execução de
programas é, em média, dez vezes mais lenta que seu correspondente
compilado.

Uma característica de linguagens interpretadas é que não é necessário


declarar o tipo das variáveis do programa antes de usá-las (BASIC, MATLAB,
JavaScript).

INTERPRETADOR

programa-
resultado da
fonte
execução

17 MAP © 2006

Fundamentos de Computação
Lógica e Algoritmos
Conceitos Básicos da Linguagem C
Estruturas de Controle
Estruturas de Dados
Execução de programas
Arquivos
Modularização
Programação de Computadores

ENTRADA SAÍDA

programa em
A execução de um teclado mouse execução tela outro
programa consiste em dispositivo

carregá-lo na memória
do computador, onde disco arquivo arquivo impressora
o processador irá
executar o seguinte
algoritmo: resultado de memória memória disco
execução processador

1. Buscar a próxima instrução na memória.


2. Executar a instrução.
3. Se a instrução for diferente de FIM,
voltar ao passo 1.
memória disco

18 MAP © 2006

Вам также может понравиться