pci- introdução profa. mercedes gonzales márquez
TRANSCRIPT
PCI- Introdução
Profa. Mercedes Gonzales Márquez
Conceitos Básicos
MEMÓRIA PRINCIPAL
UNIDADE DE
ENTRADA
UNIDADEDE
SAIDA
MEMÓRIASECUNDÁRIA
Estrutura de um computador
UNIDADELÓGICA E
ARITMÉTICA
CPU
Conceitos básicos
Unidade de entrada – Usada pelo computador para receber informações ou instruções externas. Ex. Teclado, mouse, câmara de vídeo, etc.
Unidade de saída – Usada pelo computador para exibir os resultados da computação. Ex. Monitor, impressora, etc.
Unidade Central de Processamento – (Central Processing Unit - CPÙ) Responsável pelo gerenciamento do sistema como um todo.
Conceitos básicos Unidade lógica e aritmética – São executadas
operações matemáticas de adição, multiplicação e divisão e operações lógicas como conjunção, disjunção, ou exclusivo e outras. Alguns computadores tem esse unidade separada da CPU. Também chamada de co-processador matemático.
Conceitos básicos Memória – armazena os dados e o próprio programa.
Número finito de localizações que são identificadas por meio de um único endereço.
1000
10031004100510061007100810091010
10011002Read/Write
CPU
Endereço
Dados
Escrita – CPU envia endereço da posição de memória a ser escrita e dados a escrever.
Leitura – CPU envia endereço da posição de memória a ser lida e recebe dados.
Conceitos básicos Memória Principal: Usada pela CPU para armazenar
instruções e informações enquanto o computador está ligado. Também conhecida como memória RAM (Random Access Memory).
Memória Secundaria: Usada pelo computador para armazenar instruções e informações por prazo indeterminado, independente do estado do computador (ligado ou desligado). Em geral com capacidade de armazenamento bem maior do que a memória RAM, mas de acesso mais lento. Ex: discos rígidos, pen drives, etc.Observação: As memórias principal e secundária podem ser vistas como unidades de entrada e saída.
Alguns termos técnicos Dados: Qualquer tipo de informação ou instrução que pode
ser manipulada pelo computador. Ex: textos, imagens, etc. Bit: Unidade básica para armazenamento, processamento e
comunicação de dados. Byte: Um conjunto de 8 bits. Comandos: São as instruções que fazem com que o
computador execute tarefas. Programa: Sequência de instruções com alguma finalidade.
Alguns termos técnicos Algoritmos: São instruções a serem seguidas para resolver
um determinado problema. Exemplo: Uma receita de bolo. Um algoritmo poderá ser codificado em uma linguagem de programação e então se tornará um programa.
Software: Conjunto de programas com um propósito global em comum.
Hardware: Consiste da parte física do computador. Sistema Operacional: Conjunto de programas que gerenciam
e alocam recursos de hardware e software. Ex: Unix, Windows98, Linux, etc.
Alguns termos técnicos Linguagem de Programação: Consiste da sintaxe (gramática) e
semântica (significado) utilizada para escrever (ou codificar) um programa.
(a) Alto Nível: Linguagem de codificação de programa independente do tipo de máquina e de fácil utilização pelo ser humano. Ex: Pascal, C, Algol, Cobol, Fortran (1º linguagem em meados de 1950), BASIC, Java, Python, Tcl/Tk, etc.(b) Baixo Nível: Linguagem de codificação baseada em mnemônicos. Dependente do tipo de máquina e de fácil tradução para a máquina. Conhecida como linguagem assembly.
Alguns termos técnicos Linguagem de Maquina: Conjunto de códigos binários que
são compreendidos pela CPU de um dado computador. Dependente do tipo de máquina.
Compilador: Traduz programas codificados em linguagem de alto ou baixo nível (i.e. código fonte) para linguagem de máquina (i.e. código executável). Ex: O assembler transforma um programa em assembly para linguagem de máquina. Uma vez compilado, o programa pode ser executado em qualquer máquina com o mesmo sistema operacional para o qual o programa foi compilado.
Etapas da resolução de problemas usando o computador
Da apostila do Prof. Alexandre Xavier Falcão
Compilando um programa no CodeBlocks do windows1. Crie um arquivo novo utilizando File → New → Empty file.2. Salve o arquivo apos digitar o cabecalho, utilizando um nome apropriado
terminado com a extensão .c . Para tanto, va em File → Save File (CTRL + S) e escolha um nome. No caso de exemplo utilizamos altura.c.
3. Insira o código lembrando sempre de identá-lo com a tecla TAB e comenta-lo apropriadamente. Note que o Code::Blocks tende a identar o código automaticamente, mas haverá vários momentos em que a identação devera ser corrigida manualmente.
Apos alterar o arquivo .c, salve-o e aperte a tecla F9 (Build → Build and Run) para compilá-lo e executá-lo. Pressione também F2 para aparecer a um retângulo abaixo do código com a saída da compilação caso já não esteja aparecendo.
Primeiro Programa
Estrutura do código fonte– Comentários– Diretivas de compilador– Procedimento principal
Primeiro Programa/* file: oi.c* Este programa escreve a mensagem "Oi pessoal"* na tela. O programa foi tomado do livro* "Art and Science of C" de Eric Roberts.*/#include <stdio.h>#include <stdlib.h>int main(int argc, char* argv[]){ printf("Oi pessoal.\n");return 0;}
Primeiro Programa/* file: oi.c* Este programa escreve a mensagem "Oi pessoal"* na tela. O programa foi tomado do livro* "Art and Science of C" de Eric Roberts.*/#include <stdio.h>int main(int argc, char* argv[]){ printf("Oi pessoal.\n");return 0;}
Comentários
Diretivas deCompilador
ProcedimentoPrincipal
Primeiro Programa
Comentários• Texto ignorado pelo compilador• Documentação útil para descrever trechos do algoritmo• Possível em qualquer posição do código fonte• Duas formas para comentários:
- Uma linha:// Comentário ...- Várias linhas: /* Comentário...mais comentários ... */
Primeiro Programa
Diretivas de Compilador:• Informam outros arquivos que devem ser consultados
antes de compilar.• Definem parâmetros utilizados pelo compilador.• São colocadas no início do código fonte.
Exemplos: #include <stdio.h>#include <stdlib.h>#include <math.h>
Primeiro Programa
Procedimento principal:• Sequência de instruções• Pontuação: ponto-e-vírgula termina instruções• Chaves agrupam instruções relacionadas
int main(int argc, char* argv[]){ printf("Oi pessoal.\n");return 0;
• int argc, char* argv[] e return 0 são obrigatórios.
Memória
• Memória: sequência de células• Endereço: posição da célula • Células armazenam dados– Valor pequeno: uma célula– Valor grande: duas ou mais células
Memória
• Operações na memória:1. Consulta (lê) células de memória2. Programa calcula um novo valor3. Armazena (escreve) o novo valor em uma célula
Variáveis
• Abstração dos endereços de memória.• Rótulo simbólico para cada endereço.
Variáveis
• Variável: nome simbólico associado a um dado.
Nome (rótulo)Variável:
Valor (conteúdo)
Declarando uma variável
Declara-se da seguinte forma: Tipo Variável Nome Variável;
Exemplo :int numero;
Variáveis inteiras
Os seguintes são os tipos da linguagem C que servem para armazenar inteiros:int: Inteiro cujo comprimento depende do processador. E o inteiro mais utilizado. Em processadores Intel comum, ocupa 32 bits e pode armazenar valores de -2.147.483.648 a 2.147.483.647.unsigned int: Inteiro cujo comprimento depende do processador e que armazena somente valores positivos. Em processadores Intel comum, ocupa 32 bits e pode armazenar valores de 0 a 4.294.967.295.
Variáveis inteiras
long int: Inteiro que ocupa 64 bits em computadores Intel de 64bits e pode armazenar valores de aprox. -9 x1018 a aprox. 9 x1018.unsigned long int: Inteiro que ocupa 64 bits e em computadores Intel de 64bits e armazena valores de 0 ate aprox. 18 x1018.short int: Inteiro que ocupa 16 bits e pode armazenar valores de -32.768 a 32.767.unsigned short int: Inteiro que ocupa 16 bits e pode armazenar valores de 0 a 65.535.
Variáveis de tipo caracter
Variáveis utilizadas para armazenar letras e outros símbolos existentes em textos. Guarda apenas um caracter.Exemplos de declaração:char umaLetra;
Variáveis de tipo ponto flutuante
Variáveis utilizadas para armazenar letras e outros símbolos existentes em textos. Guarda apenas um caracter.Exemplos de declaração:char umaLetra;
Variáveis de tipo ponto flutuante
Armazenam valores reais. Mas possuem problemas de precisão pois há uma quantidade limitada de memória para armazenar um número real.Exemplos de números em ponto flutuante: 2.1345 ou 9098.123.- float: Utiliza 32 bits, e na pratica tem precisão de aproximadamente 6 casas decimais (depois do ponto). Pode armazenar valores de (+/-)10-38 a (+/-)1038
double: Utiliza 64 bits, e na pratica tem precisão deaproximadamente 15 casas decimais. Pode armazenar valores de (+/-)10-308 a (+/-)10308
Regras para nomes de variáveis em C
• Deve começar e pode conter letra (maiúscula ou minúscula) ou underline(_).
• Não pode-se utilizar como parte do nome de uma variável: { ( + - * / \ ; . , ?
• Letras maiúsculas e minúsculas são diferentes:• As seguintes palavras são reservadas na linguagem C
e portanto não podem ser utilizadas como nome de variáveis:
auto double int struct break enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do
if static while
Operações aritméticas e expressões
Operações aritméticas podem ser combinadas formando expressões. Existe uma regra de multiplicação e divisão (mesma prioridade) sobre soma e subtração (mesma prioridade) e a ordem de execução para operadores da mesma prioridade é de esquerda para direita. Exemplo.int main(){int a=20, b=10;float c=1.5,d;d=c*b/a; /*atribui 0.75 para d*/d=c*(b/a); /*atribui 0.0 para d pois a divisão entre inteiros resulta em um inteiro*/}
Operações aritméticas e expressões
Note que a melhor forma de garantir o resultado esperado é usar parênteses. A prioridade de execução neste caso é da expressão mais interna para a mais externa.
Int main(){int a=20, b=10;float c=1.5, d;d= (((a+5)*10)/2)+b; /*atribui 135 para d*/}
Operações aritméticas e expressões
Símbolo Função
+ Adição
- subtração
* Multiplicação
/ Divisão real
% Resto da divisão inteira/ Quociente da divisão inteira
Constantes
Assim como variáveis, constantes são usadas para armazenar números e caracteres. Exemplos:# define PI 3.1415926536 /* atribui o valor para PI*/# define Delta 0.001
Definindo novos tipos
Podemos usar o comando typedef para definir novos tipos de variáveis ou abreviar tipos existentes.
Typedef enum {false,true} bool; /* o tipo bool só armazena 0/false e 1/true*/
Operações lógicas e expressões
Os caracteres &&, ||, !, indicam as seguintes operações lógicas: and, or e not, correspondendo às operações de conjunção, disjunção e negação, respectivamente.
Operações lógicas e expressões
#include <stdio.h> /*Biblioteca para incluir comandos de entrada e saída como printf*/
Typedef enum {false,true} bool;Int main(){ bool v1,v2,v3;v1=true;v2=false;v3=v1&&v2;v3=v1||v2;v3=!v1;v3=((v1&&v2))||(!v2);printf("%d,%d,%d\n",v1,v2,v3);}
Funções matemáticas
Função ResultadoSin(x) Seno de um ângulocos(x) Coseno de um ângulotan(x) Tangente do ânguloexp(x) O número e elevado a x.ln(x) Logaritmo neperiano de x
sqrt(x) Raiz quadrada de xlog10(x) Logaritmo base 10 de xRound(x) Arredondamento do ponto
flutuante x.
Várias funções matemáticas são disponibilizadas pela linguagem C.
Funções matemáticas#include <stdio.h> #include <math.h> /* biblioteca padrão para funções matemáticas básicas*/# define PI 3.1415926536 /* atribui o valor para PI*/int main(int argc, char *argv[]) { float a=1.0,b;printf("O valor 4.3 arredondado usando round() e %f", round(4.3)); b=exp(a);printf(“a=%f, b=%f\n”,a,b);a=2.0;a=pow(a,3.0);printf(“a=%f\n”,a);a=cos(PI/2);printf(“a=%f\n”,a);return 0; }
Comandos de entrada/saída
Entrada de Dados:O teclado é o dispositivo padrão para entrada de dados. O comando scanf lê números e caracteres digitados no teclado da seguinte forma:scanf (“%d”, &x) onde x é uma variável inteira e &x é o endereço em memória da variável x.Cada tipo de variável requer um símbolo específico de conversão. O símbolo %d é usado para variáveis int,short, unsigned short, unsigned char;O símbolo %u é usado para unsigned inteiro.O símbolo %c para char.O símbolo %s para char e cadeias de caracteres.O símbolo %f para float e o símbolo %lf para double.
Comandos de entrada/saída
Saída de Dados: O teclado é o dispositivo padrão para saída de dados. O comando printf apresenta números e caracteres na tela da seguinte forma: printf (%d”, x) onde x é uma variável inteira
Exemplo:#include<stdio.h>Int main(){Int a=9, b=800;Float c=20.9176, d=-1.4219/*\n pula linha, 3 indica o número de dígitos, incluindo o sinal, se houver, 5 indica o número de dígitos total, incluindo o sinal, se houver, e 2 indica o número de dígitos após o ponto.printf (“\n a=3d,\n b=%3d, \n c=%5.2f, \n d=%5.2f.\n”,a,b,c,d);return(0);}
Comandos de entrada/saída
include<stdio.h>int main(){
int ano;printf(“Digite o ano de nascimento:");scanf(“%d",&ano);printf(“O ano de nascimento digitado foi: %d\
n",ano);}
Comandos de entrada/saída
include<stdio.h>int main(){
int base, altura, area;printf`(“Digite a base do retangulo:");scanf(“%d",&base);printf(“Digite a altura do retangulo:");scanf(“%d",&altura);area = base altura;printf(“Valor da area e: %d\n",area);
}
Exercícios de comandos de entrada e saída
1. Faça um programa que leia o valor do salário de um funcionário, calcule e mostre seu novo salário, sabendo que o mesmo recebeu um aumento de 21,3%.
2. Faça um programa que receba a altura do degrau de uma escada e a altura que o usuário deseja alcançar subindo a escada. Calcular e mostrar quantos degraus o usuário deverá subir para atingir seu objetivo, sem se preocupar com a altura do usuário.
3. 3. Leia o valor do raio de um círculo e calcule a área deste círculo.
Comandos de entrada/saída
4. A importância de R$ 780.000,00 será dividida entre três ganhadores de um concurso. Sendo que da quantia total: O primeiro ganhador receberá 46%; O segundo receberá 32%; O terceiro receberá o restante.Calcule e imprima a quantia ganha por cada um dos ganhadores.5. Uma empresa contrata um encanador a R$ 30,00 por dia. Crie um programa que solicite o número de dias trabalhados pelo encanador e imprima a quantia líquida que deverá ser paga, sabendo-se que são descontados 8% para pagamento de impostos e taxas devidas.6. Leia os valores de dois catetos de um triângulo e calcule e mostre o valor da hipotenusa
Comandos de entrada/saída
7. Ler um número inteiro e imprimir a soma do sucessor de seu triplo com o antecessor de seu dobro.