Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 –...

44
Capítulo II – Algoritmos Capítulo II – Algoritmos e Programas e Programas 2.1 – Elementos básicos de 2.1 – Elementos básicos de algoritmos e programas algoritmos e programas 2.2 – Linguagens para algoritmos 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons 2.3 – Propriedades dos bons algoritmos algoritmos 2.4 – Estrutura de um programa em C 2.4 – Estrutura de um programa em C

Transcript of Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 –...

Page 1: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Capítulo II – Algoritmos e Capítulo II – Algoritmos e ProgramasProgramas

2.1 – Elementos básicos de algoritmos 2.1 – Elementos básicos de algoritmos e programase programas

2.2 – Linguagens para algoritmos2.2 – Linguagens para algoritmos

2.3 – Propriedades dos bons 2.3 – Propriedades dos bons algoritmosalgoritmos

2.4 – Estrutura de um programa em C2.4 – Estrutura de um programa em C

Page 2: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

2.4 – Estrutura de um 2.4 – Estrutura de um Programa em CPrograma em C

2.4.1 – Partes componentes de um 2.4.1 – Partes componentes de um programa em Cprograma em C

Como já foi comentado, um programa pode ter vários módulos

O módulo principal é obrigatório

Por ele começa a execução

Os outros módulos (opcionais) são os subprogramas

Page 3: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Em C, todos os módulos de um programa são denominados funções

O módulo principal tem o nome de função main

Cada módulo pode ter declarações locais

Pode haver ainda declarações fora do escopo de qualquer função

São as declarações globais

Declarações globais podem figurar no início ou no final do programa, ou depois de qualquer de suas funções

Nesta disciplina elas estarão sempre no início dos programas

Page 4: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Estrutura básica de um programa em C, Estrutura básica de um programa em C, para fins didáticos:para fins didáticos:

Programa

Diretivas de pré-

processamento

Declarações globais

Funções auxiliares

Funçãomain

A função main deve aparecer depois de suas funções auxiliares, pois em seu escopo elas são referenciadas

Se ela aparecesse antes, o compilador, ao encontrar tais referências, iria notificar o aparecimento de nomes não declarados

Toda função chamada dentro de outra deve aparecer no programa antes dessa outra

Page 5: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Prototipação – Prototipação – vista no capítulo de vista no capítulo de Subprogramação – permite inverter a ordem:Subprogramação – permite inverter a ordem:

Programa

Diretivas de pré-

processamento

Declarações globais

Funções auxiliares

Funçãomain

Isso pode ajudar na aplicação da metodologia “top-down”

Mostra primeiro a função main

Depois suas auxiliares

Depois as auxiliares das auxiliares

E assim por diante

Page 6: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Antes do capítulo de Subprogramação, osAntes do capítulo de Subprogramação, os programas não terão subprogramasprogramas não terão subprogramas::

Programa

Diretivas de pré-

processamento

Declarações globais

Funçãomain

Estrutura sugerida de uma função em C:

Cabeçalho {Declarações locaisComandos}

Declarações poderiam vir no meio dos comandos, mas isso será evitado

Page 7: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

2.4.2 – Cabeçalho de uma função2.4.2 – Cabeçalho de uma função

Forma geral:Forma geral:

tipo nome (lista de parâmetros)tipo nome (lista de parâmetros)

nome ( ) nome ( ) tem presença obrigatória; o restante tem presença obrigatória; o restante é opcionalé opcional

Uma função pode Uma função pode retornar um valorretornar um valor para para aquela que a invocouaquela que a invocou

tipotipo é o tipo do valor retornado pela função é o tipo do valor retornado pela função

Page 8: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

tipo nome (lista de parâmetros)tipo nome (lista de parâmetros)

Parâmetro Parâmetro é uma variável local especial de é uma variável local especial de uma função:uma função:

Destina-se a receber um Destina-se a receber um argumentoargumento de de chamada dessa funçãochamada dessa função

Page 9: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Exemplo: Exemplo: seja a atribuição seja a atribuição z = sin(x+y)z = sin(x+y),, numa numa função qualquer função qualquer ff

A função A função sinsin pertence à biblioteca da pertence à biblioteca da Linguagem CLinguagem C

Na função Na função ff, o valor de , o valor de x+y x+y é calculado; ele é o é calculado; ele é o argumentoargumento dessa chamada da função dessa chamada da função sinsin

A função A função sin sin é então invocada e seu único é então invocada e seu único parâmetroparâmetro recebe tal recebe tal argumentoargumento

A função A função sin sin calcula o seno do valor de seu calcula o seno do valor de seu parâmetroparâmetro, resultando em um valor do tipo , resultando em um valor do tipo realreal

Finalmente a função Finalmente a função sinsin retorna esse valor real retorna esse valor real à função à função ff, que o atribui à variável , que o atribui à variável zz

Page 10: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Por defaultPor default, o tipo de uma função é , o tipo de uma função é int int

Quando uma função Quando uma função não produznão produz nenhum nenhum valorvalor a ser retornado, seu tipo deve ser a ser retornado, seu tipo deve ser voidvoid

É o caso da função É o caso da função mainmain de muitos programas de muitos programas

A função A função mainmain de muitos programas também de muitos programas também não tem parâmetrosnão tem parâmetros

Na maioria dos casos, sua forma será:

void main ( )

Alguns ambientes como o Dev C++ só aceitam

int main ( )

Page 11: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

2.4.3 – Declarações globais e locais2.4.3 – Declarações globais e locais

DeclaraçõesDeclarações são usadas para: são usadas para:

Dar Dar nomenome às às variáveisvariáveis e e constantesconstantes do do programa programa

Reservar-lhes Reservar-lhes espaço na memóriaespaço na memória

Especificar os Especificar os tipostipos de valores que elas de valores que elas devem guardardevem guardar

Criar Criar outros tiposoutros tipos além daqueles além daqueles disponibilizados pela linguagemdisponibilizados pela linguagem

Page 12: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Nos programas em Nos programas em CC, toda , toda variávelvariável referenciada referenciada nos comandos deve estar previamente nos comandos deve estar previamente declaradadeclarada

Quando Quando mais de uma função mais de uma função de um programa de um programa referencia uma mesma referencia uma mesma variávelvariável, essa deve ser , essa deve ser declarada como declarada como globalglobal

Se Se apenas uma funçãoapenas uma função o fizer, ela pode ser o fizer, ela pode ser declarada como declarada como locallocal a essa função a essa função

Somente a partir do capítulo sobre Somente a partir do capítulo sobre SubprogramaçãoSubprogramação os programas terão os programas terão mais de mais de uma funçãouma função

Até lá, suas variáveis serão Até lá, suas variáveis serão globais globais ou ou locaislocais à à função função mainmain

Page 13: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

2.4.4 – Diretivas de pré-processamento2.4.4 – Diretivas de pré-processamento

Pré-processamento:Pré-processamento: fase da compilação fase da compilação anterior à anterior à traduçãotradução do programa para a do programa para a linguagem linguagem AssemblyAssembly ou de máquina ou de máquina

Tarefas do pré-processamentoTarefas do pré-processamento – entre – entre outras: outras:

Inclusão de Inclusão de arquivos auxiliaresarquivos auxiliares

Tradução de Tradução de constantes simbólicasconstantes simbólicas

Pré-processamento de Pré-processamento de macrosmacros

Page 14: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Diretivas de pré-processamento em C: Diretivas de pré-processamento em C:

Toda linha iniciada com o caractere Toda linha iniciada com o caractere ‘#’‘#’

Podem aparecer em Podem aparecer em qualquer posiçãoqualquer posição nos nos programasprogramas

Em Em CES-10CES-10, para fins didáticos, serão , para fins didáticos, serão apresentadas apresentadas no iníciono início dos programas dos programas

Programa

Diretivas de pré-

processamento

Declarações globais

Funçãomain

Page 15: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Inclusão de arquivos auxiliares: Inclusão de arquivos auxiliares:

Os arquivos podem ser de dois tiposOs arquivos podem ser de dois tipos::

Arquivos do acervo do Arquivos do acervo do programadorprogramador

Exemplo: Exemplo: #include #include "sistemas.c""sistemas.c"

Arquivos da Arquivos da bibliotecabiblioteca da linguagem da linguagem

Exemplo: Exemplo: #include <math.h>#include <math.h>

Page 16: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Arquivos do acervo do programador: Arquivos do acervo do programador:

Exemplo: Exemplo: #include #include "sistemas.c""sistemas.c"

Tipicamente Tipicamente escritos em Cescritos em C

Incorporados ao programa-fonte Incorporados ao programa-fonte durante o durante o pré-processamentopré-processamento

Traduzidos para Traduzidos para AssemblyAssembly ou linguagem de ou linguagem de máquina juntamente com o máquina juntamente com o restante do restante do programa-fonteprograma-fonte

Page 17: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Arquivos da biblioteca da linguagem : Arquivos da biblioteca da linguagem :

Exemplo: Exemplo: #include #include <math.h><math.h>

Contém apenas Contém apenas cabeçalhoscabeçalhos (protótipos) de (protótipos) de algumas funções da biblioteca, algumas funções da biblioteca, escritos em Cescritos em C

Os Os códigos-objetoscódigos-objetos dessas funções já estão dessas funções já estão prontosprontos e se encontram em algum lugar da e se encontram em algum lugar da bibliotecabiblioteca da linguagem da linguagem

Todos os Todos os cabeçalhoscabeçalhos do arquivo são do arquivo são incorporados ao programa-fonte incorporados ao programa-fonte durante o pré-durante o pré-processamentoprocessamento, mesmo aqueles que não serão , mesmo aqueles que não serão usadosusados

Page 18: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Arquivos da biblioteca da linguagem: Arquivos da biblioteca da linguagem:

Esses Esses cabeçalhoscabeçalhos entram no processo de entram no processo de tradução para tradução para AssemblyAssembly ou linguagem de ou linguagem de máquina, juntamente com o máquina, juntamente com o restante do restante do programa-fonteprograma-fonte

Durante a Durante a edição de ligaçõesedição de ligações, os códigos-objetos , os códigos-objetos das funções da biblioteca usadas no programa são das funções da biblioteca usadas no programa são ligadas ao restante do programa-objetoligadas ao restante do programa-objeto

Obs.: Obs.: a inclusão dos cabeçalhos no programa-a inclusão dos cabeçalhos no programa-fonte evita que o compilador acuse fonte evita que o compilador acuse falta de falta de declaraçãodeclaração, ao encontrar a , ao encontrar a chamadachamada de uma de uma função da bibliotecafunção da biblioteca

Page 19: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Tradução de constantes simbólicas: Tradução de constantes simbólicas:

Diretiva Diretiva #define#define: serve para incluir : serve para incluir constantes simbólicasconstantes simbólicas no programa no programa

Por exemplo, caso o programa contenha as Por exemplo, caso o programa contenha as seguintes diretivas:seguintes diretivas:

#define pi 3.14159#define limite 100#define enquanto while#define se if#define senao else#define eq ==

Durante o pré-processamento, todas as ocorrências das cadeias de caracteres:

pi, limite, enquanto, se, senao, eq

Serão substituídas respectivamente pelas cadeias:

3.14159, 100, while, if, else, ==

Page 20: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Utilidades de constantes simbólicas: Utilidades de constantes simbólicas:

Evitar distrações:Evitar distrações:

É comum trocar distraidamente É comum trocar distraidamente “==” “==” por por ‘=’‘=’

Usando Usando #define eq == #define eq ==

pode-se escrever sistematicamente pode-se escrever sistematicamente “eq”“eq” no no lugar de lugar de “==”“==”, evitando distrações, evitando distrações

Page 21: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Utilidades de constantes simbólicas: Utilidades de constantes simbólicas:

Evitar Evitar escreverescrever cadeias de caracteres cadeias de caracteres compridas, compridas, repetidamenterepetidamente::

Seja um programa que Seja um programa que referencia muitoreferencia muito o o valor da constante valor da constante ππ (pi) (pi)

Usando Usando #define pi 3.14159 #define pi 3.14159

Evita-se escrever várias vezes o extenso Evita-se escrever várias vezes o extenso valor valor 3.141593.14159

Page 22: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Utilidades de constantes simbólicas: Utilidades de constantes simbólicas:

Escrever os programas em Português:Escrever os programas em Português:

Com diretivas similares às seguintes:Com diretivas similares às seguintes:

O programador pode O programador pode escreverescrever seus seus programas em programas em PortuguêsPortuguês

#define enquanto while#define se if#define senao else

Page 23: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Exemplo com #include’s e #define’s:Exemplo com #include’s e #define’s:

Seja o arquivo Seja o arquivo preproc.c preproc.c que inclui o arquivoque inclui o arquivo defines.hdefines.h::

#include <stdio.h>#include “defines.h”void main () {

int i;printf (“LIMITE_1: %d\n”,

LIMITE);i = 100;#define LIMITE 200SE (i EQ LIMITE)

printf (“i: %d”, i);SENAO

printf (“LIMITE_2: %d”, LIMITE); }

#define LIMITE 100#define EQ ==#define SE if#define SENAO else

defines.h

preproc.c

Seja o pré-processamento do arquivo preproc.c

Page 24: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

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

#include “defines.h”#include “defines.h”

void main () {void main () {

int i;int i;

printf (“LIMITE_1: %d\n”, LIMITE);printf (“LIMITE_1: %d\n”, LIMITE);

i = 100;i = 100;

#define LIMITE 200#define LIMITE 200

SE (i EQ LIMITE)SE (i EQ LIMITE)

printf (“i: %d”, i);printf (“i: %d”, i);

SENAO SENAO

printf (“LIMITE_2: %d”, LIMITE); printf (“LIMITE_2: %d”, LIMITE);

}}

#define LIMITE 100#define EQ ==#define SE if#define SENAO else

defines.h

Protótipos das funções do stdio.h

Page 25: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Protótipos das funções do stdio.hProtótipos das funções do stdio.h

#include “defines.h”#include “defines.h”

void main () {void main () {

int i;int i;

printf (“LIMITE_1: %d\n”, LIMITE);printf (“LIMITE_1: %d\n”, LIMITE);

i = 100;i = 100;

#define LIMITE 200#define LIMITE 200

SE (i EQ LIMITE)SE (i EQ LIMITE)

printf (“i: %d”, i);printf (“i: %d”, i);

SENAO SENAO

printf (“LIMITE_2: %d”, LIMITE); printf (“LIMITE_2: %d”, LIMITE);

}}

#define LIMITE 100#define EQ ==#define SE if#define SENAO else

defines.h

Page 26: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Protótipos das funções do stdio.hProtótipos das funções do stdio.h

#include “defines.h”#include “defines.h”

void main () {void main () {

int i;int i;

printf (“LIMITE_1: %d\n”, LIMITE);printf (“LIMITE_1: %d\n”, LIMITE);

i = 100;i = 100;

#define LIMITE 200#define LIMITE 200

SE (i EQ LIMITE)SE (i EQ LIMITE)

printf (“i: %d”, i);printf (“i: %d”, i);

SENAO SENAO

printf (“LIMITE_2: %d”, LIMITE); printf (“LIMITE_2: %d”, LIMITE);

}}

#define LIMITE 100#define EQ ==#define SE if#define SENAO else

defines.h

Page 27: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Protótipos das funções do stdio.hProtótipos das funções do stdio.h

#define LIMITE 100#define LIMITE 100

#define EQ ==#define EQ ==

#define SE if#define SE if

#define SENAO else#define SENAO else

void main () {void main () {

int i;int i;

printf (“LIMITE_1: %d\n”, LIMITE);printf (“LIMITE_1: %d\n”, LIMITE);

i = 100;i = 100;

#define LIMITE 200#define LIMITE 200

SE (i EQ LIMITE)SE (i EQ LIMITE)

printf (“i: %d”, i);printf (“i: %d”, i);

SENAO SENAO

printf (“LIMITE_2: %d”, LIMITE); printf (“LIMITE_2: %d”, LIMITE);

}}

Original Substituta

LIMITE 100

EQ ==

SE if

SENAO else

Page 28: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Protótipos das funções do stdio.hProtótipos das funções do stdio.h

void main () {void main () {

int i;int i;

printf (“LIMITE_1: %d\n”, LIMITE);printf (“LIMITE_1: %d\n”, LIMITE);

i = 100;i = 100;

#define LIMITE 200#define LIMITE 200

SE (i EQ LIMITE)SE (i EQ LIMITE)

printf (“i: %d”, i);printf (“i: %d”, i);

SENAO SENAO

printf (“LIMITE_2: %d”, LIMITE); printf (“LIMITE_2: %d”, LIMITE);

}}

Original Substituta

LIMITE 100

EQ ==

SE if

SENAO else

Page 29: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Protótipos das funções do stdio.hProtótipos das funções do stdio.h

void main () {void main () {

int i;int i;

printf (“LIMITE_1: %d\n”, LIMITE);printf (“LIMITE_1: %d\n”, LIMITE);

i = 100;i = 100;

#define LIMITE 200#define LIMITE 200

SE (i EQ LIMITE)SE (i EQ LIMITE)

printf (“i: %d”, i);printf (“i: %d”, i);

SENAO SENAO

printf (“LIMITE_2: %d”, LIMITE); printf (“LIMITE_2: %d”, LIMITE);

}}

Original Substituta

LIMITE 100

EQ ==

SE if

SENAO else

Dentro das aspas não há substituição

Page 30: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Protótipos das funções do stdio.hProtótipos das funções do stdio.h

void main () {void main () {

int i;int i;

printf (“LIMITE_1: %d\n”, 100);printf (“LIMITE_1: %d\n”, 100);

i = 100;i = 100;

#define LIMITE 200#define LIMITE 200

SE (i EQ LIMITE)SE (i EQ LIMITE)

printf (“i: %d”, i);printf (“i: %d”, i);

SENAO SENAO

printf (“LIMITE_2: %d”, LIMITE); printf (“LIMITE_2: %d”, LIMITE);

}}

Original Substituta

LIMITE 100

EQ ==

SE if

SENAO else

Page 31: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Protótipos das funções do stdio.hProtótipos das funções do stdio.h

void main () {void main () {

int i;int i;

printf (“LIMITE_1: %d\n”, 100);printf (“LIMITE_1: %d\n”, 100);

i = 100;i = 100;

#define LIMITE 200#define LIMITE 200

SE (i EQ LIMITE)SE (i EQ LIMITE)

printf (“i: %d”, i);printf (“i: %d”, i);

SENAO SENAO

printf (“LIMITE_2: %d”, LIMITE); printf (“LIMITE_2: %d”, LIMITE);

}}

Original Substituta

LIMITE 100

EQ ==

SE if

SENAO else

Page 32: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Protótipos das funções do stdio.hProtótipos das funções do stdio.h

void main () {void main () {

int i;int i;

printf (“LIMITE_1: %d\n”, 100);printf (“LIMITE_1: %d\n”, 100);

i = 100;i = 100;

SE (i EQ LIMITE)SE (i EQ LIMITE)

printf (“i: %d”, i);printf (“i: %d”, i);

SENAO SENAO

printf (“LIMITE_2: %d”, LIMITE); printf (“LIMITE_2: %d”, LIMITE);

}}

Original Substituta

LIMITE 200

EQ ==

SE if

SENAO else

Page 33: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Protótipos das funções do stdio.hProtótipos das funções do stdio.h

void main () {void main () {

int i;int i;

printf (“LIMITE_1: %d\n”, 100);printf (“LIMITE_1: %d\n”, 100);

i = 100;i = 100;

SE (i EQ LIMITE)SE (i EQ LIMITE)

printf (“i: %d”, i);printf (“i: %d”, i);

SENAO SENAO

printf (“LIMITE_2: %d”, LIMITE); printf (“LIMITE_2: %d”, LIMITE);

}}

Original Substituta

LIMITE 200

EQ ==

SE if

SENAO else

Page 34: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Protótipos das funções do stdio.hProtótipos das funções do stdio.h

void main () {void main () {

int i;int i;

printf (“LIMITE_1: %d\n”, 100);printf (“LIMITE_1: %d\n”, 100);

i = 100;i = 100;

if (i == 200)if (i == 200)

printf (“i: %d”, i);printf (“i: %d”, i);

SENAO SENAO

printf (“LIMITE_2: %d”, LIMITE); printf (“LIMITE_2: %d”, LIMITE);

}}

Original Substituta

LIMITE 200

EQ ==

SE if

SENAO else

Page 35: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Protótipos das funções do stdio.hProtótipos das funções do stdio.h

void main () {void main () {

int i;int i;

printf (“LIMITE_1: %d\n”, 100);printf (“LIMITE_1: %d\n”, 100);

i = 100;i = 100;

if (i == 200)if (i == 200)

printf (“i: %d”, i);printf (“i: %d”, i);

SENAO SENAO

printf (“LIMITE_2: %d”, LIMITE); printf (“LIMITE_2: %d”, LIMITE);

}}

Original Substituta

LIMITE 200

EQ ==

SE if

SENAO else

Page 36: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Protótipos das funções do stdio.hProtótipos das funções do stdio.h

void main () {void main () {

int i;int i;

printf (“LIMITE_1: %d\n”, 100);printf (“LIMITE_1: %d\n”, 100);

i = 100;i = 100;

if (i == 200)if (i == 200)

printf (“i: %d”, i);printf (“i: %d”, i);

else else

printf (“LIMITE_2: %d”, 200); printf (“LIMITE_2: %d”, 200);

}}

Original Substituta

LIMITE 200

EQ ==

SE if

SENAO else

Final do pré-processamento!

Page 37: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Pré-processamento de macros: Pré-processamento de macros:

Macros: Macros: expressões para abreviar expressões para abreviar códigos códigos longoslongos, códigos esses usados com , códigos esses usados com muita muita frequênciafrequência num programa num programa

São São substituídassubstituídas por esses códigos durante o por esses códigos durante o pré-processamentopré-processamento

Em C, as macros são criadas também através Em C, as macros são criadas também através da diretiva da diretiva #define#define

Page 38: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Exemplo: Exemplo: sejam as macros sejam as macros

#define EHPAR(x) (((x)%2)?0:1)#define EHPAR(x) (((x)%2)?0:1)

#define ERRO(mens) printf(“ERRO:%s\n”,mens)#define ERRO(mens) printf(“ERRO:%s\n”,mens)

Com elas, pode-se escrever comandos tais Com elas, pode-se escrever comandos tais comocomo

if (EHPAR(a+b)) ....... ;if (EHPAR(a+b)) ....... ;

if (valor > max) ERRO(“Valor muito grande”);if (valor > max) ERRO(“Valor muito grande”);

O resultado do pré-processamento é:O resultado do pré-processamento é:

if ((((a+b)%2)?0:1)) ....... ;if ((((a+b)%2)?0:1)) ....... ;

if (valor > max) printf(“ERRO:%s\n”,“Valor muito if (valor > max) printf(“ERRO:%s\n”,“Valor muito grande”);grande”);  

Page 39: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

#define EHPAR(x) (((x)%2)?0:1)#define EHPAR(x) (((x)%2)?0:1)

#define ERRO(mens) printf(“ERRO:%s\n”,mens)#define ERRO(mens) printf(“ERRO:%s\n”,mens)

if (EHPAR(a+b)) ....... ;if (EHPAR(a+b)) ....... ;

if (valor > max) ERRO(“Valor muito grande”);if (valor > max) ERRO(“Valor muito grande”);

if ((((a+b)%2)?0:1)) ....... ;if ((((a+b)%2)?0:1)) ....... ;

if (valor > max) printf(“ERRO:%s\n”,“Valor muito if (valor > max) printf(“ERRO:%s\n”,“Valor muito grande”);grande”);  

Nos resultados, observa-se inclusive Nos resultados, observa-se inclusive passagem passagem de argumentode argumentos:s:

xx é substituído por é substituído por a+ba+b mens mens é substituído por é substituído por “Valor muito “Valor muito

grande”grande”

Macros

Comandos escritos

Pré-processados

Page 40: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

A propósito:A propósito:

((a+b)%2)?0:1((a+b)%2)?0:1

é denominada é denominada expressão condicionalexpressão condicional

(a+b)%2 (a+b)%2 é o resto da divisão de é o resto da divisão de (a+b)(a+b) por por 22

A expressão toda é A expressão toda é

00 (zero), se (zero), se (a+b)%2 ≠ 0 (a+b)%2 ≠ 0

11 (um), caso contrário (um), caso contrário

Expressões condicionais serão estudadas no Expressões condicionais serão estudadas no capítulo de capítulo de Comandos de Controle de FluxoComandos de Controle de Fluxo

Ou seja, tal expressão verifica se (a+b) é par

Page 41: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Exemplo: Exemplo: seja a macro seja a macro

#define cubo(x) ((x)*(x)*(x))#define cubo(x) ((x)*(x)*(x))

Pode-se usá-la em expressões aritméticas tais Pode-se usá-la em expressões aritméticas tais comocomo

cubo(a+b) + cubo(a-b)cubo(a+b) + cubo(a-b)

Se a macro fosse Se a macro fosse

#define cubo(x) (x*x*x)#define cubo(x) (x*x*x)

entãoentão cubo(a+b) cubo(a+b) se tornariase tornaria (a+b*a+b*a+b)(a+b*a+b*a+b)

Os parêntesis são necessários porque ‘*’ é realizada antes de ‘+’ e de ‘-’

Page 42: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

2.4.5 – Comentários em programas2.4.5 – Comentários em programas

Usados para Usados para documentardocumentar e e elucidarelucidar trechos trechos de programasde programas

Facilitam a Facilitam a correçãocorreção, a , a compreensãocompreensão e a e a manutençãomanutenção dos programas dos programas

O O próprio programadorpróprio programador ou ou outras pessoasoutras pessoas podem se beneficiar deles, empodem se beneficiar deles, em épocas épocas diferentesdiferentes daquela em que o programa foi daquela em que o programa foi elaboradoelaborado

Page 43: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Em Em CC, duas formas de introduzir , duas formas de introduzir comentárioscomentários em programas: em programas:

Tudo entre as sub-cadeias Tudo entre as sub-cadeias “/*”“/*” e e “*/”“*/”, sem as , sem as aspas, é considerado pelo compilador um aspas, é considerado pelo compilador um comentáriocomentário

Se, numa linha do programa, aparecer a sub-Se, numa linha do programa, aparecer a sub-cadeia cadeia “//”“//”, sem as aspas, o restante da linha à , sem as aspas, o restante da linha à direita é considerado um direita é considerado um comentáriocomentário

O compilador O compilador eliminaelimina todos os comentários do todos os comentários do programa-fonteprograma-fonte

Page 44: Capítulo II – Algoritmos e Programas 2.1 – Elementos básicos de algoritmos e programas 2.2 – Linguagens para algoritmos 2.3 – Propriedades dos bons algoritmos.

Programa da equação do 2º grau contendo comentários: