programação em c - aula 1...programação em c - aula 1 marcus ricardo aguiar dos santos...

Post on 28-Jul-2020

0 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

marcus.aguiar@kroton.com.br

marcusricardoaguiar@gmail.com

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.

top related