Upload
vukhanh
View
214
Download
0
Embed Size (px)
Citation preview
Computação EletrônicaEletrônica
Introdução a C e Variáveis Inteiras
O Computador
Memória RAM
Unidade de
Dispositivo de Entrada (teclado)
CPU
Unidade de Processamento
Dispositivo de Saída (monitor)
Memória (disco)
O Computador
� A CPU (Central Processing Unit) ou Unidade de Processamento Central é o cérebro do computador. Ele coordena as atividades de entrada e saída de dados, além do entrada e saída de dados, além do armazenamento em memória
� Memória RAM: mais rápida, mais cara e volátil (os dados são perdidos ao desligar)
� Memória (disco): mais lenta, mais barata, e permanente (não há perda de dados ao desligar)
O Computador
� Alguns dispositivos de entrada de dados:�Teclado�Mouse�Mouse�Leitor de CD ou DVD
� Alguns dispositivos de saída de dados:�Monitor� Impressora�Caixa de som
C
� Criado pelo suíço Dennis Ritchie no início da década 70 no laboratório da AT&T Bell Labs
Dennis Ritchie
Labs� O nome é está associado à evolução da
linguagem de programação "B"� Uma das linguagens de programação
mais utilizada de todos os tempos
Pascal� Um programa que escreve "Hello World"
no monitor
#include <stdio.h>#include <stdio.h>int main() {
printf("Hello World");
return 0;}
Compilação#include <stdio.h>int main() {
printf("Hello World");return 0;
}
helloWorld.c
101010011101010101010101010100100010101010101010110111010101010101010101010101010101010
Compilador C (GNU, Code Blocks, etc)
helloWorld.exeduplo clique
Compilação CodeBlocks grava o arquivo bin\Debug\helloWorld.exe na mesma pasta de helloWorld.c
Build-> BuildCodeBlocks com o arquivo helloWorld.c
Build -> Run
Compilação
� Observação�Os programas construídos neste curso serão
exclusivamente modo texto.Ou seja, não haverá mouse, janela, ícones ou �Ou seja, não haverá mouse, janela, ícones ou gráficos. Apenas texto.
�A execução será feita através de entradas de dados pelo teclado e saídas de textos no monitor (dentro de uma janela Command Prompt)
Execução
� O que acontece após o duplo clique em helloWorld.exe?
Entrada (teclado)Memória
Saída (monitor)
101010011101010101010101010100100010101010101010110111010101010101010101010101010101010
CPU rodando helloWorld.exe
Memória
Hello World
Execução
� Para facilitar mostramos o codigo fonteEntrada (teclado)Memória
Saída (monitor)
CPU rodando helloWorld.exe
#include <stdio.h>int main() {
printf("Hello World");return 0;
}
Execução
� Para facilitar mostramos o codigo fonteEntrada (teclado)Memória
Saída (monitor)
CPU rodando helloWorld.exe
#include <stdio.h>int main() {
printf("Hello World");return 0;
}
Execução
� Para facilitar mostramos o codigo fonteEntrada (teclado)Memória
Saída (monitor)
CPU rodando helloWorld.exe
Hello World
#include <stdio.h>int main() {
printf("Hello World");return 0;
}
Execução
� Para facilitar mostramos o codigo fonteEntrada (teclado)Memória
Saída (monitor)
CPU rodando helloWorld.exe
Hello World
#include <stdio.h>int main() {
printf("Hello World");return 0;
}
Execução
� Para facilitar mostramos o codigo fonteEntrada (teclado)Memória
Saída (monitor)
CPU rodando helloWorld.exe
#include <stdio.h>int main() {
printf("Hello World");return 0;
}
Pascal� Um programa que lê um texto do teclado
#include <stdio.h>#include <stdio.h>int main() {
scanf(" ");
return 0;}.
leTeclado.c
Execução
� O que acontece no duplo clique de leTeclado.exe?
Entrada (teclado)Memória
Saída (monitor)
101010011101010101010101010100100010101010101010110111010101010101010101010101010101010
CPU rodando leTeclado.exe
Memória
Alo! <enter>
Execução
� Para facilitar, mostramos o código fonte
Entrada (teclado)Memória
#include <stdio.h>int main() {
scanf(" "); return 0;
}
Saída (monitor)
CPU rodandoleTeclado.exe
Execução
� Para facilitar, mostramos o código fonte
Entrada (teclado)Memória
#include <stdio.h>int main() {
scanf(" "); return 0;
}
Saída (monitor)
CPU rodandoleTeclado.exe
Execução
� Para facilitar, mostramos o código fonte
Entrada (teclado)Memória
#include <stdio.h>int main() {
scanf(" "); return 0;
}
Saída (monitor)
CPU rodandoleTeclado.exe
Alo!
Execução
� Para facilitar, mostramos o código fonte
Entrada (teclado)Memória
#include <stdio.h>int main() {
scanf(" "); return 0;
}
Saída (monitor)
CPU rodandoleTeclado.exe
Alo! <Enter>
Execução
� Para facilitar, mostramos o código fonte
Entrada (teclado)Memória
#include <stdio.h>int main() {
scanf(" "); return 0;
}
Saída (monitor)
CPU rodandoleTeclado.exe
Instalando o CodeBlocks� Antes de instalar, logue no sistema como
administrador (ou seja, com direitos para instalar programas)
� Sobre a instalação do CodeBlocks: � Sobre a instalação do CodeBlocks: http://www.cin.ufpe.br/~if669ec/files/AP1%20-2013.1.ppt
� Ao criar um projeto, escolha Console Application e a linguagem C
� Dúvidas falem com os monitores
A memória
� A memória pode ser vista como um imenso � A memória pode ser vista como um imenso gaveteiro
� Em cada gaveta, guardamos uma informação. Por exemplo, um pedaço de papel contendo um número. Ou um pedaço de papel contendo um nome.
Variáveis� As gavetas em programação são chamadas de
variáveis� Antes de utilizarmos uma variável, devemos nomeá-
la.Em C os nomes de variáveis seguem a seguinte � Em C os nomes de variáveis seguem a seguinte regra:� É formado por uma única letra ou por uma letra seguida de
letras ou dígitos� Não é permitido espaço em branco ou outros caracteres
como @ * , ; / :� $ e _ podem ser utilizados� Exemplos permitidos: a, nota1, matricula, lucroTotal,_teste� Exemplos errados: 5B, A:B, km/h
Variáveis� As palavras abaixo não podem ser utilizadas para
nomear variáveis. Elas já possuem outro significado ou propósito. São denominadas palavras reservadas.
Variáveis
� Em C, devemos nomear a gaveta através da declaração de uma variável#include <stdio.h>
int main() {
var x;
printf("Hello World");
return 0;
}
� Porém, este programa não compila!
Variáveis
� Em C, devemos nomear a gaveta através da declaração de uma variável#include <stdio.h>
int main() {x
var x;
printf("Hello World");
return 0;
}
� Porém, este programa não compila!
x
Variáveis� Computadores trabalham com variáveis de diferentes
tipos:� Em C: int, double, float, char� Vamos trabalhar apenas com inteiros (int) por enquanto
(tipicamente, -2.147.483.648 ... 2.147.483.647)(tipicamente, -2.147.483.648 ... 2.147.483.647)� O programa anterior deve ser corrigido para:#include <stdio.h>
int main() {
int x;
printf("Hello World");
return 0;
}
x
Variáveis
Memória Monitor / Teclado
int main() {int x; return 0;
}
Variáveis
Memória Monitor / Teclado
int main() {int x; return 0;
}
Variáveis
Memória Monitor / Teclado
x
int main() {int x; return 0;
}
Variáveis
Memória Monitor / Teclado
int main() {int x; return 0;
}
Variáveis
� O programa anterior reserva uma área de memória chamada x, mas não a utiliza. Nenhum inteiro foi gravado em utiliza. Nenhum inteiro foi gravado em x.
� Existem 2 modos para gravar um número em uma área de memória�Atribuição�Função scanf
AtribuiçãoMemória
Monitor / Teclado
int main() {int x; x = 5;return 0;
}
AtribuiçãoMemória
Monitor / Teclado
x
int main() {int x; x = 5;return 0;
}
AtribuiçãoMemória
Monitor / Teclado
x5
int main() {int x; x = 5;return 0;
}
AtribuiçãoMemória
Monitor / Teclado
int main() {int x; x = 5;return 0;
}
AtribuiçãoMemória
Monitor / Teclado
int main() {int x; x = 5;x = 8;x = 10;return 0;
}
AtribuiçãoMemória
Monitor / Teclado
x
int main() {int x; x = 5;x = 8;x = 10;return 0;
}
AtribuiçãoMemória
Monitor / Teclado
x 5
int main() {int x; x = 5;x = 8;x = 10;return 0;
}
AtribuiçãoMemória
Monitor / Teclado
x 8
int main() {int x; x = 5;x = 8;x = 10;return 0;
}
AtribuiçãoMemória
Monitor / Teclado
x 10
int main() {int x; x = 5;x = 8;x = 10;return 0;
}
AtribuiçãoMemória
Monitor / Teclado
int main() {int x; x = 5;x = 8;x = 10;return 0;
}
VariáveisMemória
Monitor / Teclado
int main() {int x; int y; int z,w;
return 0;}
VariáveisMemória
Monitor / Teclado
x y z w
int main() {int x; int y; int z,w;
return 0;}
VariáveisMemória
Monitor / Teclado
int main() {int x; int y; int z,w;
return 0;}
AtribuiçãoMemória
Monitor / Teclado
int main() {int x; int y; x=5;y=8;return 0;
}
AtribuiçãoMemória
Monitor / Teclado
x y
int main() {int x; int y; x=5;y=8;return 0;
}
AtribuiçãoMemória
Monitor / Teclado
x y5
int main() {int x; int y; x=5;y=8;return 0;
}
AtribuiçãoMemória
Monitor / Teclado
x y5 8
int main() {int x; int y; x=5;y=8;return 0;
}
AtribuiçãoMemória
Monitor / Teclado
int main() {int x; int y; x=5;y=8;return 0;
}
AtribuiçãoMemória
Monitor / Teclado
int main() {int x; int y; x = 2;y = x+3;x = y-xreturn 0;
}
AtribuiçãoMemória
Monitor / Teclado
x y
int main() {int x; int y; x = 2;y = x+3;x = y-xreturn 0;
}
AtribuiçãoMemória
Monitor / Teclado
x y2
int main() {int x; int y; x = 2;y = x+3;x = y-xreturn 0;
}
AtribuiçãoMemória
Monitor / Teclado
x y2 5
int main() {int x; int y; x = 2;y = x+3;x = y-xreturn 0;
}
AtribuiçãoMemória
Monitor / Teclado
x y3 5
int main() {int x; int y; x = 2;y = x+3;x = y-xreturn 0;
}
AtribuiçãoMemória
Monitor / Teclado
int main() {int x; int y; x = 2;y = x+3;x = y-xreturn 0;
}
AtribuiçãoMemória Monitor / Teclado
int main() {int x; int y; int temp;x = 2;y = 6;temp = x;x = y;y = temp;return 0;
}
AtribuiçãoMemória Monitor / Teclado
x y temp
int main() {int x; int y; int temp;x = 2;y = 6;temp = x;x = y;y = temp;return 0;
}
AtribuiçãoMemória Monitor / Teclado
x y temp2
int main() {int x; int y; int temp;x = 2;y = 6;temp = x;x = y;y = temp;return 0;
}
AtribuiçãoMemória Monitor / Teclado
x y temp2 6
int main() {int x; int y; int temp;x = 2;y = 6;temp = x;x = y;y = temp;return 0;
}
AtribuiçãoMemória Monitor / Teclado
x y temp2 6 2
int main() {int x; int y; int temp;x = 2;y = 6;temp = x;x = y;y = temp;return 0;
}
AtribuiçãoMemória Monitor / Teclado
x y temp6 6 2
int main() {int x; int y; int temp;x = 2;y = 6;temp = x;x = y;y = temp;return 0;
}
AtribuiçãoMemória Monitor / Teclado
x y temp6 2 2
int main() {int x; int y; int temp;x = 2;y = 6;temp = x;x = y;y = temp;return 0;
}
AtribuiçãoMemória Monitor / Teclado
int main() {int x; int y; int temp;x = 2;y = 6;temp = x;x = y;y = temp;return 0;
}
AtribuiçãoMemória Monitor / Teclado
#include <stdio.h>int main() {
int x; scanf("%d",&x);printf("%d\n",x);return 0;
}
& representao endereço da memória da variável x
AtribuiçãoMemória Monitor / Teclado
x
#include <stdio.h>int main() {
int x; scanf("%d",&x);printf("%d\n",x);return 0;
}
& representao endereço da memória da variável x
AtribuiçãoMemória Monitor / Teclado
x5 <enter>5
#include <stdio.h>int main() {
int x; scanf("%d",&x);printf("%d\n",x);return 0;
}
& representao endereço da memória da variável x
AtribuiçãoMemória Monitor / Teclado
x5 <enter>5
5
#include <stdio.h>int main() {
int x; scanf("%d",&x);printf("%d\n",x);return 0;
}
& representao endereço da memória da variável x
AtribuiçãoMemória Monitor / Teclado
#include <stdio.h>int main() {
int x; scanf("%d",&x);printf("%d\n",x);return 0;
}
& representao endereço da memória da variável x
AtribuiçãoMemória Monitor / Teclado
x
#include <stdio.h>int main() {
int x; scanf("%d",&x);x = x + x;printf("%d\n",x);return 0;
}
AtribuiçãoMemória Monitor / Teclado
x5 <enter>5
#include <stdio.h>int main() {
int x; scanf("%d",&x);x = x + x;printf("%d\n",x);return 0;
}
AtribuiçãoMemória Monitor / Teclado
x5 <enter>10
#include <stdio.h>int main() {
int x; scanf("%d",&x);x = x + x;printf("%d\n",x);return 0;
}
AtribuiçãoMemória Monitor / Teclado
x5 <enter>10
10
#include <stdio.h>int main() {
int x; scanf("%d",&x);x = x + x;printf("%d\n",x);return 0;
}
AtribuiçãoMemória Monitor / Teclado
#include <stdio.h>int main() {
int x; scanf("%d",&x);x = x + x;printf("%d\n",x);return 0;
}
Operadores matemáticos para inteiros� Além de adição (+), subtração (-) e
multiplicação (*), C também oferece�Divisão: /�Divisão: /
� 15 / 3 = 5� 5 / 2 = 2 /* Lembre-se: divisão entre inteiros! */
�Resto ou módulo da divisão: %� 15 % 3 = 0� 5 % 2 = 1
#include <stdio.h>
int main() {int x,y,divisao,resto;
printf("Entre o numerador:");scanf("%d",&x);printf("Entre o denominador:");
Um programa maiorMemória
scanf("%d",&y);divisao = x /y;resto = x % y;printf("Divisao: ");printf("%d \n",divisao);printf("Resto: ");printf("%d \n", resto);
return 0;}
Monitor / Teclado
#include <stdio.h>
int main() {int x,y,divisao,resto;
printf("Entre o numerador:");scanf("%d",&x);printf("Entre o denominador:");
Um programa maiorMemória
x y divisao
resto
scanf("%d",&y);divisao = x /y;resto = x % y;printf("Divisao: ");printf("%d \n",divisao);printf("Resto: ");printf("%d \n", resto);
return 0;}
Monitor / Teclado
#include <stdio.h>
int main() {int x,y,divisao,resto;
printf("Entre o numerador:");scanf("%d",&x);printf("Entre o denominador:");
Um programa maiorMemória
x y divisao
resto
scanf("%d",&y);divisao = x /y;resto = x % y;printf("Divisao: ");printf("%d \n",divisao);printf("Resto: ");printf("%d \n", resto);
return 0;}
Monitor / Teclado
Entre o numerador:
#include <stdio.h>
int main() {int x,y,divisao,resto;
printf("Entre o numerador:");scanf("%d",&x);printf("Entre o denominador:");
Um programa maiorMemória
x y divisao
resto
13
scanf("%d",&y);divisao = x /y;resto = x % y;printf("Divisao: ");printf("%d \n",divisao);printf("Resto: ");printf("%d \n", resto);
return 0;}
Monitor / Teclado
Entre o numerador: 13 <ENTER>
#include <stdio.h>
int main() {int x,y,divisao,resto;
printf("Entre o numerador:");scanf("%d",&x);printf("Entre o denominador:");
Um programa maiorMemória
x y divisao
resto
13
scanf("%d",&y);divisao = x /y;resto = x % y;printf("Divisao: ");printf("%d \n",divisao);printf("Resto: ");printf("%d \n", resto);
return 0;}
Monitor / Teclado
Entre o numerador: 13 <ENTER>
Entre o denominador:
#include <stdio.h>
int main() {int x,y,divisao,resto;
printf("Entre o numerador:");scanf("%d",&x);printf("Entre o denominador:");
Um programa maiorMemória
x y divisao
resto
13 3
scanf("%d",&y);divisao = x /y;resto = x % y;printf("Divisao: ");printf("%d \n",divisao);printf("Resto: ");printf("%d \n", resto);
return 0;}
Monitor / Teclado
Entre o numerador: 13 <ENTER>
Entre o denominador: 3 <ENTER>
#include <stdio.h>
int main() {int x,y,divisao,resto;
printf("Entre o numerador:");scanf("%d",&x);printf("Entre o denominador:");
Um programa maiorMemória
x y divisao
resto
13 3 4
scanf("%d",&y);divisao = x /y;resto = x % y;printf("Divisao: ");printf("%d \n",divisao);printf("Resto: ");printf("%d \n", resto);
return 0;}
Monitor / Teclado
Entre o numerador: 13 <ENTER>
Entre o denominador: 3 <ENTER>
#include <stdio.h>
int main() {int x,y,divisao,resto;
printf("Entre o numerador:");scanf("%d",&x);printf("Entre o denominador:");
Um programa maiorMemória
x y divisao
resto
13 3 4
1
scanf("%d",&y);divisao = x /y;resto = x % y;printf("Divisao: ");printf("%d \n",divisao);printf("Resto: ");printf("%d \n", resto);
return 0;}
Monitor / Teclado
Entre o numerador: 13 <ENTER>
Entre o denominador: 3 <ENTER>
#include <stdio.h>
int main() {int x,y,divisao,resto;
printf("Entre o numerador:");scanf("%d",&x);printf("Entre o denominador:");
Um programa maiorMemória
x y divisao
resto
13 3 4
1
scanf("%d",&y);divisao = x /y;resto = x % y;printf("Divisao: ");printf("%d \n",divisao);printf("Resto: ");printf("%d \n", resto);
return 0;}
Monitor / Teclado
Entre o numerador: 13 <ENTER>
Entre o denominador: 3 <ENTER>
Divisao:
#include <stdio.h>
int main() {int x,y,divisao,resto;
printf("Entre o numerador:");scanf("%d",&x);printf("Entre o denominador:");
Um programa maiorMemória
x y divisao
resto
13 3 4
1
scanf("%d",&y);divisao = x /y;resto = x % y;printf("Divisao: ");printf("%d \n",divisao);printf("Resto: ");printf("%d \n", resto);
return 0;}
Monitor / Teclado
Entre o numerador: 13 <ENTER>
Entre o denominador: 3 <ENTER>
Divisao: 4
#include <stdio.h>
int main() {int x,y,divisao,resto;
printf("Entre o numerador:");scanf("%d",&x);printf("Entre o denominador:");
Um programa maiorMemória
x y divisao
resto
13 3 4
1
scanf("%d",&y);divisao = x /y;resto = x % y;printf("Divisao: ");printf("%d \n",divisao);printf("Resto: ");printf("%d \n", resto);
return 0;}
Monitor / Teclado
Entre o numerador: 13 <ENTER>
Entre o denominador: 3 <ENTER>
Divisao: 4
Resto:
#include <stdio.h>
int main() {int x,y,divisao,resto;
printf("Entre o numerador:");scanf("%d",&x);printf("Entre o denominador:");
Um programa maiorMemória
x y divisao
resto
13 3 4
1
scanf("%d",&y);divisao = x /y;resto = x % y;printf("Divisao: ");printf("%d \n",divisao);printf("Resto: ");printf("%d \n", resto);
return 0;}
Monitor / Teclado
Entre o numerador: 13 <ENTER>
Entre o denominador: 3 <ENTER>
Divisao: 4
1Resto:
#include <stdio.h>
int main() {int x,y,divisao,resto;
printf("Entre o numerador:");scanf("%d",&x);printf("Entre o denominador:");
Um programa maiorMemória
scanf("%d",&y);divisao = x /y;resto = x % y;printf("Divisao: ");printf("%d \n",divisao);printf("Resto: ");printf("%d \n", resto);
return 0;}
Monitor / Teclado
Mais sobre printf e scanf
#include <stdio.h>
int main() {int x,y,divisao;
printf("Entre o numerador:");scanf("%d",&x);
Programa que faz a mesma coisa
que o anterior.
Mas não usa tantas variáveis.scanf("%d",&x);printf("Entre o denominador:");scanf("%d",&y);divisao = x /y;printf("Divisao: %d\n",divisao);printf("Resto: %d \n", (x % y));
return 0;}
\n adiciona uma quebra de linha
no final.
printf aceita tanto texto entre
aspas, como "Divisao: " quanto
variáveis como divisao ou
expressões matemáticas como x
% y. Eles tem que vir separados
por vírgulas. %d indica a
impressão de variável inteira
Mais sobre printf e scanf
� printf("txtformato", var1, var2, var3,...) –comando de saída� txtformato = o quê e os valores das variáveis a
serem impressosserem impressos� Códigos de formatação
\n = quebra de linha
\t = Tabulação (espaço de um tab)... (leia o capítulo 2 do livro texto)
� var1 = valor da variável 1;...
Mais sobre printf e scanf
� scanf("tipo", &var1) – comando de saída� tipo = o tipo da variável
%d = inteiro
%f = float%f = float... (veja o capítulo 2 do livro texto)
� &var1 = endereço da variável 1
Exercício
� Fazer um programa para:� Ler, via teclado, um número inteiro. Assuma que o
usuário vai digitar um número entre 100 e 999.� Imprimir no monitor os dígitos deste número (1 � Imprimir no monitor os dígitos deste número (1
dígito em cada linha).� Exemplo. Se o usuário digitar 358, imprimir:
358
Exercício
� Fazer um programa para:� Ler, via teclado, 3 números inteiros x, y e z. Assuma
que o usuário vai digitar números entre 100 e 999.� Imprimir no monitor a soma dos dígitos destes � Imprimir no monitor a soma dos dígitos destes
números.� Exemplo. Se o usuário digitar 353, 612 e 999 para x, y e z
respectivamente, o programa deve imprimir 11, 9 e 27.