• Nenhum resultado encontrado

Programação C Aula 1

N/A
N/A
Protected

Academic year: 2022

Share "Programação C Aula 1"

Copied!
40
0
0

Texto

(1)

Programação C Aula 1

Fernando S. Pacheco

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SANTA CATARINA CAMPUS FLORIANÓPOLIS

DEPARTAMENTO ACADÊMICO DE ELETRÔNICA

(2)

Sumário

Programação

Histórico da linguagem

Linguagens de baixo e alto nível

Processo de geração do código executável

Estrutura de um programa em C

Operadores básicos e Variáveis

Tipos inteiro e float

(3)

LogProg ­ Aula 3 3

Computador

Máquina programável

Projetada para executar operações lógicas ou  aritméticas sequencialmente

Por computador, lembrar de 

(4)

Computador

http://www.cptec.inpe.br/supercomputador/

Processadores Opteron 6100 (8 ou 12 núcleos)

Roda Cray Linux

258 TFlops de pico

Comparação (link)

Intel Core i7

107 Gflops 0,107 TFlops

(5)

ProgC ­ Aula 1

Linguagem C

Década de 70

Dennis Ritchie no Bell Labs

1978: livro de Kernighan e Ritchie (K&R)

Derivada da linguagem B

(6)

Linguagem C

(7)

ProgC ­ Aula 1

Linguagem C

Flexibilidade

Portabilidade

Linguagem de alto nível

Base de C++

(8)

Linguagem C

Objetivo inicial, na década de 70

Escrever sistemas operacionais

Usada nas mais variadas aplicações

Especialmente importante em sistemas  embarcados

Aplicações gráficas

(9)

ProgC ­ Aula 1

Programação

Definir um conjunto de instruções a serem  seguidas

Algoritmo: “receita de bolo”

Nos primórdios, só em Assembly

(10)

Linguagem de baixo nível

De http://en.wikipedia.org/wiki/Low­

level_language

Exemplo de código de máquina: Uma função em código x86 32 bits  para calcular números de Fibonacci:

8B542408 83FA0077 06B80000 0000C383 FA027706 B8010000 00C353BB 01000000 B9010000 008D0419 83FA0376 078BD98B C84AEBF1 5BC3

(11)

ProgC ­ Aula 1

Linguagem de baixo nível

Examplo de linguagem assembly: O mesmo algoritmo, em linguagem  assembly x86 com sintaxe MASM:

fib:

    mov edx, [esp+8]

    cmp edx, 0     ja @f

    mov eax, 0     ret

    

    @@:

    cmp edx, 2     ja @f

    mov eax, 1     ret

    

    @@:

    push ebx     mov ebx, 1     mov ecx, 1     

    @@:

        lea eax, [ebx+ecx]

        cmp edx, 3         jbe @f

        mov ebx, ecx         mov ecx, eax         dec edx

    jmp @b     

    @@:

    pop ebx     ret

(12)

Programação

Linguagens de alto nível

Mais fácil de entender (para o programador)

“Tradução” da linguagem feita por um compilador

FORTRAN, COBOL, PASCAL, C, C++, Python,  Java

Exemplo

area = (base * altura) / 2.0;  /*area do triangulo*/

(Ler http://en.wikipedia.org/wiki/Low­level_language

http://en.wikipedia.org/wiki/High­level_programming_language)

(13)

ProgC ­ Aula 1

Programação

Como aprender?

Escrevendo programas e testando!

Mas sem deixar de conhecer a teoria

(14)

Compiladores e IDEs

Ambientes de desenvolvimento (Integrated  Development Environment ­ IDE)

CodeBlocks http://www.codeblocks.org

Eclipse + CDT (com compilador gcc) http://www.eclipse.org

DevC++ http://www.bloodshed.net/devcpp.html

Turbo C++ 

https://downloads.embarcadero.com/free/c_builder

Microsoft Visual C++ (Express Edition) 

http://www.microsoft.com/express/download

(15)

ProgC ­ Aula 1

Fluxo do processo

Estudar o problema e definir uma solução

Escrever código­fonte em um arquivo fonte

Compilar e gerar um arquivo objeto

Ligar (“linkar”) o arquivo objeto com rotinas de  bibliotecas e gerar arquivo executável

Se necessário, voltar ao primeiro passo

(16)

Processo de Compilação

(17)

ProgC ­ Aula 1

(18)
(19)

ProgC ­ Aula 1

Estrutura de um programa C

Comentários: muito importante!

Dados: “o que vai ser usado”

Instruções: “como usar”

/***************************************

* Cabeçalho / Comentários      *

****************************************/

//Declaração de dados (globais) int main()

{

   //Comandos    return(0);

}

(20)

Estrutura de um programa C

Comentários

Entre /* e */

Em C, linha de código termina com ;

Blocos de código são colocados entre chaves {   }

(21)

ProgC ­ Aula 1

Função main()

Primeira função executada em um programa

Deve retornar um inteiro

int main()

(22)

Programa clássico Hello World

#include <stdio.h>

int main() {

    printf("Hello World!\n");

    return(0);

}

(23)

ProgC ­ Aula 1

Estilo

Muito importante: COMENTAR o código

Comentar é uma arte que pode ser aprendida

Programa sem comentários pode se tornar difícil de ler

Mas excesso de comentários também é ruim

Pelo menos, um cabeçalho

Endentação (facilita leitura para o programador)

Para o compilador, é irrelevante

Automática nos IDEs

Use o sítio http://indentcode.net

(24)

Operadores básicos

Multiplicação: *

Divisão e também divisão inteira: /

Adição: +

Subtração: –

Resto após divisão inteira: %

O que faz o programa seguinte? int main(){

    (3 + 7) * 2;

(25)

ProgC ­ Aula 1

Variáveis

De forma simples, uma variável é um “pedaço” 

de memória com um nome

E o valor dentro desse local pode ser alterado

Vamos ver como “batizar” esse espaço de  memória (dar um nome e definir o tipo)

E como incluir (atribuir) um valor 

(26)

Variáveis

Declaração: nome e tipo (e comentário)

int num_dias; /* número de dias de aula */

C é case sensitive (diferencia maiúsculas de minúsculas)

O que não vale como nome de variável em C

Começar com número: 1a_nota

Usar $: media$final

Espaço: media final

Usar operadores (+, , /, ...): media*final

(27)

ProgC ­ Aula 1

Como comentar

Na declaração de variáveis

RUIM por não fornecer informação relevante:

int num_dias; /* define num_dias como  inteiro */

MELHOR:

int num_dias; /* número de dias de aula */

(28)

Tipo inteiro (int)

Tamanho depende da plataforma/compilador

Se 16 bits, vai de ­32768 até 32767

Limites definidos em <limits.h>

(29)

ProgC ­ Aula 1

Atribuição de valor

Em inglês, assignment

(30)

Atribuição de valor

Em C, com =

Não confundir com == (para comparação)

Válido

indice = 9;

media = (nota1 + nota2)/2.0;

(31)

ProgC ­ Aula 1

Função printf

Para apresentar informação na tela

Definida em <stdio.h>

printf(formato, expressao1, expressao2, ...)

Mais em 

http://www.cppreference.com/wiki/c/io/printf

(32)

Exercício

Calcular e apresentar na tela o resultado de    (3 + 7) * 2

(33)

ProgC ­ Aula 1

Exercício

Criar três variáveis: x, y e z

Atribuir os valores x=10, y=2 e z=6

Mostrar na tela o resultado das expressões

a) x*y+z      b) x*(y+z)         c) x%y 

d) x%z      e) 8%y      f) 9%y

g) x/y      h) (x­y)*z­y

Cite uma das aplicações das expressões com o 

% (resto após divisão inteira)?

(34)

Tipo ponto flutuante (float)

Declaração

float media; // media das notas

Código de formato (printf): %f

(35)

ProgC ­ Aula 1

Exercício (div1.c)

Qual o resultado do programa seguinte? Está  correto? Como corrigir?

#include <stdio.h>

float resposta; // resultado do calculo int main()

{

    resposta = 1/3;

    printf("O resultado eh %f\n", resposta);

    return(0);

}

(36)

Exercício (operacoes.c)

Qual o valor de var_int e var_flut em cada  linha? (Inclua um printf após cada operação)

int var_int;

float var_flut;

int main() {

    var_flut = 1.0/2.0;

    var_int = 1/3;

    var_flut = (1/2) + (1/2);

    var_flut = 3.0/2.0;

    var_int = var_flut;

    return(0);

}

(37)

ProgC ­ Aula 1

Exercício

Qual o resultado do programa seguinte? Está  correto? Como corrigir?

/******************

 * div.c      *  ******************/

#include <stdio.h>

float result;   /* resultado da divisão */

int main() {

    result = 7.0 / 22.0;

    printf("O resultado eh %d\n", result);

    return (0);

}

(38)

Exercício

Qual o resultado do programa seguinte? Está  correto? Como corrigir?

/******************

 * doisedois.c    *  ******************/

#include <stdio.h>

int resposta;

int main() {

    resposta = 2 + 2;

    printf("O resultado eh %d\n");

    return (0);

}

(39)

ProgC ­ Aula 1

Exercício

O programa seguinte tem vários erros. Corrija­

os.

/* Programa com erros */

#include <Stdio.h>;

int main() (

    float a, b;

    a = 3.5;

    printf(“Valor de a = %d/n”, a);

    b = 4.0:

    c = a*a + b;

    print(“Resultado = &f”, c);

    returned 0;

(40)

Crédito das figuras

OUALLINE, S. Practical C Programming. 3. ed. 

O'Reilly, 1997.

Compiler, assembler, linker and loader: a brief  story. Disponível em: 

http://www.tenouk.com/ModuleW.html

Referências

Documentos relacionados

O bom dimensionamento do tempo de carga do capacitor é útil no projeto de caracterização das curvas dos painéis, uma vez que este implica diretamente no projeto do instrumento

Em relação à dimensão A (Discurso/Informação) os indicadores A2 (Mostra que o trabalho dos cientistas é, muitas vezes, influenciado por pressões sociais, políticas,

Parágrafo Terceiro: As empresas que praticam valores superiores ao do caput da presente cláusula garantirão aos seus empregados à manutenção das condições já praticadas, tanto no

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SANTA CATARINA!. (

desempenho de um objeto. • Iniciativas: o que fazer para alcançar os objetivos, atividades. • Mintzberg: Estratégias Pretendidas, Deliberadas, Realizadas, Não Realizadas

A Diretora do Instituto de Patologia Tropical e Saúde Pública da Universidade Federal de Goiás e a Coordenadora de Monitoria/ IPTSP, no uso de suas atribuições,

No presente trabalho buscou-se levantar informações sobre a geração, deposição, transporte e reciclagem dos resíduos de construção civil no Distrito Federal a fim de

 Havendo, pois, o Senhor Deus formado da terra todos os animais do campo e todas as aves dos céus, trouxe-os ao homem, para ver como este lhes chamaria; e o nome que o homem desse