2. rangel@dsc.ufcg.edu.br
2
Introdução à Programação
Tópicos:
Introdução
O que é um Computador?
Organização de um Computador
Evolução de Sistemas Operacionais
Computação Pessoal, Distribuída e Cliente/Servidor
Linguagens de Máquina, de Montagem (Assembly) e
de Alto Nível
Histórico da Linguagem C
A Biblioteca Padrão de C
3. rangel@dsc.ufcg.edu.br
3
Tendências de Desenvolvimento de Software:
Tecnologia de Objetos
C e C++
Java
Outras Linguagens de Alto Nível
Programação Estruturada
Fundamentos de um Ambiente Típico de
Desenvolvimento de Programas em C
Tendências de Hardware
Internet
World Wide Web (WEB)
Introdução à Programação
4. rangel@dsc.ufcg.edu.br
4
Objetivos
Após a discussão do material deste capítulo, v.
será capaz de:
Compreender conceitos computacionais
básicos;
Familiarizar-se com diferentes tipos de
linguagens de programação;
Familiarizar-se com o histórico da linguagem de
programação C;
Tomar conhecimento da biblioteca-padrão da
linguagem C;
5. rangel@dsc.ufcg.edu.br
5
Objetivos
Após a discussão do material deste capítulo, v.
será capaz de:
Compreender os elementos de um ambiente
típico de programação em C;
Entender porque é importante aprender C em um
primeiro curso programação;
Ponderar porque C oferece um embasamento
para estudos posteriores de outras linguagens
de programação, em especial C++ e Java.
6. rangel@dsc.ufcg.edu.br
6
Introdução
Objeto de Estudo
A linguagem de programação C
Técnicas de Programação Estruturada
Extensão do Livro-texto
Fundamentos de C++
Capítulos 15 a 23
Fundamentos de Java
Capítulos 24 a 30
Público-alvo
Estudantes universitários com pouca ou nenhuma
experiência de programação
7. rangel@dsc.ufcg.edu.br
7
Computador
Dispositivo capaz de realizar computações e
tomar decisões lógicas
Computadores processam dados a partir de
conjuntos de instruções denominadas
programas
Máquina eletrônica capaz de receber dados,
submetê-los a um conjunto especificado/pré-
determinado de operações lógicas/aritméticas
e fornecer o resultado destas operações
O que é um Computador?
8. rangel@dsc.ufcg.edu.br
8
Os computadores atuais são dispositivos
eletrônicos que, sob direção e controle de um
programa, executam quatro operações
fundamentais
Entrada (Input)
Processamento (Processing)
Saída (Output)
Armazenamento (Storage)
O que é um Computador?
10. rangel@dsc.ufcg.edu.br
10
Sistema de computação
Integração de componentes atuando como
uma entidade, com o propósito de processar
dados, i.e. realizar algum tipo de operação
aritmética/ lógica envolvendo os dados, de
modo a produzir diferentes níveis de
informações
O que é um Computador?
12. rangel@dsc.ufcg.edu.br
12
Componentes de um Sistema Computacional
Peopleware
Componente humana de um sistema de
computação, i.e. indivíduos que utilizam o
computador como ferramenta
O que é um Computador?
13. rangel@dsc.ufcg.edu.br
13
Componentes de um Sistema Computacional
Hardware
Componente física de um sistema de
computação, i.e. todos os equipamentos
utilizados pelo usuário nas ações de entrada,
processamento, armazenamento e saída de
dados
O que é um Computador?
14. rangel@dsc.ufcg.edu.br
14
Componentes de um Sistema Computacional
Software
Componente lógica de um sistema de
computação, i.e. séries de instruções que fazem
o computador funcionar (programas de
computador)
programas básicos e programas do usuário
O que é um Computador?
15. rangel@dsc.ufcg.edu.br
O Software
É um conjunto de programas
Um programa são instruções eletrônicas que
informam ao computador como realizar
determinadas tarefas
Existem duas classes de software:
Software Básico
Software Aplicativo
15
16. rangel@dsc.ufcg.edu.br
Software Básico
O software básico tem como finalidade
possibilitar a operação e o uso do
computador, seja qual for a aplicação (o foco
está na máquina) – o software básico se
concentra na necessidades gerais de grande
parte dos usuários
16
17. rangel@dsc.ufcg.edu.br
Software Básico
TIPOS de Software Básico:
Sistemas Operacionais,
Compiladores,
Utilitários:
Office
Comunicação
Compactação
SGBD,
Tocadores e editores de áudio, vídeo, etc.
17
18. rangel@dsc.ufcg.edu.br
Software Aplicativo
solução de um problema específico,
utilizando o computador como ferramenta (o
foco está na aplicação)
Exemplos:
Folha de pagamento
Controle de vendas
Venda de passagens
Sistema de biblioteca
18
20. rangel@dsc.ufcg.edu.br
20
Unidade Central de Processamento
Unidade
de Controle
ULA
Unidade Primária
de Armazenamento
Dispositivos
de Entrada
Dispositivos
de Saída
Dispositivos de
Armazenamento
Secundário
O Hardware
21. rangel@dsc.ufcg.edu.br
21
Partes Funcionais de um computador :
Unidade de Entrada (Input Unit)
Obtenção de dados a partir de dispositivos de
entrada (e.g. teclado, mouse)
Unidade de Saída (Output unit)
Apresenta a informação em dispositivos de saída
(e.g. monitor, impressora)
Unidade de Memória (Memory unit)
Acesso rápido, de baixa capacidade de
armazenamento de informações.
Organização de um
Computador
22. rangel@dsc.ufcg.edu.br
22
Unidade Central de Processamento – UCP (Central
Processing unit - CPU)
Supervisão e coordenação das demais unidades
que compõem o computador
Unidade de Armazenamento Secundário (Secondary
storage unit)
Armazenamento barato, de alta capacidade e longa
duração
Armazenamento de programas inativos
Organização de um
Computador
31. rangel@dsc.ufcg.edu.br
Como a CPU Executa
Instruções
Quatro etapas são executadas para
cada instrução: captação, decodificação,
execução e armazenamento.
Ciclo de máquina: a quantidade de tempo
necessária para executar uma instrução.
Computadores pessoais executam-nas em
menos de um milionésimo de segundo.
Supercomputadores executam-nas em menos
de um trilionésimo de segundo.
Cada CPU tem seu próprio conjunto
de instruções:
Aquelas instruções as quais a CPU pode
entender e executar. 31
51. rangel@dsc.ufcg.edu.br
Microprocessador
Como funcionam os processadores
http://www.youtube.com/watch?v=IfOIB4-pn1k
Conheça mais o processador
http://olhardigital.uol.com.br/produtos/central_
de_videos/conheca-seu-micro-processador
51
53. rangel@dsc.ufcg.edu.br
Tipos de Chips
A Intel produz uma família de processadores:
Processadores Pentium 4, Pentium Dual Core, Core 2
Duo, i3 e i5 na maioria dos PCs.
Processador Celeron e Atom vendido para PCs
de baixo custo.
Opteron, Xeon, Itanium, Core 2 Extreme, Core 2 Quad e i7
para estações de trabalho high-end e servidores de rede.
Outros processadores:
A Cyrix e a AMD produzem microprocessadores
compatíveis com Intel.
Chips PowerPC são usados principalmente em
computadores Macintosh.
O microprocessador Alpha, da Compaq, é usado em
servidores high-end.
53
56. rangel@dsc.ufcg.edu.br
Memória Flash
• um chip re-escrevível que, ao contrário de uma memória RAM,
preserva o seu conteúdo sem a necessidade de fonte de
alconvencionalimentação
Os chips de memória flash assemelham-se aos cartões de crédito.
Menores do que uma unidade de disco e requerem menos energia.
56
69. rangel@dsc.ufcg.edu.br
Cache e Registradores
Diferença entre Memória Cache e Registradores
Registradores: armazenam dados a serem
usados de imediato
Cache: armazena dados usados mais
frequentemente
http://taturial.blogspot.com.br/2012/02/diferenca-entre-as-
memorias.html
http://informatica.hsw.uol.com.br/memoria-do-computador4.htm
http://crv.educacao.mg.gov.br/sistema_crv/index.aspx?ID_OBJETO=3
7829&tipo=ob&cp=003366&cb=&n1=&n2=Biblioteca%20Virtual&n3=C
adernos%20de%20Inform%C3%A1tica&n4=&b=s
69
72. rangel@dsc.ufcg.edu.br
Que usa múltiplos processadores
simultaneamente
O processador de controle divide o problema
em partes:
Cada parte é enviada a um processador distinto.
Cada processador tem sua própria memória.
O processador de controle monta os resultados.
Alguns computadores que usam
processamento paralelo operam em termos de
teraflops: trilhões de instruções com ponto
flutuante por segundo.
72
73. rangel@dsc.ufcg.edu.br
73
Tendências de Hardware
Características que, grosso modo, duplicam a cada
um ou dois anos:
Quantidade de memória (execução de programas)
Quantidade de meio de armazenamento secundário
(e.g. disco rígido)
Armazenamento de longa duração de programas
e dados
Rapidez do Processador
Velocidade com que os computadores executam
os programas
74. rangel@dsc.ufcg.edu.br
74
Processamento por Lotes (Batch processing)
Apenas um serviço (job) ou uma tarefa (task)
por vez
Sistemas Operacionais
Gestão de transições entre serviços/tarefas
Throughput incrementada
Quantidade de trabalho processada por
computadores
Evolução dos Sistemas
Operacionais
75. rangel@dsc.ufcg.edu.br
75
Multiprogramação
Compartilhamento de recursos
computacionais por vários serviços ou
tarefas
Compartilhamento de Tempo (Timesharing)
Execução de diversos serviços, com a UCP
alternando-se entre eles tão freqüentemente
que os usuários podem interagir com cada
programa durante sua execução.
Evolução dos Sistemas
Operacionais
76. rangel@dsc.ufcg.edu.br
76
Computação Pessoal
Econômica o bastante para uso individual
Computação Distribuída
Processamento da informação através de
redes de computadores
Computação Cliente/Servidor
Compartilhamento da informação ao longo de
redes de computadores entre servidores e
clientes de arquivos (computadores pessoais)
Computação Pessoal, Distribuída e
Cliente/Servidor
77. rangel@dsc.ufcg.edu.br
77
Tipos de Linguagens de Programação
Linguagens de Máquina
Seqüências de números relativas a instruções
de máquina específicas
Exemplo: +1300042774
+1400593419
+1200274027
Linguagens de Máquina, de
Montagem e de Alto Nível
78. rangel@dsc.ufcg.edu.br
78
Tipos de Linguagens de Programação
Linguagens de Montagem (Assembly)
Instruções computacionais formuladas a
partir de termos ingleses abreviados,
representando operações elementares,
traduzidas a partir de montadores
(assemblers)
Exemplo: LOAD A
ADD B
STORE (A+B)
Linguagens de Máquina, de
Montagem e de Alto Nível
79. rangel@dsc.ufcg.edu.br
79
Tipos de Linguagens de Programação
Linguagens de Alto Nível
Códigos similares ao inglês cotidiano
Uso de notações matemáticas (traduzidas via
compiladores)
Exemplo: Bruto = Líquido + Descontos
Área = (Base * Altura)/2
Linguagens de Máquina, de
Montagem e de Alto Nível
80. rangel@dsc.ufcg.edu.br
80
Linguagem C
Desenvolvida por Ritchie, a partir de duas
linguagens de programação antecessoras:
BCPL e B
Uso no desenvolvimento do UNIX
Emprego na codificação de sistemas
operacionais modernos
Independência de hardware (portável)
"C Tradicional" C desenvolvido no final da
década de 70
Histórico da Linguagem C
81. rangel@dsc.ufcg.edu.br
81
Padronização da Linguagem C
Motivação: Incompatibilidade entre diversas
variantes existentes de C
Formação de um comitê da ANSI para a
definição de uma linguagem "isenta de
ambigüidades e independente de máquina"
Criação do C padrão em 1989
Atualização da linguagem em 1999
Histórico da Linguagem C
82. rangel@dsc.ufcg.edu.br
82
Programas em C módulos denominados
funções
Possibilidade de criação de funções
específicas pelo programador
Vantagem
Conhecimento exato do comportamento das
funções
Desvantagem
Dispêndio de tempo no desenvolvimento de
funções específicas
A Biblioteca Padrão de C
83. rangel@dsc.ufcg.edu.br
83
Programas em C módulos denominados
funções
Uso freqüente das funções da biblioteca de C por
programadores
Uso como “blocos” para a construção de
aplicações próprias
Reuso evita a “reinvenção da roda”
Uso de funções existentes é, em geral, melhor do
que a reescrita de código com o mesmo
propósito
Funções da biblioteca foram cuidadosamente
desenvolvidas para uso eficiente e portabilidade
A Biblioteca Padrão de C
84. rangel@dsc.ufcg.edu.br
84
Objetos
Componentes reusáveis de software que
modelam itens do mundo real
Unidades significativas de software
Objetos de dados, tempo, pagamento,
áudio, vídeo, arquivos, etc.
Qualquer nome pode ser representado
como um objeto com comportamento
bem definido
Maior capacidade de reuso
Tendências de Desenvolvimento de
Software: Tecnologia de Objetos
85. rangel@dsc.ufcg.edu.br
85
Objetos
Maior compreensibilidade, melhor
organização, maior facilidade de manutenção
do que a programação baseada em
procedimentos (procedural)
Favorescimento à modularidade
Tendências de Desenvolvimento de
Software: Tecnologia de Objetos
86. rangel@dsc.ufcg.edu.br
86
C++
Superconjunto de C, desenvolvido por Bjarne
Stroustrup no Bell Labs
“Extende" C, oferecendo facilidades de
orientação a objetos
Poder do projeto orientado a objetos
Produtividade incrementada de 10 a 100
vezes
Linguagem dominante na indústria e em
academias
C e C++
87. rangel@dsc.ufcg.edu.br
87
Aprendizado de C++
Uma vez que C++ abrange C, se afigura
indispensável o domínio de C para um
aprendizado efetivo de C++
Vide Capítulo 15 (introdução ao C++)
C e C++
88. rangel@dsc.ufcg.edu.br
88
Uso de Java
Criação de páginas Web com conteúdo
dinâmico e interativo
Desenvolvimento de aplicações empresariais
em larga escala
Incrementação da funcionalidade de
servidores Web
Desenvolvimento de aplicações para
dispositivos tais como telefones celulares,
pagers e assistentes digitais pessoais (PDA)
JAVA
89. rangel@dsc.ufcg.edu.br
89
FORTRAN
Uso em aplicações de engenharia e
aplicações científicas
COBOL
Uso para a manipulação de grandes
quantidades de dados
Pascal
Uso acadêmico
Outras Linguagens de Alto
Nível
91. rangel@dsc.ufcg.edu.br
91
Pré-processador Disco
Ambiente Típico de Desenvolvimento
de Programas em C
Fases de Programas
em C/C++
Edição
Pré-processamento
Compilação
Linkagem
Carregamento
Execução
O programa é criado no
editor e armazenado em
disco.
O programa pré-
processador processa o
código.
O carregador transfere o
programa para a memória.
A UCP recupera cada
instrução e a executa,
armazenando (quando
possível) novos valores de
dados à medida que o
programa é executado.
O compilador cria o
código-objeto e o
armazena em disco.
O linker faz o link do
código-objeto com as
bibliotecas.
Carregador
Compilador
Editor
Linker
Disco
UCP
Memória Primária
Disco
Disco
Disco
Memória Primária
92. rangel@dsc.ufcg.edu.br
92
/* Programa que executa a soma de dois inteiros */
#include <stdio.h>
/* início da função main */
int main()
{
int inteiro1; /*variável que contém a primeira parcela da soma */
int inteiro2; /* variável que contém a segunda parcela da soma */
int soma; /* variável na qual será armazenado o resultado da soma */
printf(“Digite o primeiro inteiro:n"); /*preparação para o recebimento do
primeiro número inteiro */
scanf( "%d", &inteiro1 ); /* leitura do primeiro número */
printf(“Digite o segundo inteiro:n"); /* preparação para o recebimento do
segundo número inteiro*/
scanf( "%d", &inteiro2 ); /* leitura do primeiro número */
soma = inteiro1 + inteiro2; /* realização da soma dos 2 inteiros digitados pelo
usuário */
printf( “A soma eh igual a %dn", soma ); /* impressão da soma */
return 0; /* indicação de que o programa encerrou satisfatoriamente */
} /* fim da função main */
Preparação para o Capítulo 2
Exemplo (Soma de 2 Inteiros)
93. CEEI DSC
rangel@dsc.ufcg.edu.br
Andrey Elisio Monteiro Brito
José Eustáquio Rangel de Queiroz
Joseluce de Farias Cunha
Roberto Medeiros de Faria
DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO
UNIVERSIDADE FEDERAL DE CAMPINA GRANDE
CENTRO DE ENGENHARIA ELÉTRICA E INFORMÁTICA