Post on 16-Apr-2015
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
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
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
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
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
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
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
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
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
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 ( )
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
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
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
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
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>
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
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
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
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, ==
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
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
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
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
#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
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
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
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
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
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
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
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
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
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
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
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
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!
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
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”);
#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
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
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 ‘-’
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
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
Programa da equação do 2º grau contendo comentários: