• Nenhum resultado encontrado

Aula1[1]

N/A
N/A
Protected

Academic year: 2021

Share "Aula1[1]"

Copied!
62
0
0

Texto

(1)

   

(2)

   

(3)

   

Partes do Computador

CPU – 

A CPU contém um conjunto restrito de 

células de memória chamados registradores que 

podem ser lidos e escritos muito mais 

rapidamente que em outros dispositivos de 

memória.

ULA – 

A unidade central do processador, que 

realmente executa as operações aritméticas e 

lógicas entre dois números.

(4)

   

Partes do Computador

PC (Contador de programa)  ­ 

Unidade do 

processador que armazena a posição de memória 

que contém a próxima instrução que o 

computador irá executar.

Memória – 

Onde os dados serão armazenados 

temporariamente ou não dependendo do tipo de 

memória.

Registrador de Instruções ­ 

armazena a 

instrução corrente que o computador está 

executando.

(5)

   

Memória

Memória ROM­ 

É um tipo de memória que 

contém instruções imutáveis, nela estão 

localizadas rotinas que inicializam o computador 

quando este é ligado. É não­volátil, ou seja, os 

dados não são perdidos com a ausência de 

energia.

(6)

   

Memória

EPROM­ 

É um tipo de ROM especial que pode 

ser programada pelo usuário. Seu conteúdo pode 

ser apagado pela exposição a raios ultravioletas.

EEPROM­ 

É também um tipo especial de ROM 

muito semelhante á EPROM, tendo como 

diferença apenas o fato de que seu conteúdo é 

apagado aplicando­se uma voltagem específica 

em um dos seus pinos de entrada.

(7)

   

Memória

Memória RAM – 

É dinâmica e frequentemente 

usada em computadores modernos. Isto, é devido 

a características como: Baixo consumo, Chips de 

alta densidade, e baixo custo. 

(8)

   

Memória

Memória flash  ­ 

É do tipo não volátil o que 

significa que não precisa de energia para manter 

as informações armazenadas no chip.

(9)

   

Arquitetura de Von Neumann

A Arquitetura de Von Neumann (de John Von 

Neumann), é uma arquitetura de computador que 

se caracteriza pela possibilidade de uma máquina 

digital armazenar seus programas no mesmo 

espaço de memória que os dados, podendo 

assim manipular tais programas.

(10)

   

(11)

   

Linguagem de máquina

Todo computador possui um conjunto de 

instruções que seu processador é capaz de 

executar. Essas instruções, chamadas de código 

de máquina, são representadas por sequências 

de bits, normalmente limitadas pelo número de 

bits do registrador principal da CPU.

(12)

   

Linguagem de Máquina

0E3D:0000  CD 20 FF 9F 00 9A F0 FE­1D F0 4F 03 F0 07 8A 03 0E3D:0010  F0 07 17 03 F0 07 DF 07­01 01 01 00 02 FF FF FF  0E3D:0020  FF FF FF FF FF FF FF FF­FF FF FF FF BD 0D 4C 01 0E3D:0030  D0 0C 14 00 18 00 3D 0E­FF FF FF FF 00 00 00 00 0E3D:0040  05 00 00 00 00 00 00 00­00 00 00 00 00 00 00 00    0E3D:0050  CD 21 CB 00 00 00 00 00­00 00 00 00 00 20 20 20  0E3D:0060  20 20 20 20 20 20 20 20­00 00 00 00 00 20 20 20    0E3D:0070  20 20 20 20 20 20 20 20­00 00 00 00 00 00 00 00    0E3D:0080  00 0D 76 2E 65 78 65 0D­44 4F 57 53 5C 73 79 73  0E3D:0090  74 65 6D 33 32 5C 64 6F­73 78 0D 0D 64 61 20 72  0E3D:00A0  65 64 65 20 28 63 61 72­72 65 67 61 72 20 61 6E    0E3D:00B0  74 65 73 20 64 6F 20 64­6F 73 78 2E 65 78 65 29   

(13)

   

Linguagem de maquina

  Linguagem ilustrativa

     Exemplo de instrução: 

   

     3 5 A F

      

posição de memória

         registrador

      operação store

(14)

   

(15)

   

Linguagem de Máquina

(16)

   

História

  

As linguagens de programação são dividas em 

gerações de acordo com a proximidade da 

linguagem (ou) ao computador (ou) ao Homem.

(17)
(18)

Ou, os computadores são   œ  programados diretamente em  painéis de  conexão.  

Geração das Linguagens

 

1ª geração: Linguagem de máquina  

Programas escritos em binário ­ ™0 (zeros) e ™1 (uns)  

(19)

Geração das Linguagens 

2ª geração: Linguagens de baixo nível  

Elimina a notação binária 

 

œ

Usam c digos mneumônicos com letras e  números 

para   

œ

representar os comandos 

Assemblers (montadores) convertem mneumônicos em binário  

œ

(20)

Geração das Linguagens 

3ª geração: Linguagens de alto nível ou orientadas a usuário  

Usam comandos com nomes geralmente auto­ 

œ

explicativos (ex: READ, WRITE, IF, OPEN, CLOSE...) 

± Principais linguagens:  

œ

 FORTRAN, COBOL, BASIC, PASCAL, C   

(21)

Geração das Linguagens

 

4ª geração: Linguagens orientadas à aplicação   

Geram c digo a partir de expressões de alto nível  

œ

Ex.: DBASE III Plus, SQL  

œ

Tradução: lê todos os registros que compõem um arquivo e, para 

cada lido, seleciona aqueles cuja Cidade = ™Porto Alegre . 

Também decide como a lista deve ser formatada, o no de linhas por 

página, como numerar as páginas, etc.  

(22)

Geração das Linguagens 

5ª geração: Linguagens de Sistemas Especialistas  

são criadas bases de conhecimentos, obtidasa partir de   

œ

especialistas,  

e, as linguagens fazem deduções, inferências e tiram   

œ

conclusões baseadas nas bases deconhecimento 

Ex: PROLOG, LISP, VISUAL AGE  

œ

(23)
(24)

Por que Existem Tantas Linguagens?  

Linguagens para diferentes propositos:   

œ

Computação Científica, Comércio, Indústria, Ensino,  

Aplicativos, Software Básico, Engenharia, Internet, etc. 

Incorporação de avanços tecnol gicos  

œ

Cultura e background científico (similar a razão pela qual   

œ

existem tantas linguagens naturais) 

Interesses comerciais

   

œ

(25)

Classificação das Linguagens por Nível

  

As 

linguagens de baixo nível  

Restritas a linguagem de máquina;  

œ

Forte relação entre as operações implementadas pela linguagem   

œ

e as operações implementadas pelo hardware; 

A 1ª e 2ª gerações.  

œ

As 

linguagens de alto nível  

Aproximam­se das linguagens utilizadas por humanos para   

œ

expressar problemas e algoritmos 

Cada declaração numa linguagem de alto nível equivale a várias   

œ

declarações numa linguagem de baixo nível; 

A partir da 3ª geração das linguagens.  

œ

(26)

Características das Linguagens de 

 Baixo Nível

 

 

Indicada para funções que precisam implementar instruções   

œ

de máquina específicas que não são suportadas por  linguagens 

de alto nível; 

A grande eficiência e o reduzido tamanho dos programas;  

œ

Impossibilidade de uso de linguagens de alto nível (hardware   

œ

simples).  

(27)

Características das Linguagens de 

Alto Nível 

 

Problemas podem ser solucionados muito mais rapidamente e   

œ

com muito mais facilidade; 

A solução do problema não necessita ser obscurecida pelo nível   

œ

de detalhes necessários em um programa em linguagem de  baixo 

nível; 

O programa em linguagem de alto nível é normalmente fácil de   

œ

seguir e entender cada passo da execução.  

(28)

Processamento das 

Linguagens:Interpretação 

 

Nesta solução, as ações indicadas pelos comandos da   

œ

linguagem são diretamente executadas.  

Mais precisamente, um interpretador é um programa que   

œ

executa repetidamente a seguinte seqüência: 

1. Obter o pr ximo comando do programa fonte; 

2. Determinar que ações devem ser executadas; 

3. Executar estas ações. 

Exemplo de linguagens interpretadas: sh, awk, LISP, etc.  

œ

(29)

Processamento das 

Linguagens:Compilação

  

Nesta solução, programas escritos em  ... linguagem de alto nível são traduzidos para  versões equivalentes em  linguagem de  máquina, antes de serem executados.   Esta tradução é feita em vários passos. 

(30)

Algoritmos

  

É o pensamento descrito como uma seqüência de passos   

œ

que visam atingir um objetivo 

Algoritmos no dia­a­dia: Receita de bolo, orientação para se   

œ

chegar em algum endereço 

Qual sua importância na programação?  

œ

Representar o raciocínio, independentemente de detalhes  

computacionais, que podem ser acrescentados mais tarde 

Focalizar primeiro na resolução algorítmica do problema,  

possibilitando depois codificá­la em qualquer linguagem  

(31)

Algoritmos Através de Linguagem 

Escrita

 

 

Confecionando um Bolo Simples  

œ

INGREDIENTES:  

œ

2 copos e meio de farinha, 2 copos e meio de açúcar, 1  

copo de leite, 4 ovos, Fermento em p . 

MODO DE PREPARO:  

œ

1. Bata as claras em neve;  

2. À parte bata o açúcar com as gemas;  

3. Misture as claras a farinha de trigo, ao fermento e ao leite; 

4. Adicione por último uma pitada de sal; 

5. Coloque toda a mistura em assadeira redonda; 

6. Asse em forno pré­aquecido a 180 graus;     

7. Ap s 45 minutos retire a assadeira do forno; 

8. Deixe resfriar a temperatura ambiente; 

9. Inverta a assadeira (cabeça­para­baixo) para tirar o bolo; 

10. O bolo está pronto para servir.  

(32)

Algoritmos Através de Fluxogramas

  

Um fluxograma é uma   

œ

representação gráfica  para o 

passo­a­passo dos  algoritmos; 

Divide­se em:   

œ

Entradas,  

Processamento, e 

Saídas. 

A simbologia é   

œ

padronizada e independe   da 

linguagem para a qual  o 

algoritmo será  transcrito.  

(33)

Código Fonte

 

 

C digo fonte (

source  

œ

code

) é o conjunto de  palavras ou  símbolos  escritos de forma  ordenada,  contendo  instruções em uma das   linguagens de  programação existentes   no mercado, de maneira  l gica.   C digo fonte de um programa em lin­  guagem de programação C que im­  prime na tela se o número passado a  ele  como argumento é primo ou não.  

(34)
(35)

É o programa pronto para    œ ser executado ± É o   Software!  

C digo Executável  

Programa executável ou simplesmente um executável, é um   

œ

arquivo cujo conteúdo é a representação binária das instruções  de 

máquina de um processador específico; 

Possuem chamadas aos serviços do sistema operacional, além   

œ

das instruções de máquina comuns.  

Normalmente são específicos a um sistema operacional,  

além de serem específicos a um processador.  

(36)
(37)

   O C é “Case Sensitive”

    – Maiúsculas e minúsculas fazem diferença;

    – Se declarar uma variável com o nome soma ela será 

      diferente de Soma, SOMA, SoMa ou sOmA;

   Um primeiro programa em C

#include <stdio.h>

  /* Um Primeiro Programa */

int main ()   

{

   printf ("Ola! Eu estou vivo!\n");

   return(0);

}

/*  Compilando e executando este programa você verá que  ele coloca a mensagem  Ola! Eu estou vivo!  na tela. */

(38)

Primeiros Passos...

Analisando o programa por partes : A linha #include <stdio.h> diz ao compilador que ele deve incluir o arquivo­cabeçalho  stdio.h;   /* Um Primeiro Programa */. O compilador C desconsidera    qualquer coisa que esteja começando com /* e terminando com */ A linha int main() indica que estamos definindo uma função de nome main. Todos os programas em C têm que ter uma função main,  que será chamada quando o  programa for executado.   O conteúdo da função é delimitado por chaves { }. O código que estiver dentro das chaves será executado seqüencialmente quando a  função for chamada.   A última linha do programa, return(0); , indica o número inteiro que    está sendo retornado pela função, no caso o número 0. 

(39)

Variáveis

  

As variáveis no C podem ter qualquer nome se: 

     O nome deve começar com uma letra ou sublinhado (_) e os caracteres 

subsequentes devem ser letras, números ou sublinhado (_); 

   

   O nome de uma variável não pode ser igual a uma palavra reservada, nem 

igual ao nome de uma função declarada pelo programador, ou pelas bibliotecas 

do C; 

Variáveis de até 32 caracteres são aceitas; 

É bom sempre lembrar que o C é "case sensitive" 

(maiúsculas e minúsculas são coisas diferentes). 

(40)

Nomes de Variáveis

  Dicas quanto aos nomes de variáveis:

    Usar letras minúsculas para nomes de variáveis e maiúsculas para nomes de 

constantes; Facilita na hora da leitura do código. 

     Escrever código usando nomes de variáveis em português, evita possíveis 

conflitos com nomes de rotinas de bibliotecas, que são em sua maioria,  

palavras em inglês.

(41)

Os Tipos Primitivos do C

  O C tem 5 tipos básicos: char, int, float, void, double;

  O tipo void é um tipo vazio, ou um "tipo sem tipo“.

 

  Para cada um dos tipos existem os modificadores: 

  signed, unsigned, long e short.

     Ao float não se pode aplicar nenhum;

   –

     Ao double pode­se aplicar apenas o long;

   –

     Ao int todos podem ser aplicados; 

   –

     Ao char pode­se aplicar signed e unsigned;

   –

     Ao tipo void não faria sentido aplicar nenhum;

   –

(42)

Os Modificadores de Tipos

signed – É o modificador default, e indica que as variáveis consideram o sinal “+” ou “­”;    unsigned ­ Serve para especificar variáveis sem sinal. Um unsigned int será um inteiro que assumirá apenas valores positivos  short e long ­ A intenção é que ofereçam tamanhos diferentes:  int normalmente terá o  em bytes imposto pelo processdor;    –      Numa máquina de 16 bits, int provavelmente terá 16 bits. Numa máquina de 32, int  deverá ter 32 bits.       Na verdade, cada compilador é livre para escolher tamanhos adequados       para o seu próprio hardware, com a única restrição de que short int e int devem  ocupar pelo menos 16 bits, long int pelo menos 32 bits, e short int não pode ser maior  que int, que não pode ser maior que long int.

(43)

Os Tipos Primitivos do C e o Uso de Seus 

Respectivos Modificadores

(44)

Declaração e Inicialização de 

Variáveis

  Forma geral da declaração de variáveis é:

   

 tipo_da_variável lista_de_variáveis;

As variáveis da lista de variáveis terão todas o mesmo tipo e deverão ser 

separadas por vírgula;

Exemplos:, as declarações 

        char ch, letra;

        long count;

        float pi;

O tipo default do C é o int, logo basta colocar o nome do modificador de tipo se 

quisermos declarar um long int;

(45)

Lugares Onde se Declara 

Variáveis

1. Fora de todas as funções do programa – são as 

   chamadas Variáveis Globais:

    – São usadas a partir de qualquer lugar no programa;

    – E, todas as funções as vêem.

2. No início de um bloco de código – são as Variáveis 

   Locais:

    – Só têm validade dentro do bloco no qual são 

      declaradas, exemplos: variáveis locais a uma função;

3. Na lista de parâmetros de uma função – são variáveis 

   que recebem valores externos, e são conhecidas apenas 

   pela função onde são declaradas.

(46)

Lugares Onde se Declara 

Variáveis

(47)

Regras de Escopo de Variáveis

  São as regras que regem onde uma variável é válida dentro de 

código fonte;

  Um escopo é delimitado pela abertura de um bloco de 

  código (“{“) e pelo seu fechamento (“}“);

  Regras:

   – Duas variáveis globais não podem ter o mesmo nome;

   – Duas variáveis locais de uma mesma função também 

     não podem ter o mesmo nome;

   – Duas variáveis locais, de funções diferentes, podem 

     ter o mesmo nome sem perigo algum de conflito.

(48)

Inicialização de Variáveis  na Sua 

Declaração

  Forma Geral:

   

Tipo_da_variável Nome_da_variável = constante;

  A inicialização de uma variável em C MUITO é 

  importante pois:

   –  quando o C cria uma variável ele não a inicializa;

   – até que um primeiro valor seja atribuído à nova 

     variável ela tem um valor indefinido e que não pode 

     ser utilizado para nada;

   – NUNCA pode­se presumir que uma variável declarada 

     vale zero ou qualquer outro valor.

  Exemplos:

   

char ch = 'D';

   int count = 0;

   float pi = 3.1415;

(49)

  Em C, uma variável tem que ser declarada no início de 

  um bloco de código.

int   main()

{

    int i;

    int j;

    j = 10;

    int k = 20; /* Esta declaração de variável não é

       válida, pois não está sendo feita no

       início do bloco

      */

    return(0);

}

  Em C++, esse código seria aceito.

(50)

Operadores Aritméticos: usados para desenvolver operações 

matemática:

Há Operadores Binários que usam duas variáveis e  

retornam uma terceira, sem alterar o valor das originais. 

     Exemplos: Soma ( + ), Multiplicação ( * );

Há Operadores unários agem sobre uma variável   apenas, 

modificando ou não o seu valor, e retornam o valor final da 

variável. Exemplo: Troca de Sinal ( ­ ), ­1.

(51)
(52)

Operadores ­ Aritméticos

  O operador “/ “ (divisão) quando aplicado: A variáveis inteiras, nos fornece o resultado da divisão inteira; A variáveis em ponto flutuante nos fornece o resultado da divisão "real". O operador % fornece o resto da divisão de dois inteiros.   Para o trecho de código a seguir, ... int a = 17, b = 3; int x, y; float z = 17. , z1, z2; x = a / b; y = a % b; z1 = z / b; z2 = a / b; ... os valores calculados seriam  x = 5,  y = 2,  z1 = 5.666666 e    z2 = 5.0 ... por que?

(53)

Operadores ­ Aritméticos

   Os operadores de incremento e decremento são unários que alteram a variável sobre a  qual estão aplicados.    – “++” incrementa, de 1, a variável;        x++; /* equivale a x = x + 1; */      “­­” decrementa, de 1, a variável;           x­­; /* equivale a x = x ­ 1; */   Os operadores de incremento podem ser:    – Pré­fixados: Nesse caso, eles incrementam e retornam       o valor da variável já incrementada.        x = 23;        y = ++x; /* teremos, no final, y=24 e x=24 */      Pós­fixados: Nesse caso, eles retornam o valor da     –      variável sem o incremento e depois incrementam a       variável.        x = 23;        y = x++; /* teremos, no final, y=23 e x=24 */

(54)

Operadores ­ Aritméticos

  O operador de atribuição em C, é o “=”:

pega o valor à direita e atribui à variável da 

esquerda; e retorna o valor que ele atribuiu.

  Expressões válidas com o “=”

       x = y = z = 2.3;

       if ( y = x ) /* é válida, mas traz problemas */

(55)

Operadores Relacionais

    Realizam comparações entre variáveis       – retornam verdadeiro (1) ou falso (0)     /* Este programa ilustra o funcionamento dos              operadores relacionais. */               #include <stdio.h>       int main() {     int i, j;          printf("\nEntre com dois números inteiros: "); scanf("%d%d", &i, &j); printf("\n%d == %d é %d\n", i, j, i==j);     printf("\n%d != %d é %d\n", i, j, i!=j); printf("\n%d <= %d é %d\n", i, j, i<=j); printf("\n%d >= %d é %d\n", i, j, i>=j); printf("\n%d < %d é %d\n", i, j, i<j); printf("\n%d > %d é %d\n", i, j, i>j); return(0); }

(56)

 Realizam operações com valores lógicos ( verdadeiro e falso)

#include <stdio.h> int main() { int i, j; printf("informe dois números(cada um sendo 0 ou 1): "); scanf("%d%d", &i, &j); printf("%d AND %d é %d\n", i, j, i && j); printf("%d OR %d é %d\n", i, j, i || j);   printf("NOT %d é %d\n", i, !i); }

(57)

Operadores Lógicos Bit a Bit

  O número ou vairável é representado por sua forma binária  e as operações 

são feitas em cada bit dele:

i = 2 em decimal = 0000000000000010 em binário;

  Se aplicarmos o NOT ( “~” )  teremos:

~i = 111111111111101 em binário;

  As operações lógicas bit a bit só podem ser usadas nos tipos char, int e 

long int

  Os operadores &, |, ^ e ~ são as operações lógicas bit a bit. 

(58)

Operadores Lógicos Bit a Bit

  

Deslocamento de Bits, forma geral:

   valor>>número_de_deslocamentos;

   valor<<número_de_deslocamentos;

  Para, i = 2 em decimal = 0000000000000010 em 

binário:

   i  << 3;

   i = 0000000000010000 = 16 em decimal;

   i  >> 1;

   i = 0000000000001000 = 8 em decimal;

(59)

Expressões

São combinações de variáveis, constantes e operadores:

Temos que levar em consideração a ordem com que os 

operadores são executados, conforme a tabela de    

precedência do C.

Exemplos:

Anos=Dias/365.25;

i = i+3;

c= a*b + d/e;

c= a*(b+d)/e;

(60)

Expressões – Modeladores de Coersão 

de Tipos ­ (casts)

  

Um  modelador  é  aplicado  a  uma  expressão  para  que  ela  seja  de  um 

  tipo especificado. Sua forma geral é: 

      (tipo)expressão

#include <stdio.h>

int main () {

    int num;

    float f;

    num=10;

    f=(float)num/7;  /* Uso do modelador. Força a

       transformação de num em um float */

    printf ("%f",f);

    return(0);

}

  Se não tivésse sido  usado o modelador, o C faria uma divisão inteira 

  entre 10 e 7. O resultado seria 1 (um) e este seria depois convertido 

  para float mas continuaria a ser 1.0.

(61)

Primeiros Passos

#include <stdio.h> int main () {     int Dias;       /* Declaracao de Variaveis */     float Anos;     printf ("Entre com o número de dias: "); /* Entrada de Dados */     scanf ("%d",&Dias);     Anos=Dias/365.25;      /* Conversao Dias­>Anos */     printf ("\n\n%d dias equivalem a %f anos.\n",Dias,Anos);     return(0); }    São declaradas duas variáveis chamadas Dias (tipo inteiro) e Anos (tipo float)    A função printf(), coloca uma mensagem na tela.    Usa­se a função scanf() para a variável inteira Dias;    Tem­se em seguida a expresão aritmetica Anos=Dias/365.25;     Uma nova printf para imprimir os valores de Dias e Anos.

(62)

Primeiros Passos

Analisando o programa por partes :

A única coisa que o programa realmente faz é chamar a função printf(), 

passando a string  "Ola! Eu estou vivo!\n" como argumento.

A função printf() neste caso irá apenas colocar a string na tela do 

computador.

O \n é uma constante chamada de constante barra invertida e 

interpretada como um comando de mudança de linha (new line).

Todos os comandos do C terminam com ponto­e­vírgula (;).

Referências

Documentos relacionados

Isto completa o pensamento de Cassirer quando nos diz que “as formas simbólicas são os fundamentos progressivos do aparecimento da consciência.” O símbolo possui uma

O desenvolvimento do sistema unificado de inscrição e administração da concessão de bolsas de auxílio estudantil essenciais foi crucial para atender de forma correta e

A partir da implementação do Programa de Apoio a Planos de Reestruturação e Expansão das Universidades Federais, a universidade brasileira abre-se para o acesso de novos e

A água usada na análise de resí- duos de pesticidas destina-se à pre- paração de soluções aquosas de sais, como a de sulfato de sódio e/ou a de cloreto de sódio para obstar aos

● Linguagens de programação modernas são de alto nível (pessoas podem entender os programas).. ● O computador entende código de baixo nível (pessoas não conseguem

pação do IDE na 23ª edição da Come- jus, os jovens da mocidade de sábado optaram por trocar a folia do Carnaval para estudar e confraternizar com outros companheiros espíritas

A imagem aliada ao discurso de Viktoria Modesta, permite uma análise de uma possível união entre moda e transumanismo, apesar de a cantora não se referir à filosofia transumanista,

[r]