Notas de aula 1 - Computação UFCG

Propaganda
DSC/CCT/UFCG
[email protected]
Profs.: José Eustáquio Rangel de Queiroz
Roberto Medeiros de Faria
Carga Horária: 60 h
DSC/CCT/UFCG
Plano de Ensino
 Objetivos
 Ementa
 Técnicas de Ensino
 Recursos Didáticos
 Avaliação
 Resultados Esperados
[email protected]
 Bibliografia
2
DSC/CCT/UFCG
Objetivos
 Oferecer ao aluno uma visão geral da Informática e suas
aplicações à Engenharia Elétrica;
 Apresentar um sistema computacional, discutindo seus
principais componentes;
 Definir e construir conceitos fundamentais da Ciência de
Computação;
 Propor
soluções computacionais
simples da Engenharia Elétrica;
 Desenvolver
[email protected]
e testar soluções
computacionais usando algoritmos;
para
problemas
de
problemas
3
Objetivos
DSC/CCT/UFCG
 Projetar, elaborar e depurar soluções de problemas
computacionais usando programas na linguagem C;
 Estudar
programação modular, discutindo as
principais técnicas utilizadas na implementação de
estruturas de dados básicas, de algoritmos de busca e
ordenação;
 Resolver
a
[email protected]
eficientemente problemas de
elétrica em ambientes computacionais.
engenharia
4
DSC/CCT/UFCG
Ementa

[email protected]
Introdução à Programação: aplicações
computacionais;
 Introdução à Organização de Computadores;
dos
sistemas
de
sistemas

Soluções de problemas mediante o uso
computacionais;

Processo de desenvolvimento de programas;

Algoritmos;

Modelos de Programação;

Introdução a uma Linguagem de Programação;

Tipos de Dados (entradas e saídas de dados), Operadores e
Expressões;
5
[email protected]
DSC/CCT/UFCG
Ementa

Comandos de Controle de Fluxo (decisões e repetições);

Agregados de Dados Homogêneos e Heterogêneos;

Modularização de Programas;

Recursividade;

Alocação Dinâmica de Memória;

Portabilidade de Programas;

Técnicas de bom estilo de programação;

Projeto de Aplicação.
6
DSC/CCT/UFCG
Técnicas de Ensino
 Aulas Expositivas
 Atividades Individuais e Grupais Intra-Classe
[email protected]
 Atividades Individuais e Grupais Extra-Classe
7
DSC/CCT/UFCG
Recursos Didáticos
 Quadro Branco
 Retroprojetor/ Datashow
 Computador
[email protected]
 Biblioteca Setorial
8
DSC/CCT/UFCG
Avaliação
 Contínua
 Avaliações individuais e trabalhos em sala de aula
 Trabalhos interativos
 Atividades de pesquisa e desenvolvimento extra-classe
 Seminários de Projeto
[email protected]
 Avaliação de conclusão do curso
9
DSC/CCT/UFCG
Resultado Esperado
 Espera-se
[email protected]
que os conhecimentos repassados
auxiliem o aluno no raciocínio e na aplicação de
conceitos pertinentes ao contexto de estudo,
visando a elaboração mais eficiente de programas e
a preparação para a compreensão de tópicos mais
avançados de programação, a serem estudados na
disciplina Técnicas de Programação.
10
Bibliografia
DSC/CCT/UFCG
 Livro-Texto

DEITEL, H. M. & DEITEL, P. J., Como Programar em C.
LTC Editora, 1999.
[email protected]
 Bibliografia Complementar

ECKEL, BRUCE , Thinking in C++ . MindView Inc., 2000.

GACLI-UNICAMP, Introdução à Linguagem C.

JAMSA, KRIS & KLANDER, L., Programando em C/C++.
Makron Books Editora do Brasil Ltda, 1999.

KERNIGHAN, B.& RITCHIE, D. M., A linguagem de
Programação C. Editora Campus, 1986.

MESQUITA, R. C., Curso de C. Núcleo de Ensino à
Distância. Escola de Engenharia – UFMG.
11
Bibliografia
DSC/CCT/UFCG
[email protected]
 Bibliografia Complementar

NONATO, L. G., Tipos e Estruturas de Dados. Instituto de
Ciências Matemáticas e de Computação - Departamento
de Computação e Estatística - USP.

RUMBAUGH, B. M., PREMERLANI, W., EDDY, F. &
LORENSEN, W. Object-Oriented Modeling and Design.
Prentice Hall, 1991.

SCHILDT, H., C Avançado - Guia do Usuário. McGraw-Hill,
1987.

SCHILDT, HERBERT, C Completo e Total. Makron Books
do Brasil Editora Ltda., 3a Edição, 1996.
12
Bibliografia
DSC/CCT/UFCG
[email protected]
 Bibliografia Complementar

STROUSTRUP, BJARNE, The Design and Evolution of
C++. Addison Wesley, 1994.

STROUSTRUP, BJARNE, A Linguagem de Programação
C++. Editora Artes Médicas Sul Ltda. (Bookman), 2000.
13
DSC/CCT/UFCG
Introdução à Programação
Tópicos
[email protected]
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
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
Tendências de Desenvolvimento de Software:
Tecnologia de Objetos
14
DSC/CCT/UFCG
Introdução à Programação
Tópicos
[email protected]
1.10
1.11
1.12
1.13
1.14
C e C++
Java
Outras Linguagens de Alto Nível
Programação Estruturada
Fundamentos de um Ambiente
Desenvolvimento de Programas em C
1.15 Tendências de Hardware
1.16 Internet
1.17 World Wide Web (WEB)
Típico
de
15
DSC/CCT/UFCG
Objetivos (1/2)
 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
programação C;
[email protected]
 Tomar
com o histórico da linguagem de
conhecimento
linguagem C;
da
biblioteca-padrão
da
16
DSC/CCT/UFCG
Objetivos (2/2)
 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;
porque é importante aprender C em um
primeiro curso programação;
 Entender
porque C oferece um embasamento para
estudos posteriores de outras linguagens de
programação, em especial C++ e Java.
[email protected]
 Ponderar
17
DSC/CCT/UFCG
1.1 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
[email protected]

Estudantes universitários com pouca ou nenhuma
experiência de programação
18
DSC/CCT/UFCG
1.2 O que é um Computador?
 Computador
 Dispositivo
capaz de realizar operações
lógicas/aritméticas e tomar decisões, com
grande velocidade e precisão
 Processa grande quantidade de dados sob o
controle
de
conjuntos
denominadas programas
de
instruções
[email protected]
 Máquina
eletrônica
capaz
de
receber
informações, submetê-las a um conjunto
especificado/ pré-determinado de operações
lógicas/aritméticas e fornecer o resultado destas
operações
19
DSC/CCT/UFCG
1.2 O que é um Computador?
 Os computadores atuais são dispositivos
[email protected]
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)
20
DSC/CCT/UFCG
1.2 O que é um Computador?
 Ciclo IPOS
Entrada
Processamento
[email protected]
Saída
Armazenamento
21
DSC/CCT/UFCG
1.2 O que é um Computador?
 Sistema de computação
[email protected]

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
22
DSC/CCT/UFCG
1.2 O que é um Computador?
 Componentes de um Sistema Computacional
[email protected]
Peopleware
Hardware
Software
23
DSC/CCT/UFCG
1.2 O que é um Computador?
 Componentes de um Sistema Computacional

Peopleware
[email protected]

Componente humana de um sistema
de computação, i.e. indivíduos que
utilizam
o
computador
como
ferramenta
24
DSC/CCT/UFCG
1.2 O que é um Computador?
 Componentes de um Sistema Computacional

Hardware
[email protected]

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
25
DSC/CCT/UFCG
1.2 O que é um Computador?
 Componentes de um Sistema Computacional

Software
[email protected]

Componente lógica de um sistema de
computação, i.e. séries de instruções
que fazem o computador funcionar
(programas de computador)
26
DSC/CCT/UFCG
1.2 O que é um Computador ?
 Hardware
 Gama
variada de dispositivos
compõem um computador
que
 Teclado,
terminal de vídeo (monitor),
mouse, discos, memória, CD-ROM e
unidades de processamento
[email protected]
 Software
 Programas que são executados em um
computador
27
1.3 Organização de um Computador
DSC/CCT/UFCG
Unidade Central de Processamento
Dispositivos
de Entrada
Unidade
de Controle
ULA
Dispositivos
de Saída
[email protected]
Unidade Primária
de Armazenamento
Dispositivos de
Armazenament
o Secundário
28
1.3 Organização de um Computador
DSC/CCT/UFCG

Unidades funcionais básicas

Unidade de Entrada (Input Unit)


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)

[email protected]
Obtenção da informação a partir de dispositivos de
entrada (e.g. teclado, mouse)
Acesso
rápido,
de
baixa
capacidade
e
armazenamento da informação obtida pelos
dispositivos de entrada
29
1.3 Organização de um Computador
DSC/CCT/UFCG

Unidades funcionais básicas

Unidade Lógica e Aritmética - ULA (Arithmetic and Logic unit
- ALU)


operações
Unidade de Controle - UC

[email protected]
Execução de cálculos aritméticos,
lógicas e tomada de decisões
Supervisão e coordenação das demais unidades
que compõem o computador
30
1.3 Organização de um Computador
DSC/CCT/UFCG

Unidades funcionais básicas

Unidade de Armazenamento Secundário (Secondary storage
unit)
 Armazenamento barato, de alta capacidade e longa
duração
[email protected]
 Armazenamento de programas inativos
31
1.3b Aritmética do Computador
DSC/CCT/UFCG
 Representação de inteiros
 Base binária (2)



[email protected]

2 “bits” disponíveis [0,1]
“Posição” indica potência positiva de 2
1011 na base 2 = 1x23 + 0x22 + 1x21 + 1x20 =
8+0+2+1 = 11 na base decimal
Ou, melhor 1x23 + 0x22 + 1x21 + 1x20 =
1 + 2(1+2(0+2(1))) = 11
32
1.3b Aritmética do Computador
DSC/CCT/UFCG
[email protected]
 Representação de números fracionários
 Base binária (2)
 “Posição” da parte inteira indica potência
positiva de 2
 Potência negativa de 2 para parte
fracionária
 10,11 na base 2 = 1x21 + 0x20 + 1x2-1 +
1x2-2 = 2+0+1/2+1/4 = 2,75 na base decimal
33
1.3b Aritmética do Computador
DSC/CCT/UFCG
Conversão de inteiro para binário: (dividindo por 2)
 Exemplo: Converter 25 decimal para binário
1=bms
12 / 2 = 6 (quociente) e resto 0
6 / 2 = 3 (quociente) e resto 0
3 / 2 = 1 (último quociente=BMS) e resto 1
Binário = BMS ... bms = 1 1 0 0 1
 25 / 2 = 12 (quociente) e resto



[email protected]

= 1x24 + 1x24 + 0x22 + 0x21 + 1x20
= 16 + 8 + 0 + 0 + 1 = 25 decimal
34
1.3b Aritmética do Computador
DSC/CCT/UFCG
Conversão de fração: (multiplicando por 2)
 Exemplo: converter 0,625 decimal para binário
[email protected]
 0,625 x 2 = 1,25 logo a primeira casa fracionária é
1 ; nova fração (resto) é 0,25 (1,25-1=0,25)
 0,25 x 2 = 0,5 segunda casa é 0 ; resto é 0,5
 0,5 x 2 = 1,0 terceira casa é 1 ; resto é zero.
 Resultado: 0,62510 = 0,1012
35
1.3b Aritmética do Computador
DSC/CCT/UFCG
 Problema:
 5,8 = 101,11001100... , uma dízima.
 11,6 = 1011,10011001100...
Toda a aritmética do computador é arredondada
[email protected]
10000

0,22 = 2199,7778
i=1
36
1.4 Evolução dos Sistemas Operacionais
DSC/CCT/UFCG
 Processamento por Lotes (Batch processing)
 Apenas um programa, um serviço (job) ou uma
tarefa (task) por vez
 Multiprogramação
 Um
processador compartilhado
serviços ou tarefas
por
vários
 Multiprocessamento
 Vários processadores compartilhados por vários
[email protected]
serviços ou tarefas
37
1.4 Evolução dos Sistemas Operacionais
DSC/CCT/UFCG
 Compartilhamento de Tempo (Timesharing)
 Execução de diversos programas, com a UCP
[email protected]
alternando-se entre eles tão freqüentemente
que os usuários têm a impressão de ter o
computador só para si, podendo interagir
com cada programa durante sua execução.
38
DSC/CCT/UFCG
1.5 Computação
Pessoal,
Distribuída e Cliente/Servidor
 Computação Pessoal
 Econômica o bastante para uso individual
 Computação Distribuída
 Processamento da informação através de redes de
computadores e que a tarefa executa simultaneamente em
vários computadores
 Computação Cliente/Servidor
[email protected]
 Compartilhamento da informação, através de redes de
computadores, entre servidores (repositórios) e clientes
(processadores usuários)
39
DSC/CCT/UFCG
1.6 Linguagens de Máquina, de
Montagem e de Alto Nível
 Tipos de Linguagens de Programação
 Linguagens de Máquina
 Seqüências
de números relativas a instruções
de máquina específicas
[email protected]
 Exemplo:
+11000111 000010011
+10101100 111000111
+01001100 011100001
40
DSC/CCT/UFCG

1.6 Linguagens de Máquina, de
Montagem e de Alto Nível
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
via
montadores (assemblers)

Exemplo: LOAD A
[email protected]
ADD B
STORE C
41
DSC/CCT/UFCG

1.6 Linguagens de Máquina, de
Montagem e de Alto Nível
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:
Líquido = Bruto - Descontos
[email protected]
Área = (Base * Altura)/2
42
DSC/CCT/UFCG
1.7 Histórico da Linguagem C
 Linguagem C
 Desenvolvida por Ritchie, a partir de duas
linguagens de programação antecessoras: BCPL
eB
 Uso no desenvolvimento do UNIX
 Emprego
na
codificação
operacionais modernos
de
sistemas
[email protected]
 Independência de hardware (portável)
 "C Tradicional"  C desenvolvido no final da
década de 70
43
DSC/CCT/UFCG
1.7 Histórico da Linguagem C
[email protected]
 Padronização da Linguagem C

Motivação: Existência e incompatibilidade de diversas
variantes 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
44
DSC/CCT/UFCG
1.8 A Biblioteca Padrão de C
 Programas em C  módulos denominados funções
 Possibilidade de criação de funções específicas
pelo programador

Vantagem


Desvantagem

[email protected]
Conhecimento exato do comportamento das funções
Dispêndio de tempo no desenvolvimento de funções
específicas
45
DSC/CCT/UFCG
1.8 A Biblioteca Padrão de C
 Programas em C  módulos denominados funções
 Uso freqüente das funções da biblioteca de C por
programadores

Uso como “blocos” ou “componentes” para a
construção de aplicações próprias
[email protected]
 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
46
DSC/CCT/UFCG
1.9 Tendências de Desenvolvimento
de
Software:
Tecnologia
de
OBJETOS
 Objetos
 Componentes reusáveis de
modelam itens do mundo real
software
que
[email protected]
 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
47
1.9
DSC/CCT/UFCG
Tendências de Desenvolvimento de
Software: Tecnologia de OBJETOS
 Objetos
 Maior compreensibilidade, melhor organização,
maior facilidade de manutenção do que a
programação
baseada
em
procedimentos
(procedural)
[email protected]
 Favorecimento à modularidade
48
1.10 C e C++
DSC/CCT/UFCG
 C++
 Superconjunto de C, desenvolvido por Bjarne
Stroustrup no Bell Labs
 “Extende"
C, oferecendo
orientação a objetos
facilidades
de
 Poder do projeto orientado a objetos
[email protected]

Produtividade incrementada de 10 a 100
vezes
 Linguagem
academias
dominante
na
indústria
e
em
49
DSC/CCT/UFCG
1.10 C e C++
 Aprendizado de C++

[email protected]

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++)
50
1.11 JAVA
DSC/CCT/UFCG
[email protected]
 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)
51
DSC/CCT/UFCG
1.12 Outras Linguagens de Alto
Nível
 SmallTalk

Programação orientada a objetos
 FORTRAN

Uso em aplicações de engenharia e aplicações científicas
 COBOL

Uso para a manipulação de grandes quantidades de dados
 Pascal
[email protected]

Uso acadêmico
52
1.13 Programação
Estruturada
DSC/CCT/UFCG
 Programação Estruturada
 Abordagem com regras bem definidas para a escrita de
programas
 Clareza, facilidade de teste e depuração e facilidade de
alteração do código
 Multi-tarefas
[email protected]
 Especificação de que diversas atividades são executadas
paralelamente
53
DSC/CCT/UFCG
1.14 Fundamentos de um Ambiente
Típico de Desenvolvimento de
Programas em C
O programa é criado no
 Fases
de
em C/C++

Editor
Pré-processador
Edição

Pré-processamento

Compilação

[email protected]
Programas
Compilador
Linker
Linkagem
Disco
editor e armazenado em
disco.
Disco
O
programa
préprocessador analisa o
código fonte.
Disco
O compilador cria
código-objeto
e
armazena em disco.
Disco
O linker faz a conexão
do código-objeto com as
bibliotecas.
o
o
Memória Primária

Carregamento

Execução
Carregador
Disco
Entradas
UCP
Saidas
O carregador transfere o
programa
para
a
memória.
Memória Primária
A UCP recupera cada
instrução e a executa,
armazenando
(quando
possível) novos valores
de dados à medida que
o programa é executado.
54
DSC/CCT/UFCG
1.15 Tendências de Hardware
 Características que, grosso modo, duplicam a
cada um ou dois anos:

Espaço de memória (execução de programas)

Quantidade de meio de
secundário (e.g. disco rígido)


Armazenamento de longa duração de
programas e dados
Rapidez do Processador

[email protected]
armazenamento
Velocidade com que os computadores
executam os programas
55
DSC/CCT/UFCG
1.16 Internet
 Facilidades da Internet

Comunicação rápida e fácil via e-mail

Conexão de computadores via rede internacional
[email protected]
 Chaveamento de Pacotes

Transferência de dados digitais via unidades
denominadas pacotes (packets)

Possibilidade de envio e recepção simultânea de
dados por múltiplos usuários
56
1.16 Internet
DSC/CCT/UFCG
 Descentralização do Controle

Possibilidade de operação de outras partes da rede caso
uma parte da Internet apresente falhas
 Protocolos de comunicação

HTTP: composto de <cabecalho, corpo>


Corpo pode ser: text/plain; text/html; image/gif; image/gif;
image/jpeg; aplicação/zip
FTP
 Largura de Faixa
[email protected]

Capacidade de transferência da informação exibida pelas
linhas ou meios de comunicações
57
1.17 WEB
DSC/CCT/UFCG
[email protected]
 “Teia Global” (World Wide Web)

Localização/Visualização de documentos multimídia de
quase toda a espécie

Acesso instantâneo e adequado à informação existente nas
mais diversas partes do mundo

Possibilidade de divulgação em nível mundial de negócios
realizados por indivíduos e pequenas empresas

Alteração dos modos de realização de negócios (Ecommerce)
58
1.18
DSC/CCT/UFCG
Preparação para o Capítulo 2 –
Exemplo (Soma de 2 Inteiros)
// 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
[email protected]
usuário */
printf( “A soma eh igual a %d\n", soma ); // impressão da soma
return 0; // indicação de que o programa encerrou satisfatoriamente
} // fim da função main
59
DSC/CCT/UFCG
José Eustáquio Rangel de Queiroz
Roberto Medeiros de Faria
Ulrich Schiel
UNIVERSIDADE FEDERAL DE CAMPINA GRANDE
CENTRO DE CIÊNCIAS E TECNOLOGIA
[email protected]
DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO
Download