Prof. João Bosco Mangueira Sobral   

Contato: 
(
jbmsobral@gmail.com ou bosco.sobral@ufsc.br)

                             Departamento de Informática e Estatística - Sala 515


Plano de Ensino 2019.1    Turmas:  02235, 03215, 03216

Engenharias: Eletrônica,  Elétrica, Mecânica, Alimentos, Quimíca, Sanitária


========================================================================================================

AULA 1 (11-03-2019)  

Modelo Didático de Computador (pdf)    (explicado em sala de aula)

Mostrando as estruturas de raciocínio lógico:


(SE-ENTÃO,
            SE-ENTÃO-SENÃO,
                         REPITA-ATÉ,
                                   ENQUANTO-FAÇA,
                                                  CONTADORES,
                                                                   REPETIÇÃO COM O USO DE CONTADORES
                                                                                     REPETIÇÃO COM O USO DE FLAG)
                                                                                                      ACUMULADORES DE SOMA )


TAREFA 1a -  Algoritmo TROCA 

algoritmo "TROCA"
.......
inicio
     leia (A, B)
     T <- A
     A <- B
     B <- T
     escreva (A, B)
fimalgoritmo


TAREFA 1b
- Algoritmo AVALIAÇÂO para 1 turma.

Considere a sua turma da disciplina de Introdução à Ciência da Computação que você faz parte. Use para os
     
dados de
entrada
, para cada aluno: a sua matricula M (inteiro) e as notas das provas P1  (real) e P2 (real).  Suponha que existam 3 tarefas práticas TP1, TP2, TP3. Entre com as notas das tarefas práticas TP1, TP2,TP3.  Para confirmar o que digitou, escreva as mensagens e as notas de entrada.
 
Faça algoritmo que:

a) Leia o número N de alunos da turma. N deve ser fornecido via teclado. Suponha um valor de N inteiro. O algoritmo deve verificar se o aluno foi aprovado ou reprovado.

 

b)   Considere a média aritmética ponderada das provas de cada aluno:  MP = ( P1  +  P2 )/2.
Considere que  a média das tarefas práticas é MT = (0.30*TP1 + 0.30TP2 + 0.40*TP3), supondo 5 tarefas práticas. 
A média final MF = (0.7*MP + 0.3*MT) 

<Fazer a lógica da aprovação de cada aluno, de acordo com o explicado na aula>

 

c)  O algoritmo deve fornecer ao final, a média MEDFINAL das notas MF dos alunos da turma. Deve escrever a mensagem identificando a média da turma, "A MEDIA DA TURMA É =  " .

 

TAREFA 1c - Algoritmo AVALIAÇÂO para 3 turmas.

Utilizar o mesmo código e fazer o programa C.  Processar o código para 3 turmas (0, 1, 2, -1), sendo -1 o valor que deve ser digitado para FLAG.

 

========================================================================================================

AULA 2  (18-03-2019)

 TAREFA T2 - Algoritmo IDADES e ALTURAS

Considere 40 pessoas, sendo fornecido sua ALTURA e sua IDADE. Fazer um algoritmo que calcule o numero de pessoas acima de 21 anos, e MEDIA das alturas das pessoas dessas pessoas. Escreva o numero de pessoas acima de 60 e a média das alturas.
 


Tarefa feita em aula: Vale  10% para a Nota P1, para quem esteve na sala de aula.
========================================================================================================

AULA 3 (25-03-2019)  

TAREFA T3 
-  Algoritmo UPA  (Fazer em casa e levar as dúvidas para a sala de aula)

Os dados de entrada de pacientes numa UPA infectados por uma virose relatam: NOME, CORISA, RESFRIADO, GRIPE,
PNEUMONIA. Para processar no computador o número de infectados em cada situação, foram atribuídos os valores 0 (zero) ou 1 (um), dependendo dos sintomas apresentados quando do diagnóstico médico. Ou seja, um paciente com apenas CORISA e RESFRIADO tem o seguinte registro: 1, 1, 0, 0. Um outro paciente no estado GRIPE pode apresentar o seguinte registro: 0, 0, 1, 0. Um paciente registrando PNEUMONIA terá o seguinte registro: 0, 0, 0, 1. Um paciente com GRIPE e PNEUMONIA poderá ter o seu registro como, por exemplo: 0, 0, 1, 1. E assim por diante. Fazer um algoritmo que informe à direção do UPA o seguinte:

(A) Quantos pacientes tiveram apenas CORISA ou RESFRIADO.

(B) Quantos pacientes foram registrados como PENUMONIA.

(C) Quantos pacientes tiveram apenas GRIPE.

(D) Quantos pacientes tiveram CORISA e RESFRIADO:

(E) Quantos pacientes tiveram GRIPE ou PNEUMONIA.

========================================================================================================

Operadores Lógicos (Portas Lógicas)
 
=====================================================================================

AULA 4 (01-04-2019) - INTRODUZINDO A LINGUAGEM DE PROGRAMAÇÃO C

Treinamento em Linguagem C
(Victorine Viviane Mikzhari)

Linguagem C - Básico - Curso Básico de Linguagem C   ( Blog por Ricardo Lüders )    ou   

Curso Básico de Linguagem C (página da disciplina)

Livro - C Completo e Total ( Herbert Schildt )

Programar em C (Wikibooks)

Introdução à Linguagem C com Dev-C++ (com nossa ferramenta de aula)

Deitel - C Como Programar   (Você pode utilizar o livro do Deitel para programar na linguagem C.)

UTILIZANDO AMBIENTE  DEV-C++        Dev-C++ Web Site          Download  DEV-C++

USANDO O LABORATÓRIO VIRTUAL DE PROGRAMAÇÃO (VPL-MOODLE)
Para a Linguagem C, entre com um arquivo   <nome_arquivo>.c (ponto c)
    Para executar MatLab, entre com um  <nome_arquivo>.m  (ponto m)

Creating a VPL Activity on Moodle - YouTube


Usando o VPL no Moodle - YouTube

 =====================================================================================================

O que são as Diretivas de Pré-Processamento:      #include <stdio.h>     #include <stdlib.h>   

Explicação  return 0  em C - Isso serve para que o programa diga a quem (uma rotina do sistema) o chamou (chamou o main() ) que ele retornou sem erro. Na linguagem C o zero significa false e o um significa true. Assim, supondo que eu tenha um programa que chame uma rotina em C. Essa rotina executa e no final ela me retorna um número. Para o meu programa que chamou, com essa rotina, eu posso fazer uma lógica baseada nesse retorno. Se retornou zero, eu sei que foi tudo bem e, marco como sucesso. Se retornar 1, eu sei que deu erro. Então posso notificar ao sistema ou chamar alguma outra rotina. Na teoria, qualquer número retornado diferente de zero é um retorno não esperado, ou seja, um erro e poderá ser tratado, se for o caso.

======================================================================================================

TIPOS DE VARIÁVEIS EM C

Exemplos de declaração de tipos: inteiro, real, caractere (para variáveis ou constantes que assumem valores com caracteres alfanuméricos, com letras e números) e lógico (para variáveis ou constantes que assumem valores lógicos VERDADE/FALSO).
As palavras em negrito são reservadas à linguagem algorítmica.

var  a: inteiro
       valor1, valor2: real
       vet : vetor [1..10] de real
       matriz: vetor [0..4, 8..10] de inteiro
       nome_aluno: caractere
       sinalizador: logico
       FLAG : inteiro   ou    FLAG: caractere   ou    FLAG: real    ou   FLAG: logico


Aprenda sobre Variáveis em C

Em C, as declarações de tipo ficam como segue:   Declarações de Tipos em C

float valor1, valor2; // float toma 4 bytes.
double valor3, valor4; // double toma 8 bytes.
char C; C é uma variável que armazenará 1 só caractere.
char FLAG; // FLAG assume um caractere.
float FLAG; // FLAG assume um valor float real de 4 bytes.
char nome_aluno[32]; // pode armazenar nmes até 32 caracteres; tamanho de vetores de caracteres pode ser determinado por você.
char NOME_CLIENTE[61]; // cria a variável nome_cliente como um vetor de char com capacidade de armazenamento de 61 caracteres.
bool LOGICA; // declara uma variável booleana (o mesmo que lógica) de nome LOGICA, que só assume valores lógicos V (verdade) ou (F) falso;


Veja mais exemplos:

int inteiro = 0; // variável tipo inteiro.
float pontoflutuante = 3.14; // variável tipo ponto flutuante com precisão simples.
double pontoflutuante2 = 3.1415; // variável tipo ponto flutuante com precisão dupla.
char caracter = 'a'; // variável tipo caracter.
bool logico; // variável tipo lógico.

Dimensionando vetores e matrizes.

int VETOR[5];  // declara um vetor de inteiros, chamado VETOR, de 5 posições, tendo cada elemento um inteiro de 4 bytes.
float V[30]; // declara um vetor chamado V de 30 reais de ponto flutuante (números com ponto decimal).
int MATRIZ[5][3]; // declara uma matriz de inteiros, chamada MATRIZ, de 5 linhas e 3 colunas.
float M[4][4]; // // declara uma matriz de reais em ponto flutuante, chamada M, de 4 linhas e 4 colunas.


Para aprender mais veja os links:
    String em C - vetor de caracteres       Bytes, Numeros e Caracteres

Exemplo1- Atribuição de variáveis e constantes, impressão de resultados

#include<stdio.h>
#include <stdlib.h>

int main(void)
{
int N=2;
char Letra ='a';
float X = 2.5;
double Z=3.5e-10;
printf("O primeiro valor impresso eh uma constante decimal %d \n",15);
printf("O valor da primeira variavel declarada e inicializada eh %d \n",N);
printf("O valor da segunda variavel declarada e inicializada eh %c \n",Letra);
printf("O valor da primeira variavel de ponto flutuante (prec. Simples) eh %f \n",X);
printf("O valor da segunda variavel de ponto flutuante (prec. Dupla) eh %f \n",Z);
printf("O valor da segunda variavel de ponto flutuante (prec. Dupla) eh %.11f \n",Z);
printf("O valor da expressão que soma 4 ao valor de N eh %d\n", N+4);
printf("As variaveis utilizadas (declaradas e inicializadas) foram N=%d, Letra=%c, X=%f, Z=%.11f \n", N,Letra,X,Z)
system("pause"); // Caso necessário, de acordo com seu ambiente de programação
return 0;
}

Exemplo2 - Declaração, Entrada por teclado, Saida de Dados

#include <stdio.h>
#include <stdlib.h>

int main (void)
{
//declaração de variáveis do tipo inteiro
int a, b, soma;
printf("Digite um numero inteiro: ");
scanf("%d", &a); //recebe um inteiro e armazena na variável a
printf("Digite um numero inteiro: ");
scanf("%d", &b); //recebe um inteiro e armazena na variável b
soma = a + b;
//Efetua adição de a com b e armazena na variável soma
printf("O valor da soma = %d\n", soma); //Mostra mensagem com o resultado
system ("pause");   // Caso necessário, de acordo com seu ambiente de programação
return 0;
}

10 Exemplos Básicos de Programas em C (Estude estes programas em C)

 

Estrutras lógicas em C  -  A Linguagem C (página da disciplina)  Função de leitura  scanf()   página 14
                                                           Função de escrita printf()   páginas 9, 11, 12, 13
                                                           Estruturas lógicas em C      páginas 15, 16, 17, 18, 19, 20
                                                           Ver as páginas 6 e 7 para os:
                                                           operadores aritméticos ( +  -  * /  **,  % ),
                                                           operadores lógicos  ( &&,  ||  , ! ),
                                                           operadores relacionais ( <  , >  , >=  , <=  , == , != )



TAREFA T4 - Implementar em Linguagem de progração os algoritmos T1a, T1b, T1c, T2 e T3


========================================================================================================

AULA 5 (08-04-2019)

Exemplos de Algoritmos - Variáveis Indexadas

(a) Sequência de Fibonacci (operações aritméticas com índices).
(b) Encontrando o maior elemento de um conjunto.
(c) Encontrando o menor elemento de um conjunto.
(d) Ordem Crescente e Decrescente.

TAREFA T5a  - Sequência de Fibonacci

Dada a sequência - 1  1  2   3  5   8  ...   gerar o termo de ordem 29.  

Estudar os algoritmos e implemntá-los em C:

TAREFA T5b -  ORDEM CRESCENTE          Ordem Crescente                 

TAREFA T5c -  ORDEN DECRESCENTE      Ordem Decrescente

TAREFA T5d - ORDEM ALFABETICA          Ordem Alfabetica

TAREFA T5e - Algoritmo - Funções  time(), srandi(), rand() para Geração de Números Aleatórios

Implemente em C, um jogo de adivinhação, solicitando ao usuário um número até que o mesmo seja igual ao gerado randomicamente pelo sistema. A cada entrada do usuário, o sistema deve informar se o número é maior ou menor do que o “escolhido” pelo sistema. Estude o algoritmo seguinte e implemente em C

algoritmo "GERADOR DE ALEATÓRIOS - FUNÇÃO randi()"

var
  n1: Inteiro
  sort : Inteiro

inicio
// Seção de Comandos
escreval ("...........*** ..... SORTEIO .....*** ............")
escreval ("")

// SERÁ GERADO UM NÚMERO ALEATÓRIO ENTRE 0 E 20, E O RESULTADO É ATRIBUIDO à VARIAVEL sort
sort <- randi(20)

repita
    escreva ("Digite o termo inicial:  ")
    leia (n1)
    se(sort < n1) entao
        escreval ("O número sorteado é menor")
    senao
        se (sort > n1) entao
           escreval ("O número sorteado é maior")
        fimse
     fimse
ate (n1 = sort)

escreval (" ")
escreval (" ..\O/.. PARABÉNS, VOCÊ ACERTOU! ..\O/.. ")

fimalgoritmo

Para implementar em C, veja o exemplo de como gerar de numeros aleatóriosem C. Abra o seguntie link :     Gerar Numeros Aleatorios em C
Implemente o algoritmo seguinte em C, usando as funções  time(), srand(), rand() e aprende e teste a função getch().

=============================================================================================

AULA 6 (15-04-2019)   


 

TAREFA
T6a - Temperaturas
Faça um algoritmo para ler e armazenar em um vetor a temperatura média de todos os dias do ano.
Calcular e escrever:

a) Menor temperatura do ano
b) Maior temperatura do ano
c) Temperatura média anual
d) O número de dias no ano em que a temperatura foi inferior a média anual

Sugestão:  Usar a função aleatória  time(), srand(), rand(), como na TAREFA T5e, para gerar temperaturas aleatórias:              

TAREFA T6b- Matricula de Aluno

Suponha que uma escola utilize, como código de matrícula, um número inteiro
no formato AASDDDD, onde:
    • Os dois primeiros dígitos, representados pela letra A, são os dois últimos
       algarismos do ano da matrícula;
    • O terceiro dígito, representado pela letra S, vale 1 ou 2, conforme o aluno
       tenha se matriculado no 1º ou 2º semestre;
    • Os quatro últimos dígitos, representados pela letra D, correspondem à ordem
       da matrícula do aluno, no semestre e no ano em questão.

Crie um algoritmo que leia o número de matrícula de um aluno e imprima o ano
e o semestre em que ele foi matriculado.

========================================================================================================

AULA 7 (22-04-2019)        

TAREFAS T7 - Matrizes  - Implementar os itens de (a) a (d) em C.

(a) Lendo matriz.
(b) Escrevendo matriz.
(c) Operando uma linha da matriz.
(d) Operando uma coluna da matriz.
(c) Diagonal principal de matrizes quadradas.
(d) Diagonal secundária de matrizes quadradas.
(e) Gerando vetor-linha a partir de uma matriz. (feito em aula)
(f) Gerando vetor-linha a partir de uma matriz.

====================================================================================================================

 AULA 8 (29/04/2019)                   

                       TAREFA T8  -  Prova 1

 =======================================================================================================

AULA 9 (06/05/2018)      

TAREFAS T9 - Estudando o comando Switch-Case em C. Você pode utilizá-lo no programa seguinte.

Dadas duas matrizes A(4,4) e B(4,4), calcular uma matriz C(4,4), conforme a figura abaixo:   (feito em aula)

========================================================================================================

AULA 10 (13/05/2019)              

TAREFAS  T10   (a) e (b)

(a) Multiplicação de matriz por vetor.
(Tarefa de sala de aula.)

(b) Multiplicação de matrizes.

Exemplo de algoritmo para multiplicação de matrizes

programa multiplica_matrizes; 
   matriz mat1, mat2, mat3; 
   inteiro linha, coluna, i, acumula; 
   "leia mat1"; 
   "leia mat2"; 
   "verifique se mat1 é compativel com mat2"; 
   para linha de 1 até "numero de linhas de mat1" faça 
     para coluna de 1 até "numero de colunas de mat2" faça 
       acumula=0; 
       para i de 1 até "numero de colunas de mat1" faça 
         acumula=acumula+mat1[linha][i]*mat2[i][coluna]; 
       fimpara; 
       mat3[linha][coluna]=acumula; 
     fimpara; 
   fimpara; 
   imprima mat3; 
fim programa;



Mais
  Vetores e Matrizes

========================================================================================================

AULA 11  (20-05-2019)       

TAREFA T11 - Faça uma função MAX que recebe como entrada um inteiro n, uma matriz inteira Anxn e devolve três inteiros: k, Lin e Col. O inteiro k é um maior elemento de A e é igual a A[Lin,Col].
 

        Exemplo:  

 

========================================================================================================

AULA 12 (27-05-2019)         

Funções Matemáticas     

Funções em C  

A linguagem de programação C permite que os parâmetros sejam passados para as funções de duas maneiras, por valor e por referência.

O conteúdo seguinte poderá ser visto no link abaixo:

1. Funções definidas pelo programador (exemplos no que segue)
2. Passagem por Valor
3. Escopo de Variáveis
4. Passagem por Referência
5. Ponteiros ou Apontadores
6. Erros comuns com funções

 EXEMPLOS DE DECLARAÇÕES DE FUNÇÕES E SUAS CHAMADAS

 Outros Exemplos

#include <stdio.h>   /* este arquivo contém o protótipo da função printf*/

void test_num(int); /* protótipo da função test_num*/

void main(void) {

        char L='A';

        float x=2.5f;
        int A=2,  B=3;
        printf( "imprimindo %d, %c, %f e %i", 10, L, x, A+B );
        test_num(A);
        test_num(B);
}
void test_num(int X)

{
        if (X%2==0) printf("%i é par", X);
        else printf("%i é impar", X);
}

======================= Outro Exemplo ==================================
#include
 <stdio.h>   /* este arquivo contém o protótipo da função printf*/

int MDC(int,int);   /* protótipo da função MDC*/

void main(void) {

         int v1, v2, MaxDivCom;

         scanf("%i %i",&v1,&v2);

         MaxDivCom = MDC(v1,v2);

         printf("O maximo divisor comum entre %i e %i e´ %i", v1,v2,MaxDivCom);

 }

int MDC(int u, int v)  /*início da definição da função MDC*/ {

int temp;

while(v!=0) {

        temp = u%v;

        u =v;

        v = temp;

        }

        return(u);  /* Este comando return(u) equivale a fazer MCD = u */

}

====================Exemplo4 - Função e Passagem de vetor como parâmetro============

 #include <stdio.h>

#define TAM_MAX 10

void ImprimeVet ( int Tam, int Vet[TAM_MAX] )
{
int i;
for (i=0; i< Tam; i++)
{
printf("%d\n", Vet[i]);
}
}

int main()
{
int Notas[TAM_MAX];

ImprimeVet( TAM_MAX, Notas); // Passa o vetor 'Notas' como parâmetro

system("pause");
return 0;

}

========================================================================================================

AULA 13  (03-06-2019)       

         
Funções e Passagem de Vetores (por nome e por referência)   Bibiliografia

1 Exemplo de Passagem de Vetor por Nome (testado)


#include <stdio.h>

void ZeraVet(float V[10], int qtd)
{
    int i;
    for(i=0;i<qtd;i++)
        V[i] = 0.0;
}

int main()
{
    int i;
    float Vet[10];

    ZeraVet(Vet,10); // Passa o nome do vetor como parâmetro
    for(i=0;i<10;i++)
         printf("%d ", Vet[i]); // todos os elementos terão valor 0, por causa do formato %d.

    system("pause");
    return 0;
}

2. Exemplo de Passagem de Vetor por Referência (testado)

#include <stdio.h>

void ZeraVet2(float *V, int qtd)
{
    int i;
    for(i=0;i<qtd;i++)
          V[i] = 0;
}

int main()
{
     int i;
     float Vet[10];

     ZeraVet2(Vet,10); // Passa o vetor como referência. Note que não precisa o símbolo & antes do nome do vetor Vet.

     for(i=0;i<10;i++)
           printf("%f ", Vet[i]); // todos os elementos terão valor 0.000000
   
    system("pause");
    return 0; 
}

========================================================================================================

AULA 14 (10-06-2019)       

Exemplo sobre Funções em C, com passagem por valor

Programas para a Prova 2   (1)   Integração + Geração de matriz

Programas para a Prova 2   (2)   Passagem por Referência e Ponteiros

Sempre que possível é recomendável utilizar a forma de passagem por valor, para evitar "efeitos colaterais", mas há situações onde esses efeitos são desejáveis, por exemplo, quando desejamos criar uma função que retorne mais de um valor. As funções que vimos até agora (incluindo as predefinidas, seno, cosseno, potencia, exponencial, ...) só devolvem um valor. Mas outras funções, que trabalhem com, por exemplo, números complexos da forma (a + bi), precisam retornar 2 valores (a e b). Por exemplo, tente escrever uma função que retorne o quadrado de um número complexo. Fazer uma função para retornar a parte real, e a parte imaginária. C permite criar uma função que retorne os dois valores simultaneamente. Use ponteiros.

Programa para calcular o quadrado de um número complexo dado:

/* Declarando a função */
void complexo2 (float *r, float *t)
{
   float real;

   real = (*r * *r) - (*t * *t);
   *t = 2 * *r * *t;
   *r = real;
}
/* Programa principal */
#include <stdio.h>
#include <stdlib.h>

/* definicao do prototipo da função declarada */
void complexo2 (float *r, float *t);

int main () 
{
   float a, b;

   printf ("Entre com um numero complexo (2 numeros inteiros): ");
   scanf("%f %f", &a, &b);
   complexo2 ( &a, &b);
   printf("O quadrado do número complexo é %f + i %f\n", a, b);

   system("pause");
   return 0;
}
  
Para declarar uma variável do tipo ponteiro utilizamos a seguinte estrutura:
tipo *nome;

O asterisco ('*') é a indicação que a variável nome é um apontador, e o endereço apontado é interpretado como um valor do tipo tipo. Portanto, os parâmetros de entrada da função complexo2 são na verdade apontadores. O uso de variáveis de tipo apontador é bastante simples:

int x,y;     /* duas variáveis inteiras */
int *px,*py; /* dois apontadores para inteiros */
x = 1;  /* atribui à variável x o valor 1. */
y = 2;  /* atribui à variável y o valor 2. */
px= &x; /* atribui ao apontador px o endereco da variavel x. */
py= &y; /* atribui ao apontador py o endereco da variavel y. */
O significado das atribuições acima é o seguinte. O operador '&' é um operador unário (de dereferência) que retorna o endereço de seu operando. Assim, podemos manipular o endereço apontado por uma variável de tipo ponteiro.

Um outro operador importante é o operador '*' (operador unário de referência) que devolve o valor contido em uma posição de memória apontada por uma variável de tipo ponteiro.

Por exemplo:

int x,y;
int *px,*py;
x = 1; /* atribui à variável x o valor 1. */
y = 2; /* atribui à variável y o valor 2. */
px= &x; /* atribui ao ponteiro px o endereco da variavel x. */
py= &y; /* atribui ao ponteiro py o endereco da variavel y. */
printf("O endereco de x eh %d e o valor de x eh %d",px,*px);
onde o *px significa, literalmente, o valor da posição de memória apontado por px.
Vamos examinar um outro exemplo de funções utilizando apontadores:
void Troca(int *px, int *py); /* Prototipo. */

int main() {
   int x=4,y=7;

   /** Ao chamar a funcao passamos o endereco
    * das variaveis x e y como parametro.
   */
   Troca(&x,&y);
   printf("Troca: x vale %d e y vale %d",x,y);
   Troca(&x,&y);
   printf("Destroca: x vale %d e y vale %d",x,y);

   system("pause");
   return 0;
}

void Troca(int *px, int *py)
/* Troca os valores das variaveis apontadas por px e py. */
{
   int n;
   n= *py;
   *py= *px;
   *px= n;
}
Ao examinarmos a função Troca, verificamos que houve manipulação nos valores das posições cujos endereços foram passados como parâmetro. Deste modo é que conseguimos implementar funções cuja ação é estendida a mais de uma variável (ou seja, retorna mais de um valor).

========================================================================================================

AULA 15 (17-06-2019)       

Vamos ver mais um exemplo, usando agora a função Troca em um programa para ordenar 3 inteiros em ordem crescente, como abaixo:

#include <stdio.h>
#include <stdlib.h>

/* prototipo */
void Troca(int *px, int *py);

int main () 
{
   int a, b, c;

   printf ("Digite 3 numeros inteiros: ");
   scanf("%d %d %d", &a, &b, &c);
   if (a > b) Troca (&a, &b);
   if (b > c) Troca (&b, &c);
   if (a > b) Troca (&a, &b);
   printf("Em ordem crescente: %d %d %d\n", a, b, c);

   system("pause");
   return 0;
}

Por exemplo, para a seqüência 3 2 1, teríamos:


a b c
início: 3 2 1
1o if : 2 3 1
2o if : 2 1 3
3o if : 1 2 3

e portanto a saída seria 
Em ordem crescente: 1 2 3


 ======================================================================================================