Prévia do material em texto
Estrutura de
Dados
Introdução a programação
COMPUTADOR
Manipula informações por meio de
sequência de instruções
INFORMAÇÕES
E DADOS
NÚMEROS
TEXTOS
BOOLEANOS
....
PROGRAMA
Sequências de instruções!
CICLO DE VIDA
DO PROGRAMA
Esta Foto de Autor Desconhecido está licenciado em CC BY-SA
https://en.wikiversity.org/wiki/Computer_hardware_and_software
https://creativecommons.org/licenses/by-sa/3.0/
Um típico
computador
Fonte: [1]
Meio de transferência
Armazenamento
A CPU executa o programa e
acesso os dados necessárias nas
memórias disponíveis.
Memória Principal (RAM) não é
permanente!
Computador
Hipotético
TEMOS UMA MEMÓRIA
• CADA POSIÇÃO tem um
número para IDENTIFICAR a
posição 0, 1, 2, 3 ....
TEMOS UMA CPU
• ela tem um local para
armazenar resultados de
operação temporariamente
( REGISTRADOR )
Computador
Hipotético -
operações
read pos: captura uma informação e armazena na
posição rotulada por pos
write pos: escreve o valor armazenado em uma
determinada posição
Storeconst num pos: armazena o valor da
constante numérica (num) na posição de memória
pos
add pos1 pos2: soma os valores numéricos
armazenados em op1 e op2, o resultado fica no
registrador
store pos: armazena o valor do registrador na
posição de memória pos
Computador
Hipotético -
executando
read 0 # l ê v a l o r do t e c l a d o e armazena na p o s i ç ã o 0
storeconst 2.5 1 # armazena o v a l o r 2 . 5 na p o s i ç ã o 1
add|mul|sub|div 0 1 #operações com os itens da posição 0 e 1
store 2 # armazena v a l o r do r e g i s t r a d o r na p o s i ç ã o 2
write 2 # e x i b e o v a l o r da p o s i ç ã o 2 da memória na t e l a
Na memória do
computador hipotético
|0|0|0|0|0|0|0|0| # c ó d i g o de re ad : 0
|0|0|0|0|0|0|0|0| # 0
|0|0|0|0|0|0|0|2| # c ó d i g o de s t o r e c o n s t : 2
|0|2|5|0|0|0|0|1| # 2 . 5 ( v a l o r r e a l )
|0|0|0|0|0|0|0|1| # 1
|0|0|0|0|0|0|0|3| # c ó d i g o de add : 3
|0|0|0|0|0|0|0|0| # 0
|0|0|0|0|0|0|0|1| # 1
|0|0|0|0|0|0|0|7| # c ó d i g o de s t o r e : 7
|0|0|0|0|0|0|0|2| # 2
|0|0|0|0|0|0|0|1| # c ó d i g o de w r i t e : 1
|0|0|0|0|0|0|0|2| # 2
Exemplo
Faça um programa
que receba uma
temperatura em
graus Celsius e
converta para
Fahrenheit
1f = 1.8ºC
Resposta read 0
storeconst 1.8 1
mul 1 0
store 2
storeconst 32 3
add 2 3
store 4
write 4
Computador
Real
Linguagem de computador é difícil
Não fornece agilidade
O computador hipotético demonstra
como o programa executa e manipula
memória
No computador real nós utilizamos
linguagens de programação, que
abstraem muito disso tudo para nós
Ciclo de desenvolvimento
de um programação
Fonte: [1]
Tem que C?
SIM!
Alguns conceitos úteis e interessantes
podem ser fixados apenas (ou são melhor
fixados) com a linguagem C ou C++!!!
AH, não sou especialista em C, longe
disso!!!
Esta Foto de Autor Desconhecido está licenciado em CC BY-NC
https://freepngimg.com/png/10524-c++-free-png-image
https://creativecommons.org/licenses/by-nc/3.0/
Posso usar
Python?
No momento adequado utilizaremos
Python!
Mas não utilizaremos operações “prontas”
ou “built-in” de Python para trabalhar com
Pilha, Lista, Fila, Árvore, etc... Serão
motivados à construir cada uma das
estruturas de dados
Esta Foto de Autor Desconhecido está licenciado em CC BY-NC
https://freepngimg.com/png/2874-snake-png-image-picture-download-
https://creativecommons.org/licenses/by-nc/3.0/
Pq preciso escrever
um código se já
existe algo pronto?
São 5 motivos importantes!
1. Para tu entender como FUNCIONA!
UÉ!?
2. BASE
3. BASE
4. BASE
5. BASE
Esta Foto de Autor Desconhecido está licenciado em CC BY
http://piedraonline.blogspot.com/2013/08/eeuu-despeja-el-area-51-un-informe.html
https://creativecommons.org/licenses/by/3.0/
Utilizando C
# include
int main (void )
{
float c;
float f;
printf("Digite os graus em Celsius \n");
scanf("%f", &c);
f = 1.8 * c + 32;
printf("Isso quer dizer que são %f Fahrenheit \n",f);
return 0;
}
Variáveis Representa um espaço em
memória
DEVEM SER DECLARADAS NO
COMEÇO DO PROGRAMA
DEVE TER UM TIPO e UM
NOME
Restrições para nomes
Tipos básicos
em C
Char = ocupa 1 byte (8bits), pode
representar 256 valores, sendo 28
short int (ou short) = ocupa 2 bytes
int = ocupa 4 bytes
long int (ou long) = ocupa 4 bytes
float = para ponto flutuante
double = ponto flutuante com melhor
precisão
Tipo Tamanho Representatividade
char 1 byte −128 a 127
unsigned char 1 byte 0 a 255
short int 2 bytes −32 768 a 32 767
unsigned short int 2 bytes 0 a 65 535
long int 4 bytes −2 147 483 648 a 2 147 483 647
unsigned long int 4 bytes 0 a 4 294 967 295
Tamanhos
Tipo Tamanho Representatividade
char 1 byte −128 a 127
unsigned char 1 byte 0 a 255
short int 2 bytes −32 768 a 32 767
unsigned short
int
2 bytes 0 a 65 535
long int 4 bytes −2 147 483 648 a 2
147 483 647
unsigned long
int
4 bytes 0 a 4 294 967 295
Tamanhos
Tipo Tamanho Representatividade
float
double
4 bytes
8 bytes
±10−38 a 1038
±10−308 a 10308
C não tem
Boleano?
https://qastack.com.br/programming/1921
539/using-boolean-values-in-c
Declaração de
variáveis
int a;
int b;
float c;
# ou
int a, b;
Constantes
As constantes são declaradas no começo
do programa com
# define NOME valor
# include
# define FATOR 1.8
int main (void )
{
Operadores aritméticos
+ -
/ *
Operadores de atribuição
= +=
-= *=
Operadores de incremento
e decremento
x = ++a; // a é incrementado e x recebe o valor novo de a
x = a++; // x recebe 2 e a é incrementado
a = 2;
Operadores relacionais
= maior ou igual que
== igual a
!= diferente de
= maior ou igual que
== igual a
!= diferente de
Operadores Lógicos
&& operador binário E (AND)
|| operador binário OU (OR)
! operador unário de NEGAÇÃO (NOT )
Blocos de
comandos
if ( _condição_1_ ) {
_bloco_de_comandos_1
...
}
else {
if ( _condição_2_ ) {
_bloco_de_comandos_2
...
}
else {
_bloco_de_comandos_3
...
}
}
Swith Case
swith ( expr ) {
case op1 :
......
break;
case op2 :
......
break;
default :
......
break;
}
Vamos praticar
um pouco!
Praticando!
Exercício 1
Escreva um programa em C que receba
três números inteiros como entrada e
imprima, como saída, o maior número
recebido.
Fonte: [1] . Capítulo 3
Exercício 2
Escreva um programa em C que receba
três números inteiros como entrada e
imprima, como saída, os números em
ordem crescente.
Fonte: [1] – Capítulo 3
Exercício 3
Considere uma disciplina que adota o seguinte critério de aprovação:
os alunos fazem duas provas (P1 e P2) iniciais; se a média nas duas
provas for maior ou igual a 5.0, e se nenhuma das duas notas for
inferior a 3.0, o aluno passa direto. Caso contrário, o aluno faz uma
terceira prova (P3) e a média é calculada considerando se a terceira
nota e a maior das notas entre P1 e P2. Neste caso, o aluno é aprovado
se a média final for maior ou igual a 5.0.
Escreva um programa completo que leia inicialmente as duas notas de
um aluno, fornecidas pelo usuário via teclado. Se as notas não forem
suficientes para o aluno passar direto, o programa deve capturar a
nota da terceira prova, também fornecida via teclado. Como saída, o
programa deve imprimir a média final do aluno, seguida da
mensagem “Aprovado” ou “Reprovado”, conforme o critério descrito
aqui.
Referência
[ 1 ] CELES, Waldemar. Introdução a
estruturas de dados com técnicas de
programação em C. 2. Rio de Janeiro GEN
LTC 2016 1 recurso online (SBC (Sociedade
Brasileira de Computação)). ISBN
9788595156654.