PCI- Introdução
Profa. Mercedes Gonzales
Márquez
Conceitos Básicos
Estrutura de um computador
MEMÓRIA
PRINCIPAL
UNIDADE
DE
ENTRADA
CPU
UNIDADE
LÓGICA E
ARITMÉTICA
MEMÓRIA
SECUNDÁRIA
UNIDADE
DE
SAIDA
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.
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.
Endereço
Read/Write
CPU
Dados
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
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 windows
1. 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
Comentários
Diretivas de
Compilador
Procedimento
Principal
/* 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;
}
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ória
2. Programa calcula um novo valor
3. 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 de
aproximadamente 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
%
/
Resto da divisão inteira
Quociente da divisão inteira
subtração
Multiplicação
Divisão real
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
Várias funções matemáticas são disponibilizadas pela
linguagem C.
Função
Resultado
Sin(x)
Seno de um ângulo
cos(x)
Coseno de um ângulo
tan(x)
Tangente do ângulo
exp(x)
O número e elevado a x.
ln(x)
Logaritmo neperiano de x
sqrt(x)
Raiz quadrada de x
log10(x)
Logaritmo base 10 de x
Round(x)
Arredondamento do ponto
flutuante x.
#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; }
Funções matemáticas
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);
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.
Download

PCI-Introducao