Fundamentos de Programa - PowerPoint PPT Presentation

1 / 109
About This Presentation
Title:

Fundamentos de Programa

Description:

Fundamentos de Programa o Alexandre Carlos Brand o Ramos http://www.ice.unifei.edu.br/ramos ramos_at_unifei.edu.br Instru o do/while Caso simples: do instru o ... – PowerPoint PPT presentation

Number of Views:120
Avg rating:3.0/5.0
Slides: 110
Provided by: MRRA2
Category:

less

Transcript and Presenter's Notes

Title: Fundamentos de Programa


1
Fundamentos de Programação
  • Alexandre Carlos Brandão Ramos
  • http//www.ice.unifei.edu.br/ramos
  • ramos_at_unifei.edu.br

2
Ementa
01/08/2001
  • Fornecer os principais conceitos de linguagens de
    programação e explorar esses conceitos a partir
    de uma linguagem algorítmica (Português
    Estruturado) bem como sua implementação a partir
    do conhecimento da linguagem C.

3
Objetivos
  • 1.      Fornecer conhecimentos básicos sobre
    Álgebra binária
  • 2.      Introduzir conceitos sobre Representação
    de Dados, de modo a facilitar o entendimento da
    lógica de programação
  • 3.      Fornecer conhecimentos básicos sobre o
    funcionamento de Computadores Digitais (hardware
    e software)
  • 4.      Introduzir ao conhecimento da Programação
    Estruturada, permitindo a criação (Análise e
    Projeto) de algoritmos.
  • 5.      Fornecer subsídios para a implementação
    de programas utilizando a Linguagem de
    programação C.

4
Critérios de Avaliação
  • 60 da nota do bimestre prova
  • 30 da nota do bimestre trabalho individual a
    ser realizado em laboratório
  • 10 trabalhos em grupo (máximo de 4 alunos) a ser
    entregue no dia da prova teórica.
  • Datas de Provas
  • B1 Teórica 29/09/2015
  • Laboratorio 01/10/2015
  • B2 Teórica 03/11/2015
  • Laboratório 04/11/2015

5
Pré-história
  • Pré-história das calculadoras
  • O primeiro dispositivo de cálculos foi o ábaco,
    originário da China em 2000 AC.

6
Régua de cálculo
  • No início do século XVII, o escocês John Napier
    inventou um dispositivo chamado Ossos de Napier
    que são tabelas de multiplicação gravadas em
    bastão, o que evitava a memorização da tabuada, e
    que trouxe grande auxílio ao uso de logaritmos,
    em execução de operações aritméticas como
    multiplicações e divisões longas.
  • Hoje, o dispositivo aperfeiçoado é empregado
    freqüentemente pelos engenheiros, através da
    régua de cálculo.

7
Calculadoras
  • A primeira calculadora somente somava e subtraía
    e foi inventada por Blaise Pascal na França em
    1642, para ajudar o seu pai.
  • A máquina contém como elemento essencial uma roda
    dentada construída com 10 "dentes". Cada "dente"
    corresponde a um algarismo, de 0 a 9.
  • A
    primeira roda da direita

  • corresponde às unidades, a

  • imediatamente à sua
  • esquerda
    corresponde às
  • dezenas, a
    seguinte às
  • centenas e
    sucessivamente.

8
A máquina de Leibniz
  • Cerca de 30 anos após a construção da máquina de
    Pascal, Gottfried Wilhem Von Leibniz inventou um
    dispositivo constituído por um conjunto com dez
    "dentes", cada um dos quais mais comprido que o
    anterior, que permitiu efetuar de modo automático
    a multiplicação e divisão.

9
Alan Turing
  • Alan Turing imaginou uma máquina universal que
    pudesse realizar cálculos automaticamente,
    demonstrando que um conjunto de estruturas
    simples podia resolver qualquer problema
    complexo. Esta máquina não chegou a ser montada.
  • Entretanto ele e a sua equipe desenvolveram o
    Colossus, um dos primeiros computadores do mundo,
    visto aqui em operação durante a Segunda Guerra
    Mundial.
  • Essa máquina enorme continha 1.500 válvulas, e
    sempre alguma se queimava em alguns minutos. O
    Colossus era capaz de processar 5.000 caracteres
    por segundo, e foi responsável pela decodificação
    das mensagens alemãs "Enigma".

10
John Von Neumann
  • Matemático brilhante, fugiu da Alemanha nazista
    para os Estados Unidos, professor em Princeton,
    participou do projeto para a construção da bomba
    atômica.
  • Foi convidado para o projeto ENIAC (Electronic
    Numeric Integrator And Calculator). O trabalho
    estava sob a orientação de engenheiros
    eletrônicos mas, como matemático, analisou o
    problema de modo diferente e
    redigiu um relatório que estruturou a arquitetura
    dos modernos computadores.
  • Ele e sua equipe desenvolveram o EDVAC
    (Electronic Discrete
    Variable Computer) onde, foi aplicada a idéia de
    programação interna que trata do armazenamento de
    programas, codificados de acordo com certos
    critérios na memória do computador e não em
    dispositivos externos, como ocorria até então.
  • Esse procedimento aumenta a operacionalidade dos
    programas, pois grupos de instruções podem ser
    executados várias vezes e na ordem que se fizer
    necessária.

11
Computadores modernos
  • Mudanças tecnológicas
  • vacuum tube -gt transistor -gt IC -gt VLSI
  • Nanocircuitos
  • dobram a cada 1.5 anos capacidade de memória
    velocidade do processador (devido a avanços
    tecnológicos e organização)

12
Problemas
  • Nos anos 60/70
  • minimizar espaço em memória melhora o desempenho
  • Problema atual
  • hierarquia de memórias
  • paralelismo dos processadores
  • otimização dos compiladores
  • sistema operacional...

13
O que é um computador?
  • Componentes
  • entrada (mouse, teclado)
  • saída (monitor, impressora)
  • memória (discos, DRAM, SRAM, CD)
  • rede

14
Sistemas de Numeração
  • Introdução
  • Existem várias regras que permitem ler e escrever
    qualquer número, usando poucas palavras e poucos
    símbolos.
  • O conjunto de tais regras constitui um Sistema de
    Numeração. Estes sistemas, têm variado com as
    épocas e com os povos.

15
Base de um Sistema
  • É o número de elementos necessários para formar
    um conjunto padrão que auxilie a contagem de
    objetos.
  • Assim, quando falamos em base 10, estamos
    pensando na formação de conjuntos com dez
    elementos, isto é, dada uma coleção de objetos,
    procuramos saber quantos conjuntos de 10 podem
    ser formados.
  • A base 10 é usada desde a antigüidade, dada a
    correspondência com os dedos das duas mãos. Se
    tivéssemos 8 e não 10 dedos nas mãos qual seria a
    nossa base de numeração?

16
Outras bases
  • Um sistema de base 12, é aquele que forma
    conjuntos de doze elementos. É nessa base que
    costumeiramente se contam as (em dúzias) as
    frutas, os ovos etc.
  • A contagem do tempo, desde os antigos babilônios,
    é feita na base sessenta (o conjunto de sessenta
    segundos constitui um minuto)
  • A civilização Maia, da América Central, usava a
    base vinte para a contagem de seus objetos
  • Os computadores utilizam a base dois...

17
Base decimal
  • Principais características
  • é de base dez
  • usa somente os dez numerais indo-arábicos
    (algarismos) 1,2,3,4,5,6,7,8,9 e 0 para escrever
    todos os números.
  • Obedece ao Princípio da Posição Decimal.
  • Todo algarismo escrito imediatamente à esquerda
    de outro representa unidades de ordem
    imediatamente superior (dez vezes) à desse outro
  • exemplo 33 o primeiro 3 vale trinta (3x10) e
    o segundo 3 vale três mesmo!

18
Sistemas antigos - Egípcio
  • Há 6.000 anos eles
  • utilizavam um
  • sistema decimal
  • (dez cajados
  • valem um osso,
  • dez ossos valem
  • uma corda etc.) porém não conheciam o Princípio
    da Posição, razão porque se tornava difícil a
    representação de números grandes.

19
Exemplos
20
Sistemas antigos - Babilônio
  • Há 5.000 anos atrás eles utilizavam um sistema de
    base sessenta com símbolos cuneiformes.
  • Números usados
  • Regras para escrever
  • Para números menores
  • que sessenta obedece ao
  • mesmo princípio da
  • justaposição usado pelos
  • egípcios.

21
Sistemas antigos - Babilônio
  • Para números maiores que sessenta usa-se (e pela
    primeira vez na história!) o Princípio da Posição
    de base sessenta (Princípio Sexagesimal).
    Exemplos

22
Sistemas antigos - Romano
  • Há 2.100 anos atrás os romanos utilizavam os
    seguintes numerais
  • I um V cinco X dez L cinqüenta
  • C cem D quinhentos M mil
  • Regras para escrever
  • Somente os numerais I, X, C e M podem ser
    repetidos no máximo 3 vezes consecutivas.
  • Se um numeral (ou mais) está à direita de outro
    de igual ou maior valor, somam-se os seus valores
    (princípio aditivo da justaposição) e se está
    (com exceção de V, L, D e M) à esquerda de outro
    de valor imediatamente superior, subtraem-se
    (princípio subtrativo da justaposição).

23
Sistemas antigos - Romano
  • Para aumentar o valor do número 1.000 vezes,
    coloca-se um traço horizontal sobre o numeral
    (com exceção do I) para aumenta-lo um milhão de
    vezes colocam-se dois traços e assim
    sucessivamente. Exemplos
  • 3 III 9 IX 21 XXI 206 CCVI

  • 1.969 MCMLXIX
  • Nos sistemas antigos, não existia o ZERO que foi
    introduzido pelos hindus há 1500 anos atrás.

24
Sistemas modernos
07/08/2001
  • Os vários sistemas de numeração que
  • hoje prevalecem, se valem do
  • Princípio da Posição, que varia de
  • acordo com a base adotada, que em
  • várias aplicações não é mais a base 10.
  • Os computadores utilizam a base dois
  • (Sistema de Numeração Binário),
  • usando somente dois numerais 0 e 1,
  • para descrever qualquer número.

25
Mudança de base
  • Ou decomposição, é conversão de um número escrito
    em uma determinada base para uma outra qualquer,
    exemplo
  • Base 10 (0 1 2 3 4 5 6 7 8 9)
  • 5.386 5 x 1000 3 x 100 8 x 10 6
  • 5 x 10³ 3 x 10² 8 x 10¹ 6 x 10º
  • Base 8 (0 1 2 3 4 5 6 7 8)
  • 12348 1 x 8³ 2 x 8² 3 x 8¹ 4 x 8º
  • 12348 1 x 512 2 x 64 3 x 8 4 x 1
  • 12348 512 128 24 4
  • 12348 66810 ? Transformação para a base 10.
  • Base 16 (0 1 2 3 4 5 6 7 8 9 A B C D E F)
  • 1A2F 1 x 16³ A x 16² 2 x 16¹ F x 16

26
Mudança de base
  • Base 16 (0 1 2 3 4 5 6 7 8 9 A B C D E F)
  • 1A2F16 1 x 16³ A x 16² 2 x 16¹ F x 16º
  • 1 x 16³ 10 x 16² 2 x 16¹ 15
    x 16º
  • 4096 2560 32 15
  • 670310

27
Mudança de base
  • Da base10 para a base 2
  • 3010 111102
  • 111102 1 x 24 1 x 23 1 x 22 1 x 21 0 x
    20
  • 16 8 4 2 0
  • 3010

28
Mudança de base
  • Da base 10 para a base 4
  • 3010 1324
  • 1 x 4² 3 x 4¹ 2 x 4º
  • 16 12 2
  • 1324 3010

29
Operações Aritméticas
08/08/2001
  • Adição
  • Regra 1 0 0 0
  • Regra 2 0 1 1
  • Regra 3 1 0 1
  • Regra 4 1 1 0 e vai 1 10
  • Exemplos
  • 1 0 0 4 1 11 01 1
    5
  • 0 1 0 2 0 1 1 3
  • 1 1 0 6 1 0 0 0
    8

30
Operações Aritméticas
  • Subtração

Regra 1 0 - 0 0 Regra 2 0 - 1 1 e
empresta 1 Regra 3 1 - 0 1 Regra 4 1 - 1
0 Exemplos 1 1 3
10 10 10 10 10 10 10 2 -
1 0 2 - 0 1 1 1 7 -
0 1 1 0 1 1 0
0 1 1 3 0 1 3
Lembrar que a subtração começa da
direita para a esquerda
31
Representação de números negativos
  • Bit de sinal
  • Define-se a quantidade de dígitos a ser
    utilizada, por exemplo 4 dígitos (4 bits) e
    usa-se o bit mais a esquerda como o bit de sinal,
    por exemplo
  • 0000 equivale ao numero zero
  • 0001 equivale ao número 1 positivo (1)
  • 1001 equivale ao número 1 negativo (-1)
  • Pode ocorrer overflow!

32
Representação de números negativos
  • Complemento de 1
  • Define-se a quantidade de dígitos a ser
    utilizada, por exemplo 4 dígitos (4 bits) e
    inverte-se todos os dígitos (usa-se o bit mais a
    esquerda como o bit de sinal), por exemplo
  • 0101 5
  • 1010 -5
  • Dois tipos de zero 0000 0
  • 1111 -0

Decimal Complemento de 1 7 0111 6 0110
5 0101 4 0100 3 0011 2 0010 1
0001 0 0000 -1 1110 -2 1101 -3 1100 -4
1011 -5 1010 -6 1001 -7 1000 -0 1111
33
Representação de números negativos
  • Complemento de 2
  • Define-se a quantidade de dígitos a ser
    utilizada, por exemplo 4 dígitos (4 bits) e
    inverte-se todos os dígitos e soma-se 1 ao numero
    que foi invertido, por exemplo
  • 0101 5 ? 1010
  • 1
  • 1011 (5 em
    complemento de 2)
  • Somente um tipo de zero 0000 0
  • Nesse caso, com 4 bits, representamos os numeros
    de 7 a -8.

Decimal Complemento de 2 7 0111 6
0110 5 0101 4 0100 3 0011 2
0010 1 0001 0 0000 -1 1111 -2
1110 -3 1101 -4 1100 -5 1011 -6 1010
-7 1001 -8 1000
34
Operações Lógicas
  • Todos os sistemas digitais são construídos usando
    apenas 3 operações lógicas básicas, também
    chamadas de portas lógicas, quais sejam
  • E (and)
  • Ou (or)
  • Não (not)

35
Operação lógica E
  • Gráficamente
  • B A Y A . B Y
  • 0 0 0
  • 0 1 0
  • 1 0 0
  • 1 1 1

Tabela Verdade
36
Operação lógica OU
  • Gráficamente
  • B A Y A B Y
  • 0 0 0
  • 0 1 1
  • 1 0 1
  • 1 1 1

37
Operação lógica NÃO
  • Gráficamente
  • A Y A ?
  • 0 1
  • 1 0

38
Expressões e circuitos
  • Pode-se escrever uma expressão lógica (booleana)
    que seja executada por qualquer circuito lógico,
    exemplo
  • Divide-se o circuito lógico em partes
  • Colocar na saída de cada bloco a expressão
    correspondente
  • Juntam-se as expressões

39
Exercícios
  • Escrever a expressão lógica executada pelo
    circuito abaixo
  • Dada a expressão lógica, desenhar o circuito
  • S (A B) . (C D)
  • S (A B) C (C . D)
  • Representar as tabelas-verdade dos exercícios
    anteriores.

40
Algoritmos
41
Resolução de Problemas
Podemos identificar duas grandes estratégias de
resolução de problemas 1. Estratégias
algorítmicas, generalistas, por exemplo, os
métodos numéricos, os sistemas de bancos de
dados, as planilhas etc. 2. Estratégias baseadas
em conhecimento (especialistas) por exemplo,
sistemas especialistas, sistemas de
reconhecimento de voz, tutores inteligentes etc
42
Exercícios
  • Represente algorítmicamente a solução dos
    seguintes problemas
  • 1. Sejam 2 vasilhames dágua, um de 4 litros e
    outro de 3 litros. Nenhum deles possui qualquer
    marcação de medida. Há uma torneira que pode ser
    utilizada para encher os vasilhames de água. Como
    você poderá colocar exatamente 2 litros dágua
    dentro do vasilhame de 4 litros?

43
Exercícios
2. Três missionários e três canibais se encontram
em um lado do rio. Todos concordam que precisam
chegar do outro lado. Mas os missionários não
confiam nos canibais. Assim, os missionários
querem atravessar o rio de modo tal que o número
de missionários em qualquer das margens nunca
seja inferior ao número de canibais que estiver
do mesmo lado. O único barco disponível só
carrega 2 pessoas por vez. Como todos poderão
chegar ao outro lado, sem que os missionários
arrisquem suas vidas? Trabalho 1, para ser
entregue no dia 19/08/2014 prova, impresso em
folha de papel Almaço (pode ser a mesma da
primeira série de exercícios) os passos numerados
e em língua portuguesa.
44
Fluxogramas
Corresponde a uma forma gráfica muito comum
utilizada para representar um algoritmo,
indicando a seqüência em que as primitivas devem
ser executadas.
45
Primitivas Gráficas
Início/Fim do
programa
Processamento Decisão
46
Montando um fluxograma
Em um fluxograma as operações primitivas aparecem
envolvidas por retângulos, com exceção da
primitiva Decisão, a qual é envolvida por um
losango. As operações são interligadas
por SETAS (--gt).
47
Exemplo
Dados dois números inteiros positivos A e B,
calcular o valor absoluto de A - B.
Resposta em forma de texto nesse caso devemos
realizar os seguintes passos 1. Obter os valores
de A e B 2. Verificar qual deles é o maior 3.
Subtrair o número menor do número maior e 4.
Apresentar o valor resultante.
48
Gráficamente
Início
Obtenha A,B
A lt B
C lt-- B - A
C lt-- A - B
Forneça C
Fim
49
Exercício
1. Calcular o produto de 10 por 7.
Início
PROD lt-- 107
Forneça PROD
Fim
50
Estruturas de Dados
51
Programa
  • Estruturas básicas listas, árvores e suas
    generalizações. Manipulação de ponteiros.
    Algorítmos e manipulação de estruturas de dados.
    Inserção, eliminação, busca e percurso.
    Aplicações.
  • Bibliografia
  • Estruturas de dados. Paulo Veloso, Clésio Veloso
    dos Santos e outros. Ed. Campus.
  • Algorítmos e Estruturas de dados. Guimarães
    Lages. Ed. LTC.
  • Estruturas de dados Fundamentais conceitos e
    aplicações. Silvio do Lago. Ed. Érica

52
Desenvolvimento de Programas
O processo de solução de problemas por meio de
computador pode ser descrito a partir das
seguintes etapas 1. Especificação do
problema 2. Projeto em alto nível
3. Análise de alternativas 4.
Refinamento e codificação 5. Verificação
do comportamento Nesta descrição devemos
ressaltar 3 pontos 1. Estruturas de dados, que
retratam as relações lógicas existentes entre os
dados, de modo análogo ao uso de um modelo
matemático para espelhar alguns aspectos de uma
realidade física.
53
2. Operações, manipulam as estruturas de dados
transformando-as. 3. Estruturas de Representação,
que são formas de armazenar na memória os dados,
isto é, as estruturas de dados manipuladas pelas
operações, que devem 3.1 Preservar as
relações lógicas existentes entre os dados.
3.2 Permitir que as operações sejam descritas por
procedimentos simples e eficientes.
54
Tipos de dados
55
Tipos de Dados
Para descrever os algorítimos e procedimentos
durante o curso, vamos utilizar uma linguagem de
descrição muito parecida com as linguagens ALGOL
e PASCAL. A noção do tipo de dados ocorre na
maioria das linguagens de programação. O tipo da
variável delimita o conjunto de valores que ela
pode tomar e as operações que podemos efetuar com
elas. Geralmente uma linguagem de programação
oferece 2 tipos de Tipos de dados Tipos
Primitivos São tipos básicos pré definidos
Tipos construídos tipos criados a partir de
mecanismos presentes na linguagem.
56
Exemplos
5 div 2 2 5 mod 2 1
Tipos primitivos Operações aceitas inteiro -
int - div mod real - real
- / lógico - log e ou
não (.e. .ou. V ?) caracter- car
?
Exemplos Tipos
inteiro ? Real ? Lógica ? Caracter ?

?V F e ?F V
57
Funções de Transferência
São operações especiais que manipulam variáveis
de tipos primitivos, diferentes entre si, por
exemplo Xi sendo X real e inteiro. Comparações
também podem ser consideradas funções de
transferência, por exemploX lt i sendo X real e i
inteiro e o resultado lógico F(V) Trunc, converte
um numero real em inteiro trunc (75.37)75 Tier,
converte inteiro em real tier (75) 75.0 Ord,
transforma car em int que é seu numero de ordem
no conjunto de caracteres ASCII ord (0) lt...lt
ord (9)lt...lt ord(A)lt...lt ord(a). Mais
funções de transferência podem ser obtidas nos
tipos construídos.
58
Mecanismo para construção de tipos
Utilizados para construir tipos novos a partir de
tipos primitivos, segundo a definição
Tipos nome_do_tipo definição_do_tipo a ser
utilizada com os seguintes mecanismos Tipos
construídos forma Geral Vetor - Vet
Vet (limite inferior...limite
superior) de tipo registro - reg
reg (seletor1 tipo1, seletor2
tipo2,...,seletorn tipon) seqüência- seq
seq de tipo p/ ex tipo cadeia
seq car referência - ref
ref a tipo p/ ex tipo matricula ref int
alternativa - alt alt (tipo1 tipo2
... tipon ) p/ ex tipo questão alt (int
car)
59
Exemplos
Vetor tipo dia vet 0...30 de int
1,2,3,4,...31 onde dia2 3
dia i 31 então i 30 Registro tipo
inscriçãoreg (disciplina int, turma car) Se
matricula inscrição Se matricula é uma
variável do tipo inscrição, então matricula (103,
a) daí temos matricula.turma a
matricula.disciplina 103
O elemento da turmaa, quer inscrever-se na
disciplina 103
60
Seqüência tipo cadeia seq car Se x cadeia e
xlt r, a, mgt Seq. De comprimento 3
y cadeia e ylte, m, i, g, r, agt
Seq. De comprimento 6 Então princ x r
cont x lt a, mgt yconc x lt e,
m, i, g, r, a, r, a, mgt Se Z
cadeia e Zlt a gt Então princ Za cont zltgt
Seqüência nula de comprimento 0
61
Referência
Tipo de matricula ref int Este mecanismo
permite uma modalidade dinâmica de alocação, ao
contrário dos mecanismos anteriores (vet, seq,
etc.) cuja alocação é contínua. Se geografia
matrícula o espaço necessário para a variável
geografia compreende 2 partes 1 parte do valor
armazena um valor do tipo int 2 parte de
posição armazena uma indicação de posição da
localização da parte de valor.
62
Sejam os comandos
Aloque geografia a) após a declaração da
variável b)após a execução do comando
alouque Desaloque geografia c)após a execução
do comando
(Na memória)
Parte de posição (geografia)
Parte de posição
Parte de valor geografia
Parte de posição
63
Permite que uma mesma variável possa, em momentos
diferentes, ter valores e tipos diferentes
Alternativa tipo questão alt ( int car ) Se
resposta questão Então resposta? tem
valor igual a 1 (int) ou 2 (car) Enumeração Permi
te definir tipos de dados por meio dos valores
que os dados daquele tipo podem tomar. Tipo mês
(jan,fev,mar,abr,mai,jun,jul,ago,set,out,nov,dez)
seja mês_nasc mês Se mês_nasc
dez Então Processo qualquer
janltfevltmarlt...ltdez
64
Variáveis, Declarações e Expressões
Nomes (identificadores) podem ser usados para
denotar variáveis, do seguinte modo var nome
tipo ou nome1, nome2,...,nome3
tipo Todas as variáveis existentes no programa
fonte devem ser declaradas uma vez ( e somente
uma vez) no seu cabeçalho, exemplos Tipos
Variáveis matr10 vet
0..9 de vet 0..9 de real adj,
custo matr10 status reg (no int, ferias
log, dia int) folha seq de
status nome seq car
alfa vet 1970...1975 de
nome celula ref int
onde celula
65
Comandos Básicos
66
São utilizados para manipular as variáveis, são
eles Atribuição variável
expressão Entrada Leia (
lista_de_variáveis) Saída Escreva
( lista_de_variáveis) Se condição então
comando Condicionais Se condição então
comando senão comando Interação
Enquanto condição faça comando Repita
comando até (que)
condição para variável de valor_inicial incr
valor_do_incremento até
valor_inicial. Faça
comando Escape de malha Saída ou
escape Seleção Conforme
variável, Faça lista_dos_casos

67
Atribuição
  • V ? e (e precisa ser do mesmo tipo de V)
  • X ? (YZ)/2.0 x,y e z real
  • O valor de X depois da avaliação será média
    aritmética dos valores de Y e Z antes
  • i ? i1 exemplo comum para contagens
    Variáveis de tipo contruído
  • var custo vet1..5 de real
  • custo1 ? custo2 7.8
    var matr reg(disc
    int, turma car)
    matr ? (2015, a )
  • Exemplos

68
Entrada de Dados
  • Leia (V1, V2, V3, ... , Vn)
    Neste caso todas as
    variáveis listadas recebem vetores do dispositivo
    de entrada. Por exemplo
  • var
  • x real i int a vet 1..3 de
    int
  • Início
  • leia (x,a,i)
  • Fim.
  • Causará a leitura do dispositivo de entrada
    para x, a e i de um real, um vetor e um inteiro.
  • Exemplos

69
Saída de Dados
  • Escreva (V1, V2, V3, ...Vn)
    Neste caso todas as
    variáveis listadas serão escritas no dispositivo
    de saída, por exemplo
  • var
  • i int a vet 1..5 de int x
    real
  • Início
  • x ? 2.1 i ? i 2 a2 ? i
  • escreva(i,a,x)
  • Fim.
  • Exemplos

70
Condicional
  • Se L Então A Senão B
  • var x,y,z real Calcula o menor de 2
    nos.
  • Se x lt y Então z ? x comando simples
  • Senão Início comando
    composto
  • z ? y
  • Se x lt z Então z ?
    x
  • Fim
  • A avaliação da condição não altera o valor de
    nenhuma variável mesmo que ela contenha
    expressões como
  • Se (2.0y lt x/3.2) .e. (zltgt0) Então...
  • Exemplos

71
Iteração - Enquanto
  • Enquanto L Faça A
  • Var x, y int
  • Início
  • Enquanto x lt y Faça x ? 2y
  • Enquanto x ltgt y Faça
  • Se x gt y Então x ? x - y
  • Senão y ? Y - x
  • Fim.
  • Causa a repetição do comando até que xy. Caso o
    sejam no início o programa termina após o
    primeiro teste.

72
Iteração - Repita
  • Repita A até L
  • Var x,y int
  • Início
  • Se x gtlt y Então
  • Repita
  • Se x gt y Então x ? x-y
  • Senão y ? y-x
  • Até xy
  • Fim.

73
Iteração - Para
  • Para V de i incr P até F Faça A
  • Var i, soma int
  • valor vet 1..10 de int
  • Início
  • Soma ? 0.0
  • Para i ? 1 até 10 Faça
  • soma ? somavalori
  • Fim.

74
Seleção
  • Caso V Faça (V1C1, V2C2,...,VnCn) ou
  • Caso V Faça (V1C1, V2C2,...,VnCn)
  • Senão Faça (V1C2, V2C3,...,VnCn1)
  • Onde Vi são valores e Ci são comandos,
    exemplo
  • Var Ch car
  • Início
  • Caso Ch Faça
  • A..Z,a..z Escreva (Letra)
  • 0..9 Escreva(Digito)
  • ,-,,/ Escreva
    (Operador)
  • Senão Escreva (Caracter especial)
  • Fim
  • Fim.

75
Vetores
76
Variáveis Indexadas - Vetores
  • A utilização de vetores em
  • computação é uma técnica
  • muito útil para a otimização
  • de tempo e memória e torna
  • um programa mais elaborado
  • e eficiente.
  • Forma geral
  • Tipo vetor vet1..3 de int
  • Var A, B, C vetorz

77
Leitura e Escrita de Vetor
  • Exemplo Leitura
  • Var x vet1..4 de int
  • Início
  • Para i 1 até 4 Faça leia(xi)
  • Fim.
  • Exemplo Escrita
  • Var x vet1..4 de int
  • Início
  • Para i1 até 4 Faça Escreva(xi)
  • Fim.
  • É bom lembrar que poderíamos usar os comandos
    Repita e Enquanto, tanto na leitura quanto na
    escrita.

78
Matrizes
79
Variáveis Indexadas - Matrizes
  • Uma matriz é uma variável
  • indexada que possui 2 dimensões
  • e portanto precisa de 2 índices
  • para marcação de valor. Sua
  • representação matemática é
  • dimensão m - linhas representação Amxn
  • n - colunas
  • Forma geral
  • Tipo matriz vetor1..3,1..3 de int
  • Var A, B, C matriz

80
Leitura e Escrita de uma Matriz
  • Faz-se necessário 2 varreduras,
  • uma com a variável j percorrendo
  • as colunas e outra com a variável
  • i percorrendo as linhas
  • Exemplo Leitura
  • Para i 1 até m Faça
  • Para j 1 até n Faça Leia(Ai,j)
  • Exemplo Escrita
  • Para i 1 até m Faça
  • Para j 1 até n Faça Escreva(Ai,j)

81
Exemplo
  • Fazer um algoritmo para ler e imprimir a matriz
  • Algoritmo matriz
  • var A vet1..3,1..3
    de int i,j int
  • Inicio
  • Para i 1 ate 3
    Faça
  • Para j 1 ate 3
    Faça Leia(Ai,)
  • Para i 1 ate 3
    Faça
  • Para j 1 ate 3
    Faça Leia(Ai,)
  • Fim.

82
Registros
83
Registros
  • São conjuntos de dados logicamente relacionados,
    mas de tipos diferentes (inteiro, real, car
    etc.) Utilizamos registros, quando vetores ou
    matrizes possuem diferentes componentes dentro de
    um mesmo campo, por exemplo
  • Como criar uma
    matriz
  • desse tipo,
    onde existem
  • 2 tipos de
    variáveis (int
  • e car)?
    Percebe-se que é
  • impossível a
    utilizaçãode matrizes,
  • pois na mesma
    declaração só pode conter um tipo de elemento.
    Por isso utiliza-se reg.

84
Forma Geral de Registro
  • Tipo
  • pagantes reg (cadast int,
  • nome
    caract,
  • bandeira
    caract,
  • pagamento
    caract)
  • Pode-se utilizar vetor composto por reg ou matriz
    composta por reg, exemplo
  • Escreva um algoritmo que dados 10 codigos de
    profissão, emita o nome da profissão
    correspondente.

85
Tipo lista reg(codigo int,
nomecaract) Var Tab lista
cod,i,k int Inicio Para i 1 ate 10 Faça
leia(tabi.codigo, tabi.nome) Leia (cod)
recebe o codigo para comparar Repita
i 1 Enquanto(tabi.codltgtcod) e (ilt10)
Faça ii1 Se (igt10) Então
Escreva(Codigo invalido) Senão
Escreva(Cod. Desejado ,tabi.nome)
Ate(cod0) Fim
86
Linguagem C
87
Linguagem C
  • Principais Características
  • Entrada e saída de dados
  • Bases numéricas
  • Estruturas de seleção
  • Estruturas de repetição
  • Matrizes/vetores
  • Operadores lógicos
  • Funções internas e subprogramas

88
Ambiente de programação
  • Para a edição de programas, compilação e execução
    utilizaremos o ambiente Turbo C, especificamente
    a IDE (Integrated Design Environment) que
    funciona a partir dos sistemas operacionais DOS e
    WindowsXX.
  • A IDE é uma interface de desenvolvimento prática
    e eficiente que vai facilitar bastante o
    desenvolvimento dos programas em C.
  • Maiores detalhes do funcionamento da IDE,
    principais menus e comandos de edição e
    compilação estão disponíveis em Turbo C - Guia do
    Usuário.

89
Identificadores
  • Usados para nomear as variáveis, as funções e os
    rótulos dos programas. A linguagem C
  • reconhece os 31 primeiros caracteres do nome e
  • diferencia as maiúsculas e as minúsculas.
  • O identificador sempre começa por letra
  • Normalmente maiúsculas ? constantes
  • minúsculas ? variáveis
  • Exemplo Corretos Errados
  • cont
    1cont
  • teste23
    alô!
  • Alto_balanco
    alto..balanço

90
Palavras reservadas
O nome deve ser diferente das seguintes palavras
reservadas int char float void enum short long s
igned unsigned double struct union typedef sizeof
auto register static extern const volatile goto if
else switch case default break while do for conti
nue return
91
Tipos e tamanhos
  • Tipos simples
  • char caracter (1 byte)
  • int inteiro (gt 2 bytes dependendo da máquina)
  • float ponto flutuante, precisão simples (gt 6
    bytes, dep. Máq.)
  • Qualificadores
  • short se aplica ao tipo int long se aplica a
    int e float
  • signed se aplica a char e int unsigned idem
    char e int
  • Variáveis
  • Tipos simples char, int, float e double
  • Tipos compostos estruturas, tabelas, uniões etc.
  • Domínio de validade auto, static, extern e
    register.
  • Sintaxe classe qualificador tipo
    nome_variavel valor

92
Constantes
  • Declaração simples
  • define NUM_MAX_CARACT 100
  • define MENSAGEM alo, alo, Terezinha
  • define CR \n
  • undef MENSAGEM
  • Qualificadores
  • 3.14 tipo double 3.14f ou 4.14F tipo
    float
  • 1.3e-3 ou 1.3E-3 tipo double 074 tipo
    inteiro, em octal
  • 3l ou 3L tipo inteiro longo 255u ou 255U tipo
    inteiro, sem sinal
  • 3.14l ou 3.14L tipo ddouble longo
  • 0x3b ou 0Xb tipo inteiro, hexadecimal

93
Constantes
  • Domínio de validade
  • da definição da constante até o final do arquivo
    ou até encontrar a diretiva undef da
    constante
  • Constantes do tipo caracter devem ser escritas
    entre apóstrofos (por exemplo l, a, x,
    \n, \t)
  • Representação de caracteres ASCII não
    imprimíveis
  • nova linha \n tabulação \t
  • espaço p/trás \b retorno do carro \r
  • página segui nte \f barra de fração
    revertida \\
  • apóstrofo \ null \0
  • bell \a formfeed \f
  • haspas \ interrogação \?
  • caracter definido pelo seu valor ASCII (em octal)
    \ddd, ex. 121
  • caracter definido pelo seu valor ASCII (em hexa
    \xdd, ex. \x2a

94
Operadores
  • Operadores aritméticos (multiplicativos e
    aditivos)
  • , -, , /, (resto de divisão inteira)
  • Operadores bit a bit (e), (ou),
    (ou-exclusivo)
  • Operadores de deslocamento ltlt (esquerda), gtgt
    (direita)
  • Operadores relacionais lt,lt, gt, gt
  • Operadores de igualdade , !
  • Operadores lógicos (e), (ou)
  • Operadores unários p conteúdo de p v
    endereço de v
  • -e menos e !e negação (booleana) de e
  • e complemento bit a bit de e v v v 1
  • -v v v - 1 v retorna v e depois v
    v 1
  • v- etorna v e depois v v - 1 (tipo)v
    converte v para o tipo
  • sizeof(e) numero de bytes ocupado por e
  • sizeof(tipo) n de bytes ocupado por um objeto
    do tipo definido

95
Operadores
  • Operadores de atribuição
  • , , -, , /, , ltlt, gtgt, , ,
  • Operador vírgula
  • x y, z equivale a y y 1 x z
  • Operador condicional
  • exp ? exp1 exp2
  • Exemplo x (a gt b) ? a b equivale a
  • Se a é maior que b, então x a senão x
    b

96
Precedência e ordem de avaliação
Operador Avaliação ( ) -gt .
esq-gtdir ! --(tipo)
sizeof dir-gtesq / esq-gtdir -
esq-gtdir ltltgtgt esq-gtdir lt ltgt gt
esq-gtdir ! esq-gtdir
esq-gtdir esq-gtdir
esq-gtdir esq-gtdir esq-gtdir ?
dir -gt esq - etc. dir -gt
esq , esq-gt dir
97
Instruções de controle
  • Observações preeliminares
  • uma instrução é sempre terminada por
  • comentários / isto é um comentário /
  • as chaves e são usadas para agrupar
    declarações e instruções em um bloco, o qual é
    sintaticamente equivalente a uma única instrução,
    exemplo
  • While (n ! 2) / bloco/
  • x y z
  • n n / 2
  • um bloco nunca termina com
  • variáveis podem ser declaradas dentro de
  • qualquer bloco (e tem validade só dentro do
    bloco).

98
Instrução if
  • Caso mais simples if (expressão) instrução
  • Caso completo if (expressão) instrução
  • else if (expressão) instrução
  • .....
  • else instrução

99
Instrução switch
  • Sintaxe
  • switch (expressão)
  • case expr-constante instr
  • instr
  • break
  • case expr-constante instr
  • break
  • default instr
  • break

100
Instrução while
  • Caso mais simples while (expressão) instr
  • Caso geral while (expressão) instr
  • instr
  • A instrução break faz sair da malha while.
    Exemplo
  • while (i ! 10)
  • soma xi
  • if (soma gt 100.) break
  • A instrução continue faz com que a iteração
    seguinte da malha seja realizada imediatamente,
    exemplo
  • while (i lt 10)
  • if (xi \n) continue
  • yi yi

101
Instrução do/while
  • Caso simples do instrução
  • while (expressão)
  • Caso geral do
  • instrução
  • .....
  • instrução
  • while (expressão)
  • As instruções break e continue também são
    aplicáveis ao do/while.

102
Instrução for
  • Sintaxe for (expr1 expr2 expr3)
  • instr
  • ...
  • instr
  • A instrução for é equivalente a
  • expr1
  • while (expr2)
  • instr
  • ....
  • instr
  • expr3
  • As instruções break e continue também são
    aplicáveis a malha for.

103
Instrução goto
  • Sintaxe
  • goto rotulo
  • ...
  • Rotulo instr
  • instr
  • ...

104
Funções
  • Generalidades
  • A linguagem C é baseada no conceito de blocos de
    construção, que são chamados de funções.
  • O nome de uma função sofre as mesmas restrições
    que o nome de uma variável.
  • Como também ocorre com as variáveis, um tipo é
    sempre associado a uma função (tipo do valor de
    retorno)
  • tipos básicos void, char, int, float, double
  • qualificadores short, long, signed, unsigned,
    exemplo short int func ()
  • Retorno de valor return expr
  • Declaração de uma função float calc (int,
    float)
  • definição de uma função foat calc (n, x)
  • int n float x
  • corpo da função
  • não se pode definir uma função no interior de um
    bloco .....

105
Função main
  • O programa principal é uma função cujo nome é
    main
  • A função main pode ser do tipo main ()
  • ......
  • Ou do tipo main (argc, argv)
  • int argc char argv
  • ..........
  • O valor contido em argc corresponde ao número
    de argumentos recebido da linha de comando
  • Por sua vez, argv corresponde à tabela de
    argumentos da linha de comando, exemplo cp
    arq1 arq2
  • cp nome do programa
  • arq1 e arq2 argumentos
  • argc 3
  • argv cp, arq1 , arq2

106
Alocação do espaço de memória
  • Classe auto
  • alocação por default
  • alocação feita no momento da declaração
  • liberação no final do bloco (variável local) ou
    no final do programa (variável global)
  • Classe static
  • alocação feita na declaração
  • liberação no final do programa
  • uma variável local, declarada static, guarda
    seu valor de uma chamada a outra da função
    (conceito de permanência do valor)
  • uma variável global, declarada static , só é
    acessível por funções contidas dentro do arquivo
    onde foi declarada (conceito de privacidade)
  • Classe extern
  • a variável é alocada em um outro arquivo

107
Alocação de espaço de memória
  • Classe register
  • deve ser empregado somente com as variáveis
    automáticas (auto)
  • classe de alocação normalmente empregadas para as
    variáveis utilizadas de maneira intensiva
  • o compilador é livre de atribuir um registrador
    do processador à variável ou de ignorar a
    solicitação
  • não se pode, evidentemente, tentar obter o
    endereço de uma variável do tipo register
  • como regra geral, as variáveis de classe
    register são do tipo char ou int

108
Definição de tabelas (arrays)
  • Uma tabela é um conjunto de elementos de mesmo
    tipo.
  • Declaração
  • classe qualificador tipo tabela n
    elementos
  • Inicialização
  • tipo tabela val1, val2, ...
  • Exemplos
  • char v10
  • static double x20
  • int stat -1, -1, 0, 1
  • Acesso a um elemento de uma tabela, exemplos
  • y x10
  • ss stat 2i-3
  • Tabelas multidimensionais
  • int tab2 3 4 ou
    double pos3 3

109
Estruturas
  • Uma estrutura corresponde a um conjunto de uma ou
    mais variáveis, eventualmente de tipos diferentes
    e agrupadas sob um mesmo nome
  • Exemplos de declarações de estruturas (struct
    define o tipo estrutura)
  • declara a estrutura x (tipo num_complexo),
    alocando para a mesma 2 campos do tipo double
  • struct num_complexo double parte_real
  • double parte_imag x
  • declara a estrutura data, alocando para a mesma
    inteiros
  • struct int dia
  • int mês
  • int ano data
  • Acesso aos membros de uma estrutura data.dia
    18
Write a Comment
User Comments (0)
About PowerShow.com