Mudanças entre as edições de "MCO018703 2018 1 AULA03"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(14 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
 +
=Objetivos=
  
=Linguagens de Programação=
+
O aluno será capaz de:
  
Uma linguagem de programação é um método padronizado para comunicar instruções para um computador. É um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador. Em outras palavras, permite que um programador especifique precisamente sobre quais dados um computador vai atuar, como estes dados serão armazenados ou transmitidos e quais ações devem ser tomadas sob várias circunstâncias. Linguagens de programação podem ser usadas para expressar algoritmos com precisão.
+
* Compilar, executar pequenos programa em C usando o CodeBlocks.
 +
* Declarar e usar variáveis locais inteiras e reais.
 +
* Usar as funções de entrada e saída: ''scanf()'' e ''printf()''.
  
O conjunto de palavras (lexemas classificados em tokens), compostos de acordo com essas regras, constituem o código fonte de um software. Esse código fonte é depois traduzido para código de máquina, que é executado pelo processador.
+
=Introdução a linguagem C =
  
Uma das principais metas das linguagens de programação é que programadores tenham uma maior produtividade, permitindo expressar suas intenções mais facilmente do que quando comparado com a linguagem que um computador entende nativamente (código de máquina). Assim, linguagens de programação são projetadas para adotar uma sintaxe de nível mais alto, que pode ser mais facilmente entendida por programadores humanos. Linguagens de programação são ferramentas importantes para que programadores e engenheiros de software possam escrever programas mais organizados e com maior rapidez.
 
  
Linguagens de programação também tornam os programas menos dependentes de computadores ou ambientes computacionais específicos (propriedade chamada de portabilidade). Isto acontece porque programas escritos em linguagens de programação são traduzidos para o código de máquina do computador no qual será executado em vez de ser diretamente executado. Uma meta ambiciosa do Fortran, uma das primeiras linguagens de programação, era esta independência da máquina onde seria executada. [1]
+
A linguagem C foi criada por Dennis Ritchie, em 1972, no centro de Pesquisas da Bell Laboratories. Sua primeira utilização importante foi a reescrita do Sistema Operacional UNIX, que até então era escrito em assembly. Em meados de 1970 o UNIX saiu do laboratório para ser liberado às universidades. Foi o suficiente para que o sucesso da linguagem atingisse proporções tais que, por volta de 1980, já existiam várias versões de compiladores C oferecidas por diversas empresas, não sendo mais restritas apenas ao ambiente UNIX, como também compatível a outros sistemas operacionais. O C é uma linguagem de propósito geral, sendo adequada à programação estruturada. No entanto é mais utilizada para escrever compiladores, analisadores léxicos, bancos de dados, editores de texto, e <b>sistemas embarcados</b>.
  
==Linguagem de Baixo Nível==
+
A linguagem C pertence a uma família de linguagens cujas características são: portabilidade, modularidade, compilação separada, recursos de baixo nível, geração de código eficiente, confiabilidade, regularidade, simplicidade e facilidade de uso.
  
Linguagem de programação de baixo nível trata-se de uma linguagem de programação que segue as características da arquitetura do computador. Assim, utiliza somente instruções que serão executadas pelo processador, em contrapartida as linguagens de alto nível que utilizam de instruções abstratas. Nesse sentido, as linguagens de baixo nível estão diretamente relacionadas com a arquitetura do computador.
+
Fonte: [ftp://ftp.unicamp.br/pub/apoio/treinamentos/linguagens/c.pdf] - Centro de Computação - UNICAMP
  
As linguagens de baixo nível são divididas em duas categorias: primeira geração e segunda geração. [2]
+
*[http://pt.wikipedia.org/wiki/C_%28linguagem_de_programa%C3%A7%C3%A3o%29#Hist.C3.B3ria Histórico Completo]
 +
*[http://pt.wikipedia.org/wiki/C_%28linguagem_de_programa%C3%A7%C3%A3o%29#Vis.C3.A3o_geral Características da Linguagem]
 +
*O C K&R (uma especificação informal da linguagem) e o [http://www.ansi.org/ ANSI] C
 +
*Linguagem [http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_imperativa imperativa] e [http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_procedural procedural].
  
===Primeira geração===
+
== Compilando um  programa C==
  
A linguagem de primeira geração, ou 1GL, é o código de máquina. É a única linguagem que um microprocessador pode executar nativamente. O código de máquina pode ser escrito diretamente por um editor hexadecimal. Atualmente é raro que um programador trabalhe com o código de máquina diretamente, preferindo o uso da linguagem Assembly.
+
Poderíamos usar o compilador da coleção [http://en.wikipedia.org/wiki/GNU_Compiler_Collection gcc] do [http://en.wikipedia.org/wiki/GNU_Project projeto GNU].<br>
 +
O manual completo do gcc pode ser encontrado [http://gcc.gnu.org/ aqui].  
  
===Segunda geração===
+
:Porém, vamos utilizar o CodeBlocks para ser utilizado nos computadores com Windows.
  
A linguagem de segunda geração, ou 2GL, é a linguagem Assembly. É considerada de baixo nível pois embora não seja uma linguagem nativa do microprocessador, ainda sim utiliza apenas de instruções reais do processador. Desta forma a linguagem Assembly não contém nenhum tipo de instrução abstrata, onde cada instrução é convertida diretamente para a instrução equivalente em código de máquina pelo montador.
+
:[https://www.ime.usp.br/~jose/codeblocks/codeblocksintro.html Introdução ao CodeBlocks]
  
;Exemplo de um programa em Assembly
+
O processo de desenvolvimento do programa, independente do SO, envolve:
 +
 
 +
*Editar o programa com um editor de texto (codeblocks)
 +
*Salvar o programa com a terminação ".c"
 +
 
 +
 
 +
;NOTA: Crie uma pasta no computador e depois salve seus códigos fontes num pendrive para trabalhar nos exercícios.
 +
 
 +
 
 +
;Exemplo: Crie o programa abaixo no CodeBlocks (File >> New >> Empty File) e salve como teste.c
 +
 
 +
<syntaxhighlight lang=c>
 +
 
 +
#include <stdio.h>
 +
 
 +
main()
 +
{
 +
  printf("Alo Mundo\n");
 +
}
 +
 
 +
</syntaxhighlight>
 +
 
 +
;Compilar e executar: Gerar executável do programa usando o CodeBlocks (Build >> Build and run)
 +
 
 +
;Depois de testar: Você deve fechar a janela de execução teclando qualquer tecla ou no botão <Fechar>
 +
 
 +
==Estrutura do Programa em C==
 +
 
 +
 
 +
Um programa em C pode ser visto como um conjunto de uma ou mais funções:
 +
 
 +
<syntaxhighlight lang=c>
 +
 
 +
#include <stdio.h>
 +
 
 +
main()
 +
{
 +
  printf("Alo Mundo\n");
 +
}
 +
 
 +
</syntaxhighlight>
 +
 
 +
No programa acima temos uma única função: a função ''main()''
 +
Uma função é um pedaço de código delimitado por chaves e com um nome.<br>
 +
Todo programa C bem comportado deve ter um função ''main''.<br>
 +
A primeira instrução desta função é o ponto de entrada do código do usuário.<br>
 +
A primeira instrução do programa acima é uma chamada a uma função da biblioteca: o ''printf()''.<br>
 +
Esta função permite mostrar dados no terminal.<br>
 +
 
 +
:Nota: Não é possível colocar instruções fora de funções!
 +
 
 +
Vamos ver algumas variações do Alo Mundo:
  
 
<syntaxhighlight lang=c>
 
<syntaxhighlight lang=c>
section .data
+
#include <stdio.h>
msg    db      'Hello World', 0AH
 
len    equ    $-msg
 
 
   
 
   
section .text
+
main()
global _start
+
{
_start: mov    edx, len
+
  printf("Alo Mundo 1\n");
        mov    ecx, msg
+
  printf("Alo Mundo 2\n");
        mov    ebx, 1
+
  printf("Alo Mundo 3\n");
        mov    eax, 4
+
  printf("Alo Mundo 4\n");
        int    80h
+
  printf("Alo Mundo 5\n");
 +
}
 +
</syntaxhighlight>
 +
 
 +
e
 +
 
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 
 +
main()
 +
{
 +
  printf("Alo Mundo 1");
 +
  printf("Alo Mundo 2\n");
 +
  printf("Alo Mundo 3\n\n");
 +
  printf("Alo Mundo 4\n");
 +
  printf("Alo Mundo 5\n");
 +
}
 +
</syntaxhighlight>
 +
 
 +
Observe nestes exemplos a ordem de execução das instruções e o uso do caracter de nova linha.
 +
 
 +
==Declarando variáveis inteiras e reais locais==
 +
 
 +
 
 +
No "c" temos que declarar as variáveis que serão utilizadas no programa.<br>
 +
Se estas variáveis forem declaradas DENTRO da função elas serão "vistas" somente localmente <br>
 +
(escopo local). Este conceito será estendido para blocos de códigos posteriormente.<br>
 +
 
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 
 +
main()
 +
{
 +
  /* aqui começam as declarações de variáveis */
 +
  int x; /* declaração de uma variável inteira */
 +
  float y; /* declaração de uma variável real */
 +
 
 +
  /* aqui começam as instruções do programa principal */
 +
  x=5;  /* atribuindo o valor 5 (constante) a variável x */
 +
  y=6.5;
 +
}
 +
 
 +
</syntaxhighlight>
 +
 
 +
No exemplo anterior criamos duas variáveis : ''x'' e ''y''. <br>
 +
Lembrando que variáveis podem ser vistas como um lugar que pode armazenar um valor. <br>
 +
Para simplificar ainda mais, podemos imaginar a variável como uma CAIXA onde podemos armazenar um valor.<br>
 +
A CAIXA possui um nome e um tipo. O nome IDENTIFICA a CAIXA enquanto o tipo da variável determina a <br>
 +
natureza dos valores que podemos armazenar na CAIXA:
 +
 
 +
  +-----+
 +
  <nowiki>|</nowiki> 5  |  x
 +
  +-----+
 +
 
 +
A variável ''x'' é do tipo ''int'' e, portanto, está apta a armazenar valores inteiros. <br>
 +
Já a variável y é do tipo float e está apta a receber valores reais.
 +
 
 +
  +-----+
 +
  <nowiki>|</nowiki> 6.5 |  y
 +
  +-----+
 +
 
 +
Observe que as instruções de atribuição acima envolvem constantes também.
 +
 
 +
==Funções de entrada e saída de dados==
 +
 
 +
 
 +
No 'C' não existe instrução especialmente para leitura ou saída de dados.<br>
 +
Este procedimento é realizado através de funções da biblioteca.<br>
 +
Na sequência são mostradas duas funções "clássicas" de entrada e saída <br>
 +
de dados: o ''printf()'' - já apresentado - e o ''scanf()''. <br>
 +
Esta última função permite entrada de dados.<br>
 +
 
 +
 
 +
 
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 
 +
main()
 +
{
 
   
 
   
        mov    ebx, 0
+
  int x; /* declaração de uma variável inteira */
        mov    eax, 1
+
  float y;  /* declaração de uma variável real */
        int    80h
+
 
 +
  printf ("Entre com o valor de x ");
 +
  scanf("%d",&x);
 +
 
 +
  printf ("Entre com o valor de y ");
 +
  scanf("%f",&y);
 +
 
 +
  printf ("O valor de x é %d\n",x);
 +
  printf ("O valor de y é %f\n",y);
 +
}
  
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Todas essas linhas do código acima são para exibir a mensagem "Hello World". Porém é um código "humano", pois usamos mnemônicos, que são símbolos e códigos para que nós possamos entender. Obviamente, os computadores não leem como as pessoas, eles simplesmente obedece aos comandos em códigos binários/hexadecimais.
+
;A função <b>printf()</b> tem a seguinte forma geral
 +
 
 +
 
 +
::<i>printf(string_de controle,lista_de_argumentos)</i>;
 +
 
  
==Linguagens de Alto Nível==
+
{| border="1" cellpadding="5" cellspacing="0"
 +
! style="color:white;background: #1E90FF;" | Código
 +
! style="color:white;background: #1E90FF;" | Significado
 +
|-
 +
! style="text-align: center;" | %d
 +
|Interio
 +
|-
 +
! style="text-align: center;" | %f
 +
|Float
 +
|-
 +
! style="text-align: center;" | %c
 +
|Caractere
 +
|-
 +
! style="text-align: center;" | %%
 +
|Coloca um % na tela
  
Essas linguagens são aquelas cuja sintaxe se aproxima mais da nossa linguagem e se distanciam mais da linguagem de máquina.
+
|}
  
Elas possuem um nível de abstração que faz com que você entenda aquele código mais facilmente, pois foi removido da sintaxe o que você não precisa entender em um primeiro contato com programação ou pra quem nunca vai mexer com linguagens de baixo nível.
 
  
Você não vai precisar conhecer coisas como registradores ou instruções do processador para conseguir fazer seu "Hello World". - Apesar que ninguém ensina isso antes de te mostrar o "Hello World" mesmo em linguagens de baixo nível. [3]
+
;A função <b>scanf()</b> tem a seguinte forma geral
  
Alguns exemplos de linguagens de alto nível:
 
  
:JavaScript
+
::<i>scanf(string_de controle,lista_de_argumentos)</i>;
:Python
+
 
:PHP
+
 
:Ruby
+
Uma variação do uso do ''printf'' neste exemplo é:
:C
+
 
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 +
main()
 +
{
 +
 +
  int x; /* declaração de uma variável inteira */
 +
  float y;  /* declaração de uma variável real */
 +
 +
  printf ("Entre com o valor de x ");
 +
  scanf("%d",&x);
 +
 +
  printf ("Entre com o valor de y ");
 +
  scanf("%f",&y);
 +
 +
  printf ("O valor de x é %d e o valor de y é %f\n",x, y);
 +
}
 +
</syntaxhighlight>
 +
 
 +
==Construindo expressões no C==
 +
 
 +
 
 +
;Operador de Atribuição
 +
 
 +
O operador de atribuição ''='' é utilizado para atribuir valores para variáveis.<br>
 +
Veja o exemplo abaixo. Dois números do tipo float são lidos para as variáveis ''x'' e ''y'' e <br>
 +
a média é calculada e colocada na variável média.
 +
 
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 
 +
main()
 +
{
 +
  float x,y;
 +
  float media;
 +
 
 +
  printf("Entre com x\n");
 +
  scanf("%f", &x);
 +
  printf("Entre com y\n");
 +
  scanf("%f", &y);
 +
  media = (x+y)/2;
 +
  printf("Valor de media = %f\n",media);
 +
}
 +
</syntaxhighlight>
 +
 
 +
Um diferencial do C com relação a outras linguagens é que a atribuição pode ser realizada várias vezes dentro de uma mesma instrução. <br>
 +
Veja o exemplo:
 +
 
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 
 +
main()
 +
{
 +
  int x,y,w;
 +
 
 +
  x=1;
 +
  w=y=x+1;
 +
  printf("x=%d y=%d w=%d\n", x,y,w);
 +
 
 +
  w=2*(y=x+1);
 +
  printf("x=%d y=%d w=%d\n", x,y,w);
 +
 
 +
}
 +
</syntaxhighlight>
 +
 
 +
NOTE que o código:
 +
  w=2*y=x+1;
 +
produz um erro de compilação:
 +
erro: ''lvalue required as left operand of assignment''
 +
 
 +
Ver conceito de lvalue e rvalue [http://en.wikipedia.org/wiki/Value_%28computer_science%29 aqui].
 +
 
 +
O problema é que A ESQUERDA do sinal de atribuição sempre deve existir uma referência a uma área de memória (normalmente uma variável).<br>
 +
A semântica da atribuição é copiar o valor computado a direita PARA a área referenciada a esquerda.<br>
 +
 
 +
;Operadores aritméticos
 +
 
 +
Os operadores aritméticos básicos são àqueles apresentados na aula anterior.
 +
 
 +
{| border="1" cellpadding="5" cellspacing="0"
 +
! style="color:white;background: #1E90FF;" | Operador
 +
! style="color:white;background: #1E90FF;" | Significado
 +
|-
 +
! style="text-align: center;" | +
 +
|adição
 +
|-
 +
! style="text-align: center;" | -
 +
|subtração
 +
|-
 +
! style="text-align: center;" | *
 +
|multiplicação
 +
|-
 +
! style="text-align: center;" | /
 +
|divisão
 +
|-
 +
! style="text-align: center;" | %
 +
|módulo
 +
|-
 +
! style="text-align: center;" | ++
 +
|incremento
 +
|-
 +
! style="text-align: center;" | --
 +
|decremento
 +
 
 +
|}
 +
 
 +
=Exercícios - Implementar um programa em C para:=
 +
 
 +
#Receber a resistência em ohms de 2 resistores e então calcular a resistência série e paralela dos mesmos.
 +
#Ler dois números inteiros para dentro de duas variáveis alfa e beta. O programa deve trocar os conteúdos destas variáveis (o que estiver em alfa para beta e vice-versa).
 +
#Converter graus Farenheit em Celsius: C = 5/9*(F-32)
 +
#Ler dois números inteiros e imprimir o resto da média entre os dois (use módulo da divisão: %)
 +
#Calcular a área e comprimento de uma circunferência dado o raio (area=pi*r<sup>2</sup> e circ=2*pi*r)
  
 
=Referências=
 
=Referências=
  
[1] https://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o
+
[1] https://www.ime.usp.br/~jose/codeblocks/codeblocksintro.html
 
 
[1] https://woliveiras.com.br/posts/o-que-e-linguagem-de-programacao-de-alto-nivel/
 
  
  

Edição atual tal como às 18h59min de 5 de março de 2018

Objetivos

O aluno será capaz de:

  • Compilar, executar pequenos programa em C usando o CodeBlocks.
  • Declarar e usar variáveis locais inteiras e reais.
  • Usar as funções de entrada e saída: scanf() e printf().

Introdução a linguagem C

A linguagem C foi criada por Dennis Ritchie, em 1972, no centro de Pesquisas da Bell Laboratories. Sua primeira utilização importante foi a reescrita do Sistema Operacional UNIX, que até então era escrito em assembly. Em meados de 1970 o UNIX saiu do laboratório para ser liberado às universidades. Foi o suficiente para que o sucesso da linguagem atingisse proporções tais que, por volta de 1980, já existiam várias versões de compiladores C oferecidas por diversas empresas, não sendo mais restritas apenas ao ambiente UNIX, como também compatível a outros sistemas operacionais. O C é uma linguagem de propósito geral, sendo adequada à programação estruturada. No entanto é mais utilizada para escrever compiladores, analisadores léxicos, bancos de dados, editores de texto, e sistemas embarcados.

A linguagem C pertence a uma família de linguagens cujas características são: portabilidade, modularidade, compilação separada, recursos de baixo nível, geração de código eficiente, confiabilidade, regularidade, simplicidade e facilidade de uso.

Fonte: [1] - Centro de Computação - UNICAMP

Compilando um programa C

Poderíamos usar o compilador da coleção gcc do projeto GNU.
O manual completo do gcc pode ser encontrado aqui.

Porém, vamos utilizar o CodeBlocks para ser utilizado nos computadores com Windows.
Introdução ao CodeBlocks

O processo de desenvolvimento do programa, independente do SO, envolve:

  • Editar o programa com um editor de texto (codeblocks)
  • Salvar o programa com a terminação ".c"


NOTA
Crie uma pasta no computador e depois salve seus códigos fontes num pendrive para trabalhar nos exercícios.


Exemplo
Crie o programa abaixo no CodeBlocks (File >> New >> Empty File) e salve como teste.c
 

#include <stdio.h>

main()
{
  printf("Alo Mundo\n");
}
Compilar e executar
Gerar executável do programa usando o CodeBlocks (Build >> Build and run)
Depois de testar
Você deve fechar a janela de execução teclando qualquer tecla ou no botão <Fechar>

Estrutura do Programa em C

Um programa em C pode ser visto como um conjunto de uma ou mais funções:

 

#include <stdio.h>

main()
{
  printf("Alo Mundo\n");
}

No programa acima temos uma única função: a função main() Uma função é um pedaço de código delimitado por chaves e com um nome.
Todo programa C bem comportado deve ter um função main.
A primeira instrução desta função é o ponto de entrada do código do usuário.
A primeira instrução do programa acima é uma chamada a uma função da biblioteca: o printf().
Esta função permite mostrar dados no terminal.

Nota: Não é possível colocar instruções fora de funções!

Vamos ver algumas variações do Alo Mundo:

#include <stdio.h>
 
main()
{
  printf("Alo Mundo 1\n");
  printf("Alo Mundo 2\n");
  printf("Alo Mundo 3\n");
  printf("Alo Mundo 4\n");
  printf("Alo Mundo 5\n");
}

e

#include <stdio.h>

main()
{
  printf("Alo Mundo 1");
  printf("Alo Mundo 2\n");
  printf("Alo Mundo 3\n\n");
  printf("Alo Mundo 4\n");
  printf("Alo Mundo 5\n");
}

Observe nestes exemplos a ordem de execução das instruções e o uso do caracter de nova linha.

Declarando variáveis inteiras e reais locais

No "c" temos que declarar as variáveis que serão utilizadas no programa.
Se estas variáveis forem declaradas DENTRO da função elas serão "vistas" somente localmente
(escopo local). Este conceito será estendido para blocos de códigos posteriormente.

 
#include <stdio.h>

main()
{
  /* aqui começam as declarações de variáveis */
  int x; /* declaração de uma variável inteira */
  float y;  /* declaração de uma variável real */

  /* aqui começam as instruções do programa principal */ 
  x=5;   /* atribuindo o valor 5 (constante) a variável x */
  y=6.5; 
}

No exemplo anterior criamos duas variáveis : x e y.
Lembrando que variáveis podem ser vistas como um lugar que pode armazenar um valor.
Para simplificar ainda mais, podemos imaginar a variável como uma CAIXA onde podemos armazenar um valor.
A CAIXA possui um nome e um tipo. O nome IDENTIFICA a CAIXA enquanto o tipo da variável determina a
natureza dos valores que podemos armazenar na CAIXA:

 +-----+
 | 5   |  x
 +-----+

A variável x é do tipo int e, portanto, está apta a armazenar valores inteiros.
Já a variável y é do tipo float e está apta a receber valores reais.

 +-----+
 | 6.5 |  y
 +-----+

Observe que as instruções de atribuição acima envolvem constantes também.

Funções de entrada e saída de dados

No 'C' não existe instrução especialmente para leitura ou saída de dados.
Este procedimento é realizado através de funções da biblioteca.
Na sequência são mostradas duas funções "clássicas" de entrada e saída
de dados: o printf() - já apresentado - e o scanf().
Esta última função permite entrada de dados.


 
#include <stdio.h>

main()
{
 
  int x; /* declaração de uma variável inteira */
  float y;  /* declaração de uma variável real */

  printf ("Entre com o valor de x ");
  scanf("%d",&x);

  printf ("Entre com o valor de y ");
  scanf("%f",&y);

  printf ("O valor de x é %d\n",x);
  printf ("O valor de y é %f\n",y); 
}
A função printf() tem a seguinte forma geral


printf(string_de controle,lista_de_argumentos);


Código Significado
%d Interio
%f Float
%c Caractere
%% Coloca um % na tela


A função scanf() tem a seguinte forma geral


scanf(string_de controle,lista_de_argumentos);


Uma variação do uso do printf neste exemplo é:

#include <stdio.h>
 
main()
{
 
  int x; /* declaração de uma variável inteira */
  float y;  /* declaração de uma variável real */
 
  printf ("Entre com o valor de x ");
  scanf("%d",&x);
 
  printf ("Entre com o valor de y ");
  scanf("%f",&y);
 
  printf ("O valor de x é %d e o valor de y é %f\n",x, y);
}

Construindo expressões no C

Operador de Atribuição

O operador de atribuição = é utilizado para atribuir valores para variáveis.
Veja o exemplo abaixo. Dois números do tipo float são lidos para as variáveis x e y e
a média é calculada e colocada na variável média.

#include <stdio.h>

main()
{
  float x,y;
  float media;

  printf("Entre com x\n");
  scanf("%f", &x);
  printf("Entre com y\n");
  scanf("%f", &y);
  media = (x+y)/2;
  printf("Valor de media = %f\n",media);
}

Um diferencial do C com relação a outras linguagens é que a atribuição pode ser realizada várias vezes dentro de uma mesma instrução.
Veja o exemplo:

#include <stdio.h>

main()
{
  int x,y,w;
  
  x=1;
  w=y=x+1;
  printf("x=%d y=%d w=%d\n", x,y,w);
  
  w=2*(y=x+1);
  printf("x=%d y=%d w=%d\n", x,y,w);

}

NOTE que o código:

 w=2*y=x+1;

produz um erro de compilação:

erro: lvalue required as left operand of assignment

Ver conceito de lvalue e rvalue aqui.

O problema é que A ESQUERDA do sinal de atribuição sempre deve existir uma referência a uma área de memória (normalmente uma variável).
A semântica da atribuição é copiar o valor computado a direita PARA a área referenciada a esquerda.

Operadores aritméticos

Os operadores aritméticos básicos são àqueles apresentados na aula anterior.

Operador Significado
+ adição
- subtração
* multiplicação
/ divisão
% módulo
++ incremento
-- decremento

Exercícios - Implementar um programa em C para:

  1. Receber a resistência em ohms de 2 resistores e então calcular a resistência série e paralela dos mesmos.
  2. Ler dois números inteiros para dentro de duas variáveis alfa e beta. O programa deve trocar os conteúdos destas variáveis (o que estiver em alfa para beta e vice-versa).
  3. Converter graus Farenheit em Celsius: C = 5/9*(F-32)
  4. Ler dois números inteiros e imprimir o resto da média entre os dois (use módulo da divisão: %)
  5. Calcular a área e comprimento de uma circunferência dado o raio (area=pi*r2 e circ=2*pi*r)

Referências

[1] https://www.ime.usp.br/~jose/codeblocks/codeblocksintro.html



Icone voltar.png Icone menu.png Icone prox.png