Programação em C - Aula 1...Programação em C - Aula 1 Marcus Ricardo Aguiar dos Santos...
Transcript of Programação em C - Aula 1...Programação em C - Aula 1 Marcus Ricardo Aguiar dos Santos...
Programação em C - Aula 1
Marcus Ricardo Aguiar dos Santos
Disciplina
Bibliografia:
● Senne, Edson Luiz França - Primeiro Curso de Programação em C. 2ª e 3ª
Edição. Visual Books.
● Dauricio, Juliana Schiavetto - Algoritmos e Lógica de Programação.
Editora e Distribuidora Educacional S.A.
● Deitel, Harvey - C: Como Programar. 6ª edição. Pearson Education.
● C Progressivo: http://www.cprogressivo.net/
Disciplina
Ementa:
● Introdução; ● Variáveis, Entrada e saída de dados● Estruturas condicionais● Estruturas de repetição● Vetores● Matrizes● Estruturas heterogêneas.
Disciplina
Avaliação Parcial (30%) e Oficial (70%) 1 - 26 a 30 de set. (40%)
Avaliação Parcial (30%) e Oficial (70%) 2 - 28 de nov. a 02 de dez. (60% - toda a
matéria)
Período letivo - 03/08 a 16/12
Avaliações Parciais: atividades pré/pós-aulas e trabalhos avaliativos
Apresentação
Professor: Marcus Ricardo Aguiar dos Santos
Apresentação
Formação Acadêmica:
❖ Graduação em Engenharia de Computação - CEFET-MG (2013)
❖ Mestrado em Modelagem Computacional - CEFET-MG (2015)
❖ Especialização em Engenharia de Software - PUC-MG (2016)
Apresentação
Experiência Profissional:
❖ Analista de Suporte a SO (Unix) e BD (Oracle) - Oi (2011 - 2014)
❖ Analista de Sistemas Java (Web) - Proativa (2014 - 2015)
❖ Analista de Sistemas Java (BackEnd) - Group (2015 - atual)
❖ Professor - Pitágoras (2014 - atual)
Aula Modelo Institucional
● Acesso ao material acadêmico: http://avaeduc.com.br/
● Modelo Pré-aula, Aula e Pós-aula.
● Favor ler o material disponibilizado no portal e fazer as atividades.
Motivação
Motivação
“Além de organizar as ideias, a programação ajuda a ver o mundo de maneira
mais criativa e crítica.” Autor: Mitchl Resnick, pesquisador do MIT.
“Pensar de maneira mais lógica e objetiva, e aprender a lidar também com
grandes problemas (dividir em uma sequência de problemas menores, mais
gerenciáveis é o lema da programação), resolvendo até os problemas
complexos de uma forma mais eficiente e escalável.” Autor: Camila Achutti,
Engenheira de Software da Iridescent.
Motivação
Motivação
Motivação
Vídeo Motivacional
Aula 1 - Introdução
Sumário
● Introdução
● Conceitos Importantes
● Introdução a Linguagem C
● Tipos de valores
● Representação de Números Inteiros
● Representação de Dados Não Numéricos
● Variáveis
● Mostrando Dados na Console
Introdução
O que vamos aprender?
Programar: fazer planos para uma ocasião; planejar.
Algoritmo: conjunto das regras e procedimentos lógicos perfeitamente
definidos que levam à solução de um problema em um número finito de
etapas.
Algoritmo 1
Qual é o algoritmo para realizar a troca de uma lâmpada?
Algoritmo 1
Início
a. Verifica se o interruptor está desligado.
b. Pega uma escada.
c. Posiciona a escada no local.
d. Sobe a escada.
e. Retira a lâmpada queimada.
f. Coloca a lâmpada nova.
g. Desce da escada.
h. Ascende a lâmpada no interruptor.
i. Se a lâmpada não acender, então
j. Retira novamente a lâmpada queimada.
k. Troca por uma lâmpada nova.
l. Senão
m. Descarta a lâmpada queimada.
n. Guarda a escada.
o. Encerra a tarefa.
Fim
Algoritmo 2
Em uma gincana escolar, o desafio era fazer com que dois grupos de três integrantes
cada conseguissem atravessar uma ponte pela qual só é possível passar dois alunos por
vez. No entanto, como são grupos diferentes, não é permitido que em qualquer dos lados
da ponte fique mais alunos do grupo 1 (G1) que do grupo 2 (G2). Então, elabore o
algoritmo que respeite a essas regras, demonstre-o em linguagem natural e faça o teste
conforme a indicação que segue:
Jogo: (https://rachacuca.com.br/jogos/missionarios-e-canibais/)
Algoritmo 2
1. Atravessem o aluno1 do G1 e o aluno1 do G2.
2. Volte o aluno1 do G1.
3. Atravessem o aluno2 do G2 e o aluno3 do G2.
4. Volte o aluno1 do G2.
5. Atravessem o aluno1 do G1 e o aluno2 do G1.
6. Volte aluno1 do G1 e aluno2 do G2.
7. Atravessem o aluno1 do G1 e o aluno3 do G1.
8. Volte o aluno3 do G2.
9. Atravesse o aluno1 do G2 e o aluno2 do G2.
10. Volte aluno2 do G2.
11. Atravessem aluno2 do G2 e o aluno3 do G2.
Conceitos Importantes
Conceitos Importantes
Código de programação ou programa: corresponde a um texto, com um
conjunto de regras de sintaxe de uma determinada linguagem de
programação.
Conceitos Importantes
Linguagem C - um subconjunto da linguagem C++
Ambiente de programação:
● Editor de textos: reconhece um texto como sendo um programa
(Dev-C++)
● Compilador: verifica se o texto do programa obedece a sintaxe da
linguagem de programação e traduz o texto para a linguagem de máquina
Conceitos Importantes
Porque o compilador
traduz o programa
escrito na linguagem de
programação para a
linguagem de máquina
(código binário)?
Código do Programa Compilador
Código de Máquina (binário)001010101
010101010101010101
int main () {….
}
ERROS
Conceitos Importantes
Papel do Compilador: as máquinas não compreendem as gramáticas das linguagens de programação de forma direta. Elas precisam receber um código “traduzido”.
Código em linguagem de máquina: código executável pelo computador.
Conceitos Importantes
Toda linguagem de programação possui regras que a definem.
Erro de sintaxe: ocorre quando um texto (código fonte) não atende as regras
da linguagem.
Exemplo:
int x erro de sintaxe (toda instrução finaliza com um ;)
int x;
Conceitos Importantes
Um código pode ser compilado e, mesmo assim, não ser correto.
Este código possui bugs.
Para encontrar estes bugs utiliza-se um processo chamado depuração.
Programa-fonte ou código-fonte: um texto escrito em uma linguagem de
programação.
Introdução a Linguagem C
Problema 1
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
float y;
y = sin(1.5);
printf(“y = %f”, y);
printf(“\n”);
system(“PAUSE”);
return 0;
}
Construir um programa capaz de calcular o seno de 1.5:
Uma solução para o problema.
Introdução a Linguagem C
Os programas fonte na linguagem C possuem a extensão .c.
Exemplo: programa1.c
Todos os arquivos de código em c iniciam com as as linhas a seguir:
#include <stdio.h>
#include <stdlib.h>
Introdução a Linguagem C
Linhas com #include indicam ao compilador que o programa-fonte vai utilizar
arquivos de cabeçalho (extensão .h, header).
As linhas do slide anterior indicam ao compilador que o programa vai utilizar
as instruções das bibliotecas stdio e stdlib.
Introdução a Linguagem C
Compilação:
● Tradução: transforma o programa-fonte em um programa objeto
● Ligação: conecta o programa-objeto às instruções necessárias das
bibliotecas para produzir o executável.
Introdução a Linguagem C
EDITOR
PROGRAMA FONTE COMPILADOR P. OBJETO
BIBLIOTECAS
LIGADOR
EXECUTÁVEL
Problema 1
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
float y;
y = sin(1.5);
printf(“y = %f”, y);
printf(“\n”);
system(“PAUSE”);
return 0;
}
Construir um programa capaz de calcular o seno de 1.5:
Uma solução para o problema.
Introdução a Linguagem C
A primeira linha do programa:
int main (int argc, char *argv[])
corresponde ao cabeçalho da função main (função principal do programa).
Podem existir outras funções, mas sempre teremos a função main.
Introdução a Linguagem C
Escrever um programa em C corresponde a escrever o corpo da função
principal (main):○ O corpo de uma função é sempre delimitado por { e }.
Cabecalho da função principal:
int - tipo do valor produzido pela função
main - nome da função
(int argc, char *argv[]) - lista de parâmetros da função
Problema 1
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
float y;
y = sin(1.5);
printf(“y = %f”, y);
printf(“\n”);
system(“PAUSE”);
return 0;
}
Construir um programa capaz de calcular o seno de 1.5:
Uma solução para o problema.
Introdução a Linguagem C
Funções utilizadas no problema 1:
sin - a função matemática seno;
printf - uma função para exibir resultados na console;
Função: conjunto de instruções que recebe um ou mais parâmetros
(separados por vírgula) e retorna um valor.
Problema 1
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
float y;
y = sin(1.5);
printf(“y = %f”, y);
printf(“\n”);
system(“PAUSE”);
return 0;
}
Construir um programa capaz de calcular o seno de 1.5:
Uma solução para o problema.
Introdução a Linguagem C
A próxima linha do problema 1 é:
system(“PAUSE”);
Este comando pausa a execução e exibe a mensagem “Pressione qualquer
tecla para continuar...”.
Introdução a Linguagem C
A última linha do corpo da main do problema 1 é:
return 0;
Este comando finaliza a execução do código. Zero é o valor de retorno da
função main que é a primeira função executada pelo programa. Como a main
retorna o seu resultado para nenhuma outra função, o valor de retorno é
irrelevante.
Problema 1
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
float y;
y = sin(1.5);
printf(“y = %f”, y);
printf(“\n”);
system(“PAUSE”);
return 0;
}
Construir um programa capaz de calcular o seno de 1.5:
Uma solução para o problema.
Tipos de Valores
Tipos de Valores
A solução de um problema de cálculo pode envolver vários tipos de dados:
● Números inteiros: números positivos ou negativos não fracionários○ 2, 3, 8, etc…
● Números com parte inteira e fracionária: separação por pontos○ 1.24, 3.454, 345.56, etc..
Tipos de Valores
Ponto Flutuante: valores numéricos com parte inteira e parte fracionária.
Possuem representação diferenciada na memória do computador
Utiliza-se a notação binária para representar todos tipos de valores.
Existem várias formas de representar números inteiros e de ponto flutuante.
Representação de Números de Ponto Flutuante
A representação de números de ponto flutuante nos computadores pode ser
de duas formas:
● Representação com precisão simples (SP)
● Representação com precisão dupla (DP)
Representação de Números de Ponto Flutuante
Representação com precisão simples (SP) Representação com precisão simples (DP)
Ocupação total de 32 bits Ocupação total de 64 bits
1 bit de sinal 1 bit de sinal
23 bits para a mantissa 52 bits para a mantissa
8 bits para o expoente 11 bits para o expoente
Representação de Dados não Númericos
Representação de Dados não Numéricos
Um programa de computador pode precisar também de dados não numéricos.
Existem padrões internacionais para a codificação de caracteres (ASCII, ANSI, Unicode). A linguagem C adota o padrão ASCII (American Standard Code Information Interchange).
Cada caractere é representado por 1 byte, ou 8 bits.
Representação de Dados não numéricos
Caractere Decimal Representação ASC II
‘A’ 65 01000001
‘B’ 66 01000010
‘a’ 97 01100001
‘b’ 98 01100010
‘0’ 48 00110000
‘1’ 49 00110001
‘+’ 43 00101011
‘@’ 64 01000000
‘\n’ 10 00001010
‘ ’ 32 00100000
Representação de Dados não numéricos
Representação simbólica de dados não numéricos em c:
● Caractere isolado: delimitado por apóstrofos.
ex.: ‘a’, ‘b’, ‘2’, etc...
● Sequência de caracteres (string): delimitado por aspas.
ex.: “teste”, “primeira string”, etc...
Variáveis
Variáveis
● Os dados de um programa são armazenados na memória do computador.
● Cada posição de memória do computador possui um endereço.
● Dado um endereço é possível saber qual é o valor armazenado em cada
uma das posições de memória.
● Para facilitar o controle sobre onde armazenar informação, os programas
utilizam variáveis.
Variáveis
Variável: nome simbólico de uma posição(ões) de memória do computador.
Variáveis podem sofrer variações em seus valores.
Existem vários tipos de variáveis que podem ocupar diferentes tamanhos de
memória.
Variáveis
Todo programa deve declarar (inicializar) todas as variáveis que irá utilizar e
isso deve ser feito antes da utilização da variável.
A declaração de uma variável representa a associação (alocação ou reserva)
de memória para aquele registro representado pela variável.
Variáveis
Em C existem 4 tipos básicos de dados:
Tipo Tamanho (bytes) Valor
char 1 Um caractere
int 4 Um número inteiro
float 4 Um número de ponto flutuante no formato SP
double 8 Um número de ponto flutuante no formato DP
Problema 1
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
float y;
y = sin(1.5);
printf(“y = %f”, y);
printf(“\n”);
system(“PAUSE”);
return 0;
}
Construir um programa capaz de calcular o seno de 1.5:
Uma solução para o problema.
Variáveis
No problema 1, a primeira linha do corpo da função principal é:
● float y;
esta linha declara uma variável y para armazenar um número de ponto
flutuante (formato SP).
Variáveis
● Neste momento, a variável y foi criada e uma posição de memória foi
alocada, porém ainda sem valor.
● A linha seguinte do problema 1 faz uma atribuição de valor à variável y:
y = sin(1.5);
no lado direito do operador de atribuição, existe uma referência à função
seno com um parâmetro 1.5.
Variáveis
Em uma linguagem de programação, dizemos que d é o parâmetro da função f
e que f (d) é o valor da função f para o parâmetro d. Exemplos:
f é a função “dobro” f(2) é o valor 4
f é a função “raiz quadrada” f(8) é o valor 2.8228427
f é a função “seno” f(1.5) é o valor 0.997485
Variáveis
Podem existir valores d1 e d2, tais que f(d1) = f(d2).
Exemplo:
f - função “elevado ao quadrado, menos um”
f(1) = f(-1)
O valor de f(d) é único, dado f uma função do programa.
v1 = f(d) e v2 = f(d), tais que v1 diferente de v2 (não existe)
Variáveis
O valor armazenado em uma variável por uma operação de atribuição depende
do tipo da variável.
● Tipo da variável int: será armazenado um valor inteiro.
● Tipo da variável float ou double: será armazenado um valor de ponto
flutuante.
Variáveis
Exemplos:
Considere as seguintes declarações:
int a;
float b;Operação de atribuição Valor armazenado na variável
a = (2 + 3)*4 20
b = (1 - 4)/(2 - 5) 1.0
a = 2.75 + 1.12 3
b = a / 2.5 1.2
Mostrando valores na console
Mostrando valores na Console
As próximas linhas do problema 1 são:
printf(“y = %f”, y);
printf(“\n”);
A função printf faz parte da biblioteca stdio. É usada para exibir resultados do
programa e pode ter um ou mais parâmetros.
Mostrando valores na Console
O primeiro parâmetro da função printf: uma sequencia de caracteres (string).
Essa sequencia pode conter alguns tags (especificadores de formato) que
representam valores.
Toda tag começa com um símbolo %, seguida de uma letra que indica o tipo
do valor a ser exibido.
Mostrando valores na Console
%d - valor inteiro Exemplo:
%f - valor de ponto flutuante printf(“a = %d, b = %f e c = %f”, a, b, (a + b));
%c - um único caractere 1º - “a = %d, b = %f e c = %f”
%s - um string. 2º - a
3º - b
4º - (a + b)
Mostrando valores na Console
Caractere Significado
\a O caractere (invisível) de aviso sonoro (bip).
\n O caractere (invisível) de nova linha.
\t O caractere (invisível) de tabulação horizontal.
\\ O caractere de barra invertida.
\’ O caractere de apóstrofo.
\” O caractere de aspas.
A linguagem C utiliza o símbolo \ (barra invertida) para especificar alguns
caracteres especiais:
Problema 1
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
float y;
y = sin(1.5);
printf(“y = %f”, y);
printf(“\n”);
system(“PAUSE”);
return 0;
}
Construir um programa capaz de calcular o seno de 1.5:
Uma solução para o problema.
Problema 2
Problema 2 - Exercício
Uma conta de caderneta de poupança foi aberta com um depósito de R$ 500,00. Imagine que esta conta é remunerada em 1% de juros ao mês. Qual será o valor da conta após três meses?
Problema 2
#include <stdio.h>#include <stdlib.h>
int main (int argc, char *argv[]){float d, p, s, t;d = 500; // depósito inicialp = d + 0.01*d; // após o primeiro mêss = p + 0.01*p; // após o segundo mêst = s + 0.01*s; // após o terceiro mêsprintf(“Valor da conta = %.2f\n”, t);system(“PAUSE”);return 0;
}
Problema 2
Comentários: texto que não será compilado. São anotações que ajudam a compreender o código.
● Notação: // - tudo que se segue até o final da linha é comentário
Tag especial - %.2f (corresponde a duas casas decimais)
Ponto-e-vírgula: caractere especial que denota finalização de uma instrução de código. Um programa é um conjunto de instruções que o computador deve executar.
Resumo
Resumo
● Regras de sintaxe de uma linguagem de programação;
● Programa compilador;
● Linguagem de máquina;
● Programa-fonte, programa-objeto e programa-executável;
● Erros de sintaxe e erros de lógica;
● Arquivos de cabeçalho e bibliotecas;
● Representação de valores não-numéricos;
Resumo
● Variáveis;
● Tipos de valores (int, float, double, char);
● Função principal (main);
● A função printf;
● Comentários
Exercícios
Exercício 1
Escrever um programa para determinar a quantidade de litros de combustível gastos em uma viagem por um automóvel que faz 12 km/litro. Para isso, sabe-se que o tempo gasto na viagem é T = 35 min e a velocidade média do automóvel é V = 80 km/h.
Exercício 2
Imagine que C armazena o valor de uma temperatura em graus centígrados. Escrever um programa para apresentar este valor em graus Fahrenheit. A fórmula de conversão é: F = (9 * C + 160) / 5, onde F é a temperatura em graus Fahrenheit e C é a temperatura em graus centígrados.