3393 Apostila TP

Embed Size (px)

Citation preview

  • 7/21/2019 3393 Apostila TP

    1/190

    PONTIFCIA UNIVERSIDADE CATLICA DO PARAN

    CENTRO DE CINCIAS EXATAS E DE TECNOLOGIA

    DEPARTAMENTO DE ENGENHARIA MECATRNICA

    TCNICAS DE PROGRAMAO

    TP e TP

    Verso: julho/2003

  • 7/21/2019 3393 Apostila TP

    2/190

    1

    PONTIFCIA UNIVERSIDADE CATLICA DO PARAN

    CENTRO DE CINCIAS EXATAS E DE TECNOLOGIA

    DEPARTAMENTO DE ENGENHARIA MECATRNICA

    APOSTILA DE TCNICAS DE PROGRAMAO

    ELABORAO: PROF. MARCELO RUDEK

    REVISO: PROF. MAURCIO C. MELLO

    PROFa. MARIA A. ROVEREDO

    COLABORAO: GELSON LUIZ CARNEIRO

    ADRIANO ZELAZOWSKI PEREIRA

    Verso: julho/2003

  • 7/21/2019 3393 Apostila TP

    3/190

    I

    1. INTRODUO PROGRAMAO: ALGORITMOS ................................................5

    1.1.EXEMPLOS ...........................................................................................................................51.2.ALGORITMOSEMPORTUGOL ..................................................................................61.3.PORTUGOL ......................................................................................................................61.4.VARIVEIS ...........................................................................................................................71.4.1.DECLARAO DE VARIVEIS.............................................................................................71.4.1.1.TIPOS DE VARIVEIS.......................................................................................................81.4.1.2.IDENTIFICADORES DE VARIVEIS ...................................................................................81.4.2CONSTANTES ....................................................................................................................101.5.ESTRUTURA DO ALGORITMO EM PORTUGOL...................................................................10

    1.5.1.COMANDO DE ATRIBUIO (

  • 7/21/2019 3393 Apostila TP

    4/190

    II

    a) Abrindo o C++ Builder.........................................................................................................30b) Adicionando Formulrio ......................................................................................................30c) Inserindo Componentes no Formulrio................................................................................30d) Codificao do Programa.....................................................................................................31

    e) Compilando um Programa....................................................................................................32f) Executando um Programa .....................................................................................................32g) Salvando o Programa ...........................................................................................................332.2.5.EXERCCIOS .....................................................................................................................332.3.ESCOPODEVARIVEIS .............................................................................................342.3.1.VARIVEIS LOCAIS ..........................................................................................................34EXEMPLO...................................................................................................................................342.3.2.VARIVEIS GLOBAIS ........................................................................................................352.4.DESVIO CONDICIONAL EM C.............................................................................................362.4.1.DESVIO CONDICIONAL SIMPLES.......................................................................................362.4.2.DESVIO CONDICIONAL COMPOSTO ..................................................................................36

    2.4.3.IFS ANINHADOS ..............................................................................................................372.4.4.EXEMPLO .........................................................................................................................37SOLUO SEM O USO DE IF.....................................................................................................372.4.5.EXERCCIO .......................................................................................................................392.5.LAOS DE REPETIO EM C..............................................................................................402.5.1.LOOP PARA/FAA (FOR) ..................................................................................................402.5.2.LOOP ENQUANTO/FAA (WHILE).....................................................................................402.5.3.LOOP FAA/ENQUANTO (DO/WHILE) ...............................................................................412.5.4.EXEMPLO .........................................................................................................................412.5.5EXERCCIOS ......................................................................................................................422.6.PROCEDIMENTOSEMC.............................................................................................432.6.1.DEFINIO.......................................................................................................................432.6.2.EXEMPLO 1 ......................................................................................................................432.6.3.PROTTIPO ......................................................................................................................462.6.4.PARMETROS...................................................................................................................472.6.5.EXEMPLO 2 ......................................................................................................................472.7.FUNOEMC ...............................................................................................................502.7.1.DEFINIO.......................................................................................................................502.7.2.DECLARAO ..................................................................................................................502.7.3PARMETROS E RETORNO .................................................................................................502.7.4.EXEMPLO 1 ......................................................................................................................51

    2.7.5.EXEMPLO 2 ......................................................................................................................532.7.6.EXERCCIOS .....................................................................................................................552.8.INCREMENTOS E DECREMENTOS ......................................................................................562.8.1.INCREMENTO/DECREMENTO A POSTERIORI .....................................................................562.8.2.INCREMENTO/DECREMENTO A PRIORI .............................................................................572.8.3.EXERCCIO .......................................................................................................................572.9.ATRIBUIO COMPOSTA ..................................................................................................582.9.1.EXERCCIO .......................................................................................................................582.10. ATRIBUIO MLTIPLA.................................................................................................582.10.1.EXEMPLO .......................................................................................................................582.11.OPERADOR INTERROGAO (?) .....................................................................................59

    2.12.NMEROS ALEATRIOS ..................................................................................................59

  • 7/21/2019 3393 Apostila TP

    5/190

    III

    2.12.1.SINTAXE DO COMANDO .................................................................................................592.12.2.EXEMPLO .......................................................................................................................592.13COMANDO SWITCH/CASE ..................................................................................................602.13.1.SINTAXE DO COMANDO..................................................................................................60

    2.13.2.EXEMPLO .......................................................................................................................602.14.TIMER..............................................................................................................................612.14.1.OCOMPONENTE TIMER NO C++BUILDER.....................................................................612.14.2.AS PROPRIEDADES DO TIMER.........................................................................................622.14.3.EXEMPLO .......................................................................................................................622.14.4.EXERCCIO .....................................................................................................................62

    3. ESTRUTUAS HOMOGNEAS DE DADOS..................................................................63

    3.1.MATRIZESUNIDIMENSIONAIS(VETORES) .........................................................63

    3.1.1.EXEMPLOS .......................................................................................................................633.1.2.INDEXAO .....................................................................................................................633.1.3.EXEMPLO .........................................................................................................................643.1.4.EXERCCIO .......................................................................................................................653.2.ORDENAO DE VETORES.................................................................................................653.2.1.ALGORITMO DE ORDENAO (BOLHA).............................................................................653.2.2.EXERCCIO .......................................................................................................................663.3.STRINGS..........................................................................................................................673.3.1.EXEMPLO 1.......................................................................................................................673.3.2.EXEMPLO 2.......................................................................................................................683.3.3.COPIANDO STRINGS .........................................................................................................68

    3.3.4.COMPARAO DE STRINGS ..............................................................................................693.3.5.TAMANHO DE STRINGS.....................................................................................................693.3.6.COMPARAO DE ELEMENTOS DA STRING ......................................................................703.3.7.CONVERSO DE TIPOS ......................................................................................................703.3.7.1. convertendo valores numricos para caracter..............................................................713.3.7.2. convertendo string para valores numricos .................................................................713.3.8EXERCCIOS ......................................................................................................................723.4.MATRIZES......................................................................................................................733.4.1.MATRIZES BIDIMENSIONAIS ............................................................................................733.4.2.MATRIZES MULTIDIMENSIONAIS ......................................................................................743.4.3.MATRIZES DE STRINGS.....................................................................................................74

    3.4.4.EXERCCIOS .....................................................................................................................76

    4. PONTEIROS EM C ...........................................................................................................78

    4.1.DEFINIO ....................................................................................................................784.2.DECLARAO DE UM PONTEIRO .......................................................................................794.3.EXERCCIOS.......................................................................................................................804.4.PONTEIROS PARA MATRIZ.................................................................................................824.5.VETORES DE PONTEIROS ..................................................................................................854.5.1.EXEMPLO 1 ......................................................................................................................85

    4.5.2.EXERCCIO .......................................................................................................................87

  • 7/21/2019 3393 Apostila TP

    6/190

    IV

    4.5.3.EXEMPLO 2 ......................................................................................................................874.5.4.EXERCCIOS .....................................................................................................................88

    5. ALOCAO DINMICA DE MEMRIA ....................................................................89

    5.1.INTRODUO .....................................................................................................................895.2.COMANDO DE ALOCAO .................................................................................................895.2.1.EXEMPLO DE ALOCAO USANDO O COMANDO MALLOC().............................................895.2.2.MELHORANDO O USO DE PONTEIROS...............................................................................925.3.EXERCCIOS.......................................................................................................................935.4.PORTABILIDADE ................................................................................................................935.4.1.EXEMPLO DO USO DE SIZEOF ............................................................................................945.5.EXERCCIOS..................................................................................................................94

    6. ARQUIVOS EM C............................................................................................................99

    6.1.PONTEIRO DE ARQUIVO.....................................................................................................996.2.ABRINDO ARQUIVOS ..........................................................................................................996.2.1.ARQUIVOS TIPO TEXTO .................................................................................................1006.2.2.ARQUIVOS BINRIOS .....................................................................................................1016.3.ABRINDO UM ARQUIVO PARA ESCRITA ...........................................................................1016.3.1.OBSERVAES ...............................................................................................................1026.4.ABRINDO UM ARQUIVO PARA LEITURA...........................................................................1036.5.FECHANDO UM ARQUIVO.................................................................................................103

    6.6.COMANDOS DE ESCRITA E LEITURA ................................................................................1046.6.1.FPUTC()..........................................................................................................................1046.6.2.FGETC()..........................................................................................................................1076.6.3.EXERCCIO COM FPUTC()E FGETC() ...............................................................................1096.7.GRAVAO DE STRINGS COM FPUTS() ............................................................................1106.8.LEITURA DE STRINGS COM FGETS() ................................................................................1116.9.EXERCCIOS COM FPUTS()E FGETS()..............................................................................1126.10.LEITURA COM FREAD() .................................................................................................1126.11.GRAVAO COM FWRITE() ...........................................................................................1136.12.GRAVAO COM FPRINTF() ..........................................................................................1136.13.LEITURA COM FSCANF()................................................................................................114

    6.14.EXERCCIOS...................................................................................................................115

    7. REGISTROS.....................................................................................................................116

    7.1.DEFINIO.......................................................................................................................1167.2.INICIALIZAO................................................................................................................1167.2.1.EXEMPLO 1 ....................................................................................................................1177.2.2.EXEMPLO 2 ....................................................................................................................1177.3.ACESSO AOS ELEMENTOS DA ESTRUTURA ......................................................................1177.4.EXERCCIO.......................................................................................................................118

    7.5.MATRIZES DE ESTRUTURAS ............................................................................................118

  • 7/21/2019 3393 Apostila TP

    7/190

    V

    7.5.1.EXEMPLO........................................................................................................................1187.5.2.EXERCCIO .....................................................................................................................1197.6.USO DE TYPEDEF..........................................................................................................1217.6.1.EXEMPLO .......................................................................................................................121

    7.6.2.EXEMPLO 2 ....................................................................................................................1217.7.GRAVAO E LEITURA DE REGISTROS ..........................................................................1227.7.1EXEMPLO ........................................................................................................................1227.7.2.EXERCCIO......................................................................................................................1227.8.PONTEIROS PARA REGISTROS .........................................................................................1237.8.1.EXEMPLO........................................................................................................................123

    8. GRFICOS EM C............................................................................................................126

    8.1.INTRODUO..............................................................................................................126

    8.2.DESENHANDO LINHAS .....................................................................................................1268.3.USANDO O PAINTBOX......................................................................................................1288.4.COMPONENTE PANEL......................................................................................................1298.5.DESENHANDO RETNGULOS ...........................................................................................1308.6.DESENHANDO ELIPSES ....................................................................................................1318.7.DESENHANDO PONTOS (PIXELS).....................................................................................1328.8.EXEMPLO.........................................................................................................................1328.9EXERCCIOS......................................................................................................................136

    9. LISTAS LINEARES ........................................................................................................137

    9.1.FILA .................................................................................................................................1379.1.1.DEFINIO.....................................................................................................................1379.1.2.OBJETIVO.......................................................................................................................1379.1.3.EXEMPLO .......................................................................................................................1379.2.FILA CIRCULAR...............................................................................................................1409.3.PILHA...............................................................................................................................1429.3.1.DEFINIO.....................................................................................................................1429.3.2.EXEMPLO .......................................................................................................................1429.4.EXERCCIOS.....................................................................................................................1439.5.LISTAS ENCADEADAS ......................................................................................................144

    9.6.EXEMPLO.........................................................................................................................1459.7.EXERCCIO.......................................................................................................................1469.8.EXEMPLO.........................................................................................................................1469.9.OPERAES COM LISTA ENCADEADA ............................................................................1479.10.EXEMPLO.......................................................................................................................1489.11.LISTAS DUPLAMENTE ENCADEADAS ............................................................................1509.12.EXEMPLO.......................................................................................................................1509.13.EXEMPLO.......................................................................................................................151

    10. RECURSIVIDADE ........................................................................................................154

  • 7/21/2019 3393 Apostila TP

    8/190

    VI

    10.1.INTRODUO............................................................................................................15410.2.EXEMPLO ...................................................................................................................15410.3.EXERCCIOS...................................................................................................................155

    11.EXERCCIOS COM VETORES...................................................................................156

    12 -EXERCCIOS COM MATRIZES ...............................................................................157

    13. EVENTOS DE FORMULRIO E VARIVIES EXTERNAS .................................159

    13.1.EXERCCIOPROPOSTO .........................................................................................15913.2.LISTAGEMDOPROGRAMA ..................................................................................16013.2.1.UMEDIA1.CPP ..............................................................................................................16013.2.2.UMEDIA.CPP ................................................................................................................161

    14. ROTINAS DE ORDENAO ......................................................................................163

    15.COMPONENTES DO C++ BUILDER E SUAS PRINCIPAIS PROPRIEDADES .166

    15.1.BITBTN ........................................................................................................................16615.1.1.PRINCIPAIS PROPRIEDADES ..........................................................................................16615.1.2.EXEMPLO .....................................................................................................................16715.2CHECKBOX.................................................................................................................16715.2.1.PRINCIPAIS PROPRIEDADES ..........................................................................................16715.2.2.EXEMPLO .....................................................................................................................16815.3.COMBOBOX ...............................................................................................................16815.3.1.PRINCIPAIS PROPRIEDADES ..........................................................................................16815.3.2.EXEMPLO .....................................................................................................................16915.4.LISTBOX......................................................................................................................17015.4.1.PRINCIPAIS PROPRIEDADES ..........................................................................................17015.4.2.EXEMPLO .....................................................................................................................17015.5.PAGECONTROL........................................................................................................17115.5.1.PRINCIPAIS COMANDOS................................................................................................17215.5.2.EXEMPLO .....................................................................................................................172

    15.6.RADIOBUTTON .........................................................................................................17315.6.1.PRINCIPAIS PROPRIEDADES ..........................................................................................17315.6.2.EXEMPLO .....................................................................................................................17315.7.RADIOGROUP............................................................................................................17415.7.1.PRINCIPAIS PROPRIEDADES ..........................................................................................17415.7.2.EXEMPLO .....................................................................................................................17415.8.SCROLLBAR ..............................................................................................................17515.8.1.PRINCIPAIS PROPRIEDADES ..........................................................................................17615.8.2.EXEMPLO .....................................................................................................................17615.9.SPEEDBUTTON..........................................................................................................17715.9.1.PRINCIPAIS PROPRIEDADES ..........................................................................................177

    15.9.2.EXEMPLO .....................................................................................................................177

  • 7/21/2019 3393 Apostila TP

    9/190

    VII

    15.10.STRINGGRID............................................................................................................17815.10.1.PRINCIPAIS PROPRIEDADES ........................................................................................17815.10.2.EXEMPLO ...................................................................................................................17915.11.TABCONTROL.........................................................................................................179

    15.11.1.PRINCIPAIS PROPRIEDADES ........................................................................................17915.11.2.EXEMPLO ...................................................................................................................180

  • 7/21/2019 3393 Apostila TP

    10/190

    1

    TP

  • 7/21/2019 3393 Apostila TP

    11/190

    TP I - Captulo 1

    2

    i. O PROGRAMA DE APRENDIZAGEM (P.A.)

    Este programa de aprendizagem explora o estudo de algoritmos e programao em

    linguagem C. Para aprovao neste semestre o aluno dever estar apto a raciocinar e

    desenvolver a sua capacidade de abstrao, para a criao de algoritmos e programas

    elementares.

    As tcnicas de programao sero vistas atravs da utilizao de uma pseudolinguagem

    em portugus, denominada "Portugol". Assim, o aluno poder escrever algoritmos e

    aplicar as tcnicas de desenvolvimento para serem usadas com qualquer linguagem de

    programao. Para este P.A., ser utilizada a linguagem C padro, em ambienteWindows.

    Na seo seguinte ser apresentado o contedo programtico de Tcnicas de

    Programao I (TP I).

    1. Identificao

    1.1. Campus: Curitiba1.2. Centro: CCET1.3. Curso: Engenharia Mecatrnica.1.4. Habilitao: Engenharia de Controle e Automao1.5 Programa de aprendizagem (PA): Tcnicas de Programao I1.6 Ano Letivo: 2001 Perodo:1 e 2 (D & N) Semestre: 1 e 2 (D & N)1.7 Carga Horria Total: 54 N de crditos: 21.8 Carga Horria Semanal: 3 aulas Aulas Tericas: 0 Aulas Prticas: 31.9 Disciplina ou grupo de disciplinas que originou o PA: Aspectos Formais daComputao e Algoritmos1.10 Professor Responsvel: Marcelo Rudek

    2. Aptides e competncias / habilidades a serem desenvolvidas pelos alunos

    - Conhecer estruturas de dados, e suas representaes atravs de algoritmos, paraaplicar em ferramentas de programao.

    - Conhecer tcnicas atuais de programao para aplicao em desenvolvimento desistemas usados em controle e automao de processos;

    - Conhecer a linguagem de programao C para o desenvolvimento de programaselementares.

    -

    Desenvolver habilidades de trabalho em equipe.

  • 7/21/2019 3393 Apostila TP

    12/190

    TP I - Captulo 1

    3

    3. Ementa

    Introduo sobre algoritmos. Metodologia de desenvolvimento de programas.Modularidade e abstrao. Introduo a linguagem de programao (C). Tipos de

    dados bsicos e estruturados.

    4. Temas de estudo

    - Conceitos de algoritmos e estruturas de dados: Conceituao sobre a construode programas. Introduo sobre fundamentos da computao e descrio dofuncionamento dos computadores.

    - Portugol: Introduo ao portugol para o desenvolvimento de algoritmos, declaraode variveis, desvio condicional, laos de repetio.

    - Programas em C:Apresentao dos comandos bsicos da linguagem C, variveis,desvio condicional, laos de repetio, estruturas homogneas de dados vetores e

    matrizes.

    5. Metodologia

    O objetivo a aprendizagem atravs da prtica. As aulas so em laboratrio,onde pode ser apresentada a teoria, e imediatamente o tema pode sercomprovado pelos alunos. Isto torna a aula mais dinmica e participativa. Estametodologia permite atingir as aptides tcnicas e de trabalho em grupo,

    propostas neste programa de aprendizagem.

    a. Procedimentos do Professor

    As aulas sero prticas em laboratrio. Todas as aulas estaro previamentedisponveis na pgina do curso na internet, de forma que o aluno possa consultar otema da aula, dias antes da apresentao em sala, ou rever a aula posteriormente.

    b. Atividades dos alunos

    - Resoluo de exerccios,trabalhos individuais e em equipes.- Pesquisa bibliogrfica com utilizao da INTERNET.- Apresentao de trabalhos.

    c. Recursos e Materiais

    Sero utilizados livros da rea, compilador da linguagem C, internet emicrocomputadores da Universidade.

    6. Procedimetnos de Avaliao

    Avaliaes somativas incluindo trabalhos, participao dos alunos nosquestionamentos e exerccios de aula, provas escritas e no computador, e trabalho final

    do semestre.

  • 7/21/2019 3393 Apostila TP

    13/190

    TP I - Captulo 1

    4

    7. Bibliografia Recomendada

    1. Algoritmos e Estruturas de Dados; Guimares e Lages, LTC Livros Tcnicos e

    Cientficos.2. Estruturas de Dados Usando C; A. Tanenbaum; Makron Books

    3. Dominando Algoritmos com C; Kyle Loundon; Ed. Cincia Moderna.

    4. C Completo e Total; Hebert Schildt; Makron Books;

    5. C A Linguagem de Programao Padro Ansi; Brian W. Kerninghan, Dennis M.

    Ritchie; Editora Campus;

    6. C++ Builder 5 Guia Prtico; Csar A Mateus. Ed. rica (www.erica.com.br);

    7.

    C++ Buider 5 Developers Guide; J. Hollinworth, D. Butterfield, et al. Ed. SAMS;8. Internet

  • 7/21/2019 3393 Apostila TP

    14/190

    TP I - Captulo 1

    5

    1. INTRODUO PROGRAMAO: ALGORITMOS

    Vrias definies de algoritmos esto presentes na literatura (ver bilbliografia

    indicada). De forma geral um algoritmo pode ser definido como:

    Um algoritmo representa de forma estruturada, um padro de comportamento de

    eventos ou sequncia de aes, que levam a um resultado esperado.

    Resumindo:

    algoritmo = como definir o problema, esquematizar, exerccio do raciocnio;tcnicas de programao = como operacionalizar, recursos, exerccio da implementao.

    1.1. Exemplos

    a) Seqncia de aes para chegar ao trabalho/universidade:

    Acordar levantar tomar caf pegar o nibus

    Ou chegar ao destino

    pegar o carro

    Note que, para cada ao acontecer, necessrio que a ao imediatamente anterior

    tenha sido executada.

    Note tambm que, cada ao pode conter outros eventos associados (outros algoritmos).

    b) Manuais de montagem e utilizao de equipamentos;

    c) Qual o padro de comportamento utilizado para gerar a sequncia abaixo?

    1, 5, 9, 13, 17, 21, 25 ...

    resposta: _________

  • 7/21/2019 3393 Apostila TP

    15/190

    TP I - Captulo 1

    6

    1.2. ALGORITMOS EM PORTUGOL

    Como no item 1 ".... um algoritmo de forma geral, uma descrio passo a passo de

    como um problema pode ser solucionado. A descrio deve ser finita, e os passos devem

    ser bem definidos sem ambiguidades" [Terada] . A razo da existncia do algoritmo

    vem da dissonncia entre um estado desejado e aquele observado na realidade.

    Algoritmo no a soluo de um problema, mas o meio de obt-la. A resoluo de um

    problema envolve vrios parmetros que devem ser organizados atravs de alguma

    tcnica formal.

    As tcnicas de desenvolvimento estruturado de algoritmos, tem o objetivo de:

    Facilitar o desenvolvimento de algoritmos;

    Facilitar o seu entendimento pelos operadores;

    Antecipar a correo;

    Facilitar manuteno e modificaes;

    Permitir que o desenvolvimento seja feita por uma equipe de pessoas.

    Uma tcnica formal afasta a possibilidade de uma ambiguidade. Ou seja, a partir de

    dadas condies iniciais a execuo do algoritmo ser realizada por um mesmo

    "caminho" (sequncia de aes), que deve resultar num mesmo estado final. Uma destas

    tcnicas o portugol.

    1.3. PORTUGOL

    Portugol uma pseudolinguagem que permite ao programador pensar no problema em sie no no equipamento que ir executar o algoritmo. Devem ser considerados a sintaxe

    (em relao forma) e a semntica (em relao ao contedo ou seu significado). Em

    portugol a sintaxe definida pela linguagem e a semntica depende do significado que

    quer se dar ao algoritmo.

    No portugol e nas linguagens de programao, basicamente tm-se comandos e

    variveis que operacionalizam a execuo de um algoritmo. Estes comandos so

  • 7/21/2019 3393 Apostila TP

    16/190

    TP I - Captulo 1

    7

    executados sequencialmente, de forma que um comando s ser executado aps a

    finalizao do comando anterior.

    A estrutura de um algoritmo em portugol pode ser dada como:

    Exemplo:

    incio

    fim

    1.4. Variveis

    1.4.1. Declarao de Variveis

    Uma varivel um local (rea na memria do computador) que armazena um tipoespecfico de contedo. Uma varivel contm um valor que se modifica durante a

    execuo do programa. A varivel possui um identificador (nome), que pode ser

    representado da seguinte forma:

  • 7/21/2019 3393 Apostila TP

    17/190

    TP I - Captulo 1

    8

    1.4.1.1. Tipos de Variveis

    Variveis so componentes das linguagens de programao, que identificam os valores que

    esto sendo manipulados pelos programas. Uma varivel, como o prprio nome sugere,

    contm valores que variam de acordo com a execuo do programa. Uma varivel deve

    possuir um tipo especfico. As variveis em portugol, so divididas em 4 tipos principais,

    (embora na linguagem C existam modificaes para estes tipos principais).

    No portugol, os tipos bsicos de variveis so:

    Inteiro:Qualquer nmero inteiro (negativo, nulo ou positivo).

    Exemplo: -100, 0, 1, 2, 1250.

    Real:Qualquer nmero real, nulo ou positivo.

    Exemplo: -10, -1.5, 11.2, 0,1, 2, 50.

    Caracter:Caracteres alfanumricos.

    Exemplo: casa, Win31, 123, alfa#2, etc...

    Lgico:valor lgico verdadeiro ou falso

    Exemplo: x > y ?

    Exemplos: inteiro: valor; // a varivel valor do tipo inteiro

    real: media; // a varivel media do tipo real

    caracter: nome_aluno; // a varivel nome_aluno do tipo caracter

    lgico: maior; // a varivel maior do tipo booleano

    1.4.1.2. Identificadores de Variveis

    O identificador de uma varivel, se refere ao nome de como ela vai ser conhecida no

    programa. importante no esquecer que:

    a) No possvel definir variveis de diferentes tipos com o mesmo identificador

    (nome); O exemplo: realA; inteiroA; causaria erro na programao, mas pode ser

  • 7/21/2019 3393 Apostila TP

    18/190

    TP I - Captulo 1

    9

    usado realA1; inteiroA2; ou normalmente um nome mais significativo, como real

    media, inteirovalor, caracternome, etc.

    b)

    Tomar alguns cuidados em relao sintaxe da linguagem, por exemplo, no

    possvel ter identificador como: caracter?nome, realvalor*, inteiro1x, .

    c) .Letras maisculas e minsculas so tratadas de forma diferente, ento Media

    diferente de media, como tambm deMEDIA.

    Cada varivel definida no programa usa um local da memria, que acessada atravs do

    nome dado a varivel. O espao de memria ocupado pelo contedo da varivel,depende do tamanho destes tipos de dados, que variam de acordo com o tipo do

    processador a com a implementao do compilador. Como referncia inicial para este

    estudo sobre variveis, pode-se considerar pelo ANSI C, o seguinte:

    Tipo Inteiro com 2 bytes;

    Tipo real com 4 bytes;

    Tipo caracter com 1 byte;

    Exemplo:

    Pode-se supor a memria como uma matriz, como a figura abaixo, onde cada clula possui

    tamanho de 1 byte (8 bits):

    Para armazenar o valor inteiro A= 1, necessita-se de 2 bytes (1 inteiro = 2 bytes na memria*);

    Para armazenar o valor real B= 1, necessita-se de 4 bytes (1 real = 4 bytes na memria*);

    * no C ANSI; no C++ Builder os tamanhos das variveis so diferentes.

    A B

    rea ocupada por outrosprogramas.

  • 7/21/2019 3393 Apostila TP

    19/190

    TP I - Captulo 1

    10

    1.4.2 Constantes

    Uma constante um valor fixo, que no se modifica ao longo do tempo, durante a

    execuo do programa. Em algoritmos representaremos constantes pelo tipo const,

    constante ou #define (eventualmente, na elaborao dos algoritmos, alguns elementos da

    linguagem C podem ser escritos no algoritmo).

    Exemplo: const M 10;

    1.5. Estrutura do Algoritmo em Portugol

    1.5.1. Comando de Atribuio (

  • 7/21/2019 3393 Apostila TP

    20/190

    TP I - Captulo 1

    11

    1.5.2. Operadores Aritmticos

    Os smbolos das operaes bsicas so:

    A multiplicao dada atravs do operador *(asterisco);

    Exemplo: z

  • 7/21/2019 3393 Apostila TP

    21/190

    TP I - Captulo 1

    12

    Obs:

    - O incoveniente deste algoritmo que sempre fornecer o mesmo resultado, o que no

    interessante. De maneira mais correta, os valores de x e y podem ser fornecidos pelo

    usurio, permitindo ao algoritmo que efetue a soma de dois nmeros quaisquer.

    - Neste exemplo podemos observar que o resultado da soma de x + y ser armazenado em

    z. Como o usurio ficar sabendo da resposta ? necessrio usar comandos de escrita,

    para apresentar os resultados.

    1.5.3. Entrada e Sada de Dados

    Na construo de algoritmos, conveniente que o usurio possa informar dadosexternos, para serem operados pelo programa. Assim, um programa pode receber um

    dado informado por um operador atravs de um comando de leitura. Da mesma forma,

    pode ser necessrio conhecer o resultado de determinada operao executada pelo

    computador, ento ser necessria uma forma de exibir os dados.

    Cada linguagem tem uma forma especfica para entrada e sada de dados. Em algoritmos

    usaremos os comandos genricos leia() e escreva(), para realizar a interface com ousurio.

    Exemplo:

    incio

    real A, B, C;

    leia(A);leia(B);

    c

  • 7/21/2019 3393 Apostila TP

    22/190

    TP I - Captulo 1

    13

    1.5.4. Regras para escrever algoritmos em portugol

    Incluir comentrios pelo menos nas linhas mais importantes do programa;

    Usar nomes significativos para as variveis e constantes, que possam identificar o

    contedo;

    Grifar as palavras chaves do portugol;

    Alinhar os comandos facilita a legibilidade do algoritmo e reduz a possibilidade

    de erros.

    1.5.5. Exerccios

    1 Desenvolva um algoritmo em portugol para calcular xy. Os valores de x e y sero

    fornecidos pelo usurio do programa;

    2 Desenvolva um programa que calcule o volume de uma esfera de raio R, fornecido pelo

    usurio. [ V = 4/3R3]

    3 Desenvolva um programa que transforme um valor de temperatura fornecido pelo usurio,

    de Farenheit ( F ) para Graus Celcius ( C ). [C = 5/9(F 32)]

    4 Desenvolva um algoritmo para calcular a mdia entre 4 valores fornecidos pelo usurio.

    5 Desenvolva um algoritmo para encontrar as razes de uma equao do tipo Ax2+ Bx + C.

    1.6. Comandos de Controle

    Os comandos de controle permitem alterar a direo tomada por um programa (desvio), oufazer com que partes especficas de um algoritmo seja executada mais de uma vez (loop).

    1.6.1. Desvio Condicional

    Muitas vezes ser necessrio desviar a execuo do programa segundo uma condio.(Exemplo: ir a universidade de carro ou de nibus ?). Para se testar condies necessrioutilizar operadores lgicos e relacionais.

    1.6.1.1. Operadores Lgicos

  • 7/21/2019 3393 Apostila TP

    23/190

    TP I - Captulo 1

    14

    Os operadores "e", "ou" e "no" permitem realizar a combinao lgica de variveis do

    tipo booleana (lgico).

    Para isto utilizam-se as tabelas verdade:

    Var1 Var2 E

    V V V

    V F F

    F V F

    F F F

    Var1 Var2 OU

    V V V

    V F V

    F V V

    F F F

    Var1 No

    V F

    F V

    1.6.1.2. Operadores Relacionais

    Permitem realizar a comparao de contedos das variveis:

    A igualdade dada por =; Maior ou igual, pelo smbolo >=;

    A desigualdade dada por ; Menor ou igual, pelo smbolo ; No !;

    Menor que, pelo smbolo

  • 7/21/2019 3393 Apostila TP

    24/190

    TP I - Captulo 1

    15

    Desvio Condicional Simples

    incio

    inteiro A, B;

    A

  • 7/21/2019 3393 Apostila TP

    25/190

    TP I - Captulo 1

    16

    Desvio Condicional Composto

    ...

    se A > B ento

    A

  • 7/21/2019 3393 Apostila TP

    26/190

    TP I - Captulo 1

    17

    1.6.2. Laos de Repetio (loop)

    Uma sequncia de aes repetida por um nmero especfico de vezes, at que uma

    condio seja satisfeita. Enquanto a condio for verdadeira, as instrues sero

    executadas. O lao de repetio tambm pode ser chamado de loop.

    Exemplo 1:

    Durante uma semana, um ms, etc, vc pode realizar a mesma seqncia de aes, como

    no exemplo:

    1 Dia

    Acordar levantar tomar caf pegar o nibus

    Ou chegar ao destino

    pegar o carro

    2 Dia

    Acordar levantar tomar caf pegar o nibus

    Ou chegar ao destino

    pegar o carro

    .

    .

    .

    N simo Dia

    Acordar

    levantar

    tomar caf

    pegar o nibusOu chegar ao destino

    pegar o carro

    Como as aes se repetem durante um perodo ou at que um evento ocorra (chegar ao

    fim de semana) , pode-se melhorar escrita da sequncia do exemplo acima, como:

  • 7/21/2019 3393 Apostila TP

    27/190

    TP I - Captulo 1

    18

    Exemplo 2:

    Enquanto ( no chegar ao fim de semana) faa

    Acordar levantar tomar caf pegar o nibus

    Ou chegar ao destino

    pegar o carro

    Exemplo 3:

    Enquanto ( dia < N) faa

    Acordar levantar tomar caf pegar o nibus

    Ou chegar ao destino

    pegar o carro

    Ento, pode-se observar que as construes dos exemplos 2 e 3, representam as N

    repeties do exemplo 1. Em termos prticos da programao, a forma dos exemplos 2 e

    3, de escrever aes que se repetem, so corretas. A forma de escrever as aes do

    exemplo 1 que se repetem incorreta, apesar de levar o mesmo resultado, pois imagine

    reescrever as mesmas aes para 365 dias, ou mais...

    1.6.2.1. Comando: enquanto/faa

    Em portugol, escreve-se o comando enquanto / faa, da forma apresentada abaixo.

    Note que se forma um bloco de comandos, delimitado ente o incio e o fim do loop.

    Veja o exemplo:

    enquanto(condio) faa

    fim enquanto

    ...lista de comandos;...

    A condio se refere a umcritrio de parada do loop, ouseja, at quando o loop vai serexecutado.

    Um ou mais comandos quesero executados enquanto acondio for verdadeira.

  • 7/21/2019 3393 Apostila TP

    28/190

    TP I - Captulo 1

    19

    Suponha os algoritmos abaixo que calculam o valor de x10, sendo x fornecido pelo

    usurio. Em termos de programao, pode-se ver a diferena na escrita dos programas a

    seguir, com e sem o uso de um lao de repetio (loop):

    Exemplo sem loop Exemplo com loop

    inicio

    inteiro x,y;

    leia (x);

    y

  • 7/21/2019 3393 Apostila TP

    29/190

    TP I - Captulo 1

    20

    b) Corrigindo o problema do loop infinito:

    inicio

    inteiro I;

    I

  • 7/21/2019 3393 Apostila TP

    30/190

    TP I - Captulo 1

    21

    b) Loop para/faa com passo diferente de 1 (incremento):

    inicio

    inteiro I;

    para I de1 at5 passo2 faa

    escreva(I);

    fim para

    fim

    c)

    Loop para/faa com passo decrescente:

    inicio

    inteiro I;

    para I de5 at1 passo-2 faa

    escreva(I);

    fim para

    fim

    Exerccios:

    1 Escreva um algoritmo para gerar uma PA de razo qualquer, com uma srie de 10 termos.

    2 Modifique o exerccio 5.1 para uma PA de N termos.

    3 Escreva um algoritmo para gerar a sequncia de Fibonacci da forma abaixo, at o

    vigsimo termo: 1,1,2,3,5,8,13, ...4 Sejam dados P(X1,Y1) e Q(X2,Y2) dois pontos quaisquer no plano. Escreva um algoritmo

    que leia os pares de coordenada x e y e calcule a distncia entre estes dois pontos.

    5 Escreva um algoritmo que gere uma tabela com a converso de graus para Fahrenheit para

    Celsius e vice versa, com valores variando de 1 em 1 grau, de 0 a 100 graus Celsius.

    Teste de Mesainicio1 iterao I = 12 iterao I = 33 iterao I = 55 < 5 ? sai do loop

    Obs: No loop do tipo para/faa o valor davarivel de controle do loop incrementadaautomaticamente de 2 em 2 a cada loop.

    Teste de Mesainicio1 iterao I = 52 iterao I = 33 iterao I = 11 < 1 ? sai do loop

    Obs: No loop do tipo para/faa o valor davarivel de controle do loop

    decrementada automaticamente de 2 em 2 acada loop.

  • 7/21/2019 3393 Apostila TP

    31/190

    Captulo 2

    22

    2. PROGRAMAO EM LINGUAGEM C

    2.1. INTRODUO A PROGRAMAO EM LINGUAGEM C

    2.1.1. Declarao de Variveis

    As diferenas entre os tipos de variveis do portugol para o C so:

    inteiro = int

    real = float, double

    caracter = char

    lgico = bool (normalmente no necessrio tipos booleanos para testes lgicos)

    Para alterar a preciso dos valores podem ser utilizados modificadores:

    C ANSI Modificadores Exemplos:

    char

    int

    float

    double

    signed

    unsigned

    long

    short

    intx ; (x um inteiro com sinal - signed)

    unsigned inty; (x um inteiro sem sinal - unsigned)

    longz; (z um inteiro com o dobro do tamanho de um int)

    short intv; (v tem o mesmo tamanho de um int)

    Exemplos:

    a) signed int (ou simplesmente int):

    Tipo de varivel que se refere a um nmero inteiro com sinal. Ou seja, se um

    varivel intocupa dois bytes na memria, ento, o maior valor decimal que pode ser

    armazenado neste tipo de varivel deve estar entre 32.767 a 32.767.

    O primeiro bit (mais significativo) representa o sinal (0 positivo e 1 negativo). Ento o

    maior valor decimal que pode ser armazenado em 15 bits 32.767.

    1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

    1 bit de sinal 15 bits de informao

  • 7/21/2019 3393 Apostila TP

    32/190

    Captulo 2

    23

    b) unsigned int;

    Tipo de varivel que se refere a um nmero inteiro sem sinal. Ou seja, se um varivel

    int ocupa dois bytes na memria, ento, o maior valor decimal que pode ser

    armazenado neste tipo de varivel deve estar entre 0 a 65.535.

    O primeiro bit (mais significativo) no representa mais o sinal. Ento o maior valor

    decimal que pode ser armazenado em 16 bits 65.535.

    O tamanho em bytes de cada tipo de varivel no C, apresentado na tabela abaixo.

    Tipo Tamanho em Bits Faixa de valores

    char 8 -127 a 127

    unsigned char 8 0 a 255

    signed char 8 -127 a 127int 16 -32767 a 32767

    unsigned int 16 0 a 65.535

    signed int 16 mesmo que int

    short int 16 mesmo que int

    unsigned short int 16 mesmo que unsigned int

    signed short int 16 mesmo que short int

    long int 32 -2.147.483.647 a 2.147.483.647signed long int 32 Mesmo que long int

    unsigned long int 32 0 a 4.294.967.295

    float 32 seis dgitos de preciso

    double 64 dez dgitos de preciso

    long double 80 dez dgitos de preciso

    Fonte: C Completo e Total; Herbert Schildt.

    1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

    16 bits de informao

  • 7/21/2019 3393 Apostila TP

    33/190

    Captulo 2

    24

    2.1.2. Comando de atribuio:

    O comando de atribuio em linguagem dado pelo smbolo =(igual).

    Exemplo:

    floatA, B, C;

    A = 10;

    B = 20;

    C = A + B;

    2.1.3. Blocos de Comandos:

    Os blocos de comando, definidos no portugol pelas palavras incio/fim, na linguagem C

    sero representados pelas { }(chaves).

    Exemplo:

    Portugol Linguagem C

    incio

    real A, B, C;

    A

  • 7/21/2019 3393 Apostila TP

    34/190

    Captulo 2

    25

    2.2. BORLAND C++ BUILDER

    2.2.1. O ambiente de desenvolvimento

    O C++ Builder tem um ambiente de desenvolvimento integrado, com as ferramentas

    necessrias para a criao dos mais variados programas. Para o desenvolvimento de

    aplicaes sero usados basicamente, formulrios, alguns componentes e suas

    propriedades, "units", e bibliotecas.

    Um programa escrito em ANSI C representado por um arquivo que contm o cdigo

    fonte e possui extenso .C (nomearquivo.c). No C++ Builder o cdigo fonte escrito

    dentro de uma unite o arquivo gravado possui a extenso ".cpp". O projeto tambm

    tem extenso .cpp, e pode conter uma ou mais units, e um ou mais formulrios

    (forms). Ao ser compilado gerado um arquivo executvel com a extenso .exe. Oarquivo com extenso .h, armazena as definies dos recursos usados pela unit, e o

    arquivo com extenso .dfm, contm os recursos usados pelo programa.

    Os arquivos .cpp so criados pelo programador, e os demais arquivos so criados

    automaticamente pelo compilador. Os aquivos destacados em negrito fazem parte do

    programa fonte, e sero necessrios toda a vez que for preciso modificar o programa.

    Os demais so gerados a cada compilao.

    Project

    unit

    form

    Os aquivos que fazem parte doprojeto, de um programa em C++

    Builder, so:

    - unit1.cpp- project1.cpp- unit1.h- unit1.dfm- unit1.obj- project1.obj- project1.res- project1.bpr- project1.exe

  • 7/21/2019 3393 Apostila TP

    35/190

    Captulo 2

    26

    2.2.2. A interface de desenvolvimento

    Quando se inicia a criao de um programa (opo new aplicattion do menu), so

    apresentados ao usurio, a janela do formulrio (form), a barra de componentes

    (component palette) e a barra de propriedades e eventos (object inspector).

    3.2.2.1. Barra de Componentes

    A barra de componentes apresenta todos os elementos que podem ser adicionados a um

    formulrio, para a criao de um programa.

    2.2.2.2. Formulrio (form)

    O formulrio (form) a janela que ir receber os componentes (botes, edits, etc) queiro operar sobre o programa.

    O formulrio a interface entre o programa e o usurio. o meio pelo qual o usuriointerage com o programa, seja inserindo dados atravs de uma caixa de texto, sejaexecutando uma funo ao clique de um boto, etc.

    caixa de texto

    boto

    form

    rtulo

  • 7/21/2019 3393 Apostila TP

    36/190

    Captulo 2

    27

    2.2.2.3. Barra de Propriedades

    Cada componente possui uma lista de propriedades (no object inspector) que pode ser alteradade acordo com a necessidade do programador. Da mesma forma os eventos podem ser

    utilizados para executarem aes durante o uso do programa.

    2.2.3. A criao de programas

    Enunciado:

    Dado o algoritmo que calcula a soma de dois nmeros, elabore um programa em C, querealize as operaes representadas no algoritmo.

    Para resolver este problema, primeiramente necessrio conhecer as diferenas entre os

    comandos do portugol e da linguagem C, como apresentado a seguir:

    Esta janela apresenta as propriedades docomponente com o "foco". As propriedades, oueventos podem ser alterados nesta janela,quando da escrita do programa.

    Por exemplo:

    a) para alterar o ttulo do formulrio, alterara propriedade caption;

    b) para alterar o nome do formulrio alterara propriedade name;

    c)

    para alterar as cores do formulrioalterar a propriedade color.

    As propriedades podem ser alteradas tambmdurante a execuo do programa, bastandoreferenciar o componente e a respectiva

    propriedade atravs do conector "->". Assim,no programa, pode-se escrever:

    Form1->Caption = programa1;

  • 7/21/2019 3393 Apostila TP

    37/190

    Captulo 2

    28

    Portugol Linguagem C

    inicio

    inteiro a,b,c;

    leia(a);

    leia(b);

    c = a + b:

    escreva(c);

    fim

    {

    int a,b,c;

    a = atoi(Edit1->Text.c_str());

    b = atoi(Edit2->Text.c_str());

    c = a + b;

    Edit3->Text = c;

    }

    Algumas diferenas ocorrem na leitura, escrita e atribuio de valores, como tambm em

    relao aos operadores relacionais, lgicos e aritmticos, como apresentado a seguir:

    a) Entrada de Dados

    leia(n); escrito como n = atoi(Edit1->Text.c_str());

    Onde,

    Edit1 o nome do componente EditBox;Edit1->Text a propriedade texto de Edit1;

    Edit1->Text.c_str() o formalismo do Builder para leitura de string;

    atoi() a funo do C para converter caracteres alfanumricos (texto) em valor

    numrico do tipo inteiro.

    Para usar a funo atoi() necessrio incluir uma biblioteca do C:

    #include

    Obs:

    - Note que Edit1 o nome do componente e Text uma das propriedades; esta

    especificamente diz respeito ao contedo da caixa de texto.

    - Note tambm que Edit1 o nome do EditBox. Este nome ser usado para todo

    o programa. Lembre que atravs da propriedade name, o nome pode ser

    alterado. Por exemplo, Texto1->Text = ...;

  • 7/21/2019 3393 Apostila TP

    38/190

    Captulo 2

    29

    b) Atribuio

    f Text = f; (a propriedade Text do Edit2, ir conter o valor de f).

    d) Operadores aritmticos em C

    Operao Smbolo Operao Smbolo

    Adio + Raiz quadrada sqrt()

    Subtrao - Exponenciao pow()

    Multiplicao * Resto %

    Diviso /

    e) Operadores relacionais

    Operao Smbolo Operao Smbolo

    Maior que > Menor ou igual < =

    Menor que < Igualdade = =

    Maior ou igual > = Diferena ! =

    2.2.4. Passos para Criar uma Aplicao em C

    A seguir ser apresentada uma sequncia de passos para a criao de programas em C, no

    ambiente do Borland C++ Builder.

  • 7/21/2019 3393 Apostila TP

    39/190

    Captulo 2

    30

    a) Abrindo o C++ Builder

    No Windows, a partir do menu iniciar (ou atalho) selecione a opo "C++Builder 5". Ao

    ser iniciado, o ambiente apresenta os menus, barras de ferramentas, um formulrio

    denominado Form1 e uma rea de texto, denominada Unit1.cpp. Estes elementos

    flutuam sobre a tela, e sua exibio pode ser alternada, apenas mudando o "foco".

    b) Adicionando Formulrio

    Um formulrio em branco (sem componentes) automaticamente apresentado ao se

    criar uma aplicao. Se necessrio, um formulrio pode ser adicionado aplicaoatravs do boto "new form" como apresentado pelo menu abaixo.

    c) Inserindo Componentes no Formulrio

    O formulrio representa a rea de trabalho, onde ser realizada a interface entre oprograma e o usurio. Neste formulrio devem ser inseridos os componentes da

    linguagem (botes, caixas de texto, caixas de verificao, etc). Para inserir um

    componente, necessrio escolher o componente desejado na barra de componentes e

    clicar na regio do formulrio onde quiser adicion-lo.

    Ao serem incorporados ao Formulrio, os componentes assumem nomes padronizados.

    O formulrio Form1contm:

    Edit Box (caixa de texto): Edit1Edit Box (caixa de texto): Edit2

    Edit Box (caixa de texto): Edit3

    label (rtulo): Label1

    label (rtulo): Label2

    label (rtulo): Label3

    Button (Boto): Button1

  • 7/21/2019 3393 Apostila TP

    40/190

    Captulo 2

    31

    Os nomes podem ser alterados atravs das propriedades do object inspector. Ento o

    formulrio pode ficar como:

    d) Codificao do Programa

    A janela de edio permite visualizar e alterar o cdigo do programa de cada "Unit"

    como mostra a figura abaixo. Cada componente pode perceber a ocorrncia de um

    evento, por exemplo, o clique em um boto. Ento, pode-se associar ao componente

    Button, as linhas de cdigo que executam as operaes. Ou seja, para calcular a soma

    entre dois nmeros, devemos fornecer um valor como parmetro atravs de uma

    EditBox, e o clculo do fatorial s ser executado mediante o clique do boto.

    Normalmente associa-se:

    comandos, aos componentes do tipo Button;

    entrada e sada de dados na tela, aos componentes EditBox ou Label;parmetros condicionais aos componentes RadioButton e CheckBox.

    Para modificar o texto do label ouboto, deve-se alterar o contedoda propriedade Caption. ParaEdits, alterar a propriedade Text.Lembre que a propriedade Captionno altera o nome do componente,apenas altera o texto que aparecesobre o componente. Assim, no

    programa os nomes continuamsendo Edit1, Edit2, ... etc. Para

    mudar o nome usar a propriedadeName.

  • 7/21/2019 3393 Apostila TP

    41/190

    Captulo 2

    32

    e) Compilando um Programa

    O C++ Builder deve compilar o programa para verificar a sintaxe, e gerar o cdigo

    executvel. Para compilar selecione a opo correspondente no menu, ou use as teclas

    de atalho Ctrl F9 ou F9.

    f) Executando um Programa

    Para executar o programa, utilize o comando RUN ou a tecla F9.

    Local para declaraodas bibliotecas

    Evento clique do boto

    Programa em C

  • 7/21/2019 3393 Apostila TP

    42/190

    Captulo 2

    33

    g) Salvando o Programa

    Para gravar o programa recomenda-se criar uma pasta, pois vrios arquivos gerados pelo

    compilador devem ser armazenados. Se este local for conhecido, ento facilitar a

    localizao e manuteno dos programas. Use o comando "Save All" para que todos os

    arquivos sejam salvos. Uma janela, como abaixo, apresentada. Fornea um nome para

    o arquivo Unit1.cpp. Em seguida dever ser fornecido um nome para o arquivo de

    projeto Project1.cpp.

    Obs:

    - Como a unit e o projeto tem a mesma extenso (.cpp), no esquea de dar nomes

    diferentes para os dois arquivos.

    - Grave sempre no HD, pois o C++ gera vrios arquivos durante a compilao.

    2.2.5. Exerccios

    1.Escreva um programa em C para somar e subtrair dois nmeros fornecidos por um

    usurio, e apresentar o resultado usando um Editbox.

    2.Modifique o exerccio 3.1, para apresentar o resultado atravs de um Label;

    3.Escreva um programa em C que calcule as razes de uma equao de 2. grau.

    4.Escreva um algoritmo e um programa em C que conte quantas vezes um boto foi

    pressionado, e apresente o resultado em um EditBox.

  • 7/21/2019 3393 Apostila TP

    43/190

    Captulo 2

    34

    2.3. ESCOPO DE VARIVEIS

    2.3.1. Variveis locais

    As variveis devem existir (ser declaradas) antes de serem usadas no programa. Existem

    duas formas de declarao de variveis. As variveis locais so declaradas dentro de um

    procedimento ou funo, ou associadas a um evento, como por exemplo, um boto no

    formulrio. Estas variveis so utilizadas dentro do bloco de comandos do boto. Estas

    variveis no so acessveis por outras partes do programa, por exemplo, associadas a

    um segundo boto.

    Exemplo

    Escreva um algoritmo e um programa em C (usando C++ Builder), para contar o

    nmero de vezes que foi apertado o boto [OK] do formulrio abaixo. Implementar este

    exemplo e analisar o resultado obtido.

    Dentro do boto OK:

    {

    intvezes = 0; // varivel local

    vezes = vezes + 1; // incrementa o nmero de vezes

    Edit1->Text = vezes; // apresenta resultado

    }

  • 7/21/2019 3393 Apostila TP

    44/190

    Captulo 2

    35

    2.3.2. Variveis globais

    As variveis globais devem ser declaradas em um local que possa ser conhecida por

    todos os componentes do programa, normalmente no incio do programa (da unit). Uma

    varivel global pode ser usada por qualquer componente do programa. Por exemplo,

    dois botes que realizam operaes diferentes tm acesso s mesmas variveis.

    No incio da UNIT.CPP

    intvezes = 0; // varivel global

    Dentro do boto OK:

    {

    vezes = vezes + 1; // conta o num. de vezes

    Edit1->Text = vezes; // apresenta resultado

    }

    Quando usar variveis locais ou globais?

    Normalmente usa-se variveis globais quando um valor deve ser conhecido e

    manipulado em vrias partes do programa. Normalmente usa-se variveis locais quando

    a varivel tem uma funo especfica dentro de um bloco de comandos (por exemplo,

    contador de loop).

    Talvez a diferena mais importante entre os dois tipos, que os contedos de variveis

    locais esto alocadas na memria somente durante a execuo do bloco de programa queas necessita. Assim, depois de usada a memria liberada e quando necessrio alocada

    novamente.

    Os contedos de variveis globais esto disponveis enquanto o programa estiver sendo

    executado. A regio de memria alocada para cada varivel, permanece bloqueada

    durante toda a execuo do programa.

  • 7/21/2019 3393 Apostila TP

    45/190

    Captulo 2

    36

    2.4. Desvio condicional em C

    O comando if - else permite expressar decises que alteram o fluxo de execuo de um

    programa. A sintaxe dada por:

    2.4.1. Desvio Condicional Simples

    Portugol Bloco com N comandos Apenas um comando

    ...

    se (condio) entocomando;

    fim se

    ...

    ...

    if(condio)

    {comando 1;

    comando 2;

    ...

    comando n;

    }

    ...

    ...

    if(condio)

    comando;...

    2.4.2. Desvio Condicional Composto

    Portugol Bloco com N comandos Apenas um comando

    se (condio) ento

    comando 1;

    seno

    comando 2;

    fim se

    if(condio)

    {

    comando 1;

    comando 2;

    comando 3;

    }

    else

    {

    comando n-1;

    comando n;

    }

    if(condio)

    comando 1;

    else

    comando 2;

    Com apenas umcomando no necessrio abrirum bloco comchaves { }.

    Com apenas umcomando no necessrio abrirum bloco comchaves { }.

  • 7/21/2019 3393 Apostila TP

    46/190

    Captulo 2

    37

    2.4.3. Ifs Aninhados

    se (condio) entose (condio)

    ento

    comando 1;

    fim se

    se(condio)

    ento

    comando 2;

    seno

    comando 3;

    fim se

    seno

    comando 4;

    fim se

    if(condio)

    {

    if (condio) comando 1;

    if (condio) comando 2;

    elsecomando 3;

    }

    else

    comando 4;

    if(condio)

    comando 1;

    else

    if(condio)

    comando 2;

    else

    if(condio)

    comando 4;

    2.4.4. Exemplo

    Escreva um algoritmo em portugol e o respectivo programa em C, para calcular as razes de

    uma equao do 2.o grau: Ax + Bx + C.

    Soluo sem o uso de if.

    - Algoritmo em Portugol:

    Inicio

    inteiro: A, B, C;

    real: x1, x2;

    leia(A, B, C);

    x1

  • 7/21/2019 3393 Apostila TP

    47/190

    Captulo 2

    38

    - Programa em Linguagem C++ Builder

    #include // contm atoi()

    #include // contm pow() e sqrt()

    // no boto OK:

    {

    int A, B, C;

    float x1, x2;

    A = atoi(Edit1->Text.c_str());

    B = atoi(Edit2->Text.c_str());

    C = atoi(Edit3->Text.c_str());

    x1 = (-B + sqrt(pow(B,2) - 4*A*C))/ 2*A;

    x2 = (-B - sqrt(pow(B,2) - 4*A*C))/ 2*A;

    Edit4->Text = x1;

    Edit5->Text = x2;

    }

    b) Soluo com o uso de if.

    - Algoritmo em Portugol:

    inicio

    inteiro: A, B, C, D;

    real: x1, x2;

    leia(A, B, C);

    D = 0) ento

    x1

  • 7/21/2019 3393 Apostila TP

    48/190

    Captulo 2

    39

    - Programa em Linguagem C++ Builder

    #include // contm atoi()

    #include // contm pow()

    // no boto OK:

    {

    intA, B, C, D;

    floatx1, x2;

    A = atoi(Edit1->Text.c_str());

    B = atoi(Edit2->Text.c_str());

    C = atoi(Edit3->Text.c_str());

    D = pow(B,2) - 4*A*C;

    if(D >= 0)

    {

    x1 = (-B + sqrt(D))/ 2*A;

    x2 = (-B - sqrt(D))/ 2*A;

    Edit4->Text = x1;

    Edit5->Text = x2;

    }

    else

    ShowMessage("Delta < 0");

    }

    2.4.5. Exerccio

    1.Escreva um programa para converter graus Celsius para Fahrenheit, e vice versa, a partir de

    uma temperatura fornecida por um usurio, usando o form A) e o form B).

    form A form B

  • 7/21/2019 3393 Apostila TP

    49/190

    Captulo 2

    40

    2.5. Laos de repetio em C

    2.5.1. Loop Para/Faa (for)

    Exemplo :

    Desenvolva um programa que gere uma tabela de converso de temperatura de graus

    Farenheit para graus Celcius.

    Portugol Linguagem C++ Builder

    inicio

    inteiro x;

    real C, F;

    para F de 0 at 100 faa

    C

  • 7/21/2019 3393 Apostila TP

    50/190

    Captulo 2

    41

    2.5.3. Loop Faa/Enquanto (do/while)

    Portugol Linguagem C++ Builder

    inicio

    inteiro x;

    real C, F;

    F Text = f;

    }

  • 7/21/2019 3393 Apostila TP

    51/190

    Captulo 2

    42

    2.5.5 Exerccios

    1.Altere o loop fordo exemplo anterior, para os loops whilee do/while.

    2.Escreva o algoritmo e o respectivo programa em C para um programa que conte a

    quantidade de nmeros pares e mpares digitados por um usurio. O usurio pode digitar

    quantos nmeros quiser, e pode encerrar o programa quando desejar.

    3.Escreva o algoritmo e o respectivo programa em C, para um programa que conte a

    quantidade de nmeros primos digitados por um usurio. O usurio pode digitar quantosnmeros quiser, e pode encerrar o programa quando desejar.

  • 7/21/2019 3393 Apostila TP

    52/190

    Captulo 2

    43

    2.6. PROCEDIMENTOS EM C

    2.6.1. Definio

    A utilizao de procedimentos permite que um conjunto de comandos possa ser usado

    repetidas vezes dentro de um programa, sem a necessidade de reescrever o cdigo vrias

    vezes. Um bloco de comandos associado a um nome (nome do procedimento); sempre que

    for necessrio executar estes comandos, basta chamar o nome do procedimento.

    2.6.2. Exemplo 1

    Desenvolva um programa que calcule a soma de dois valores reais fornecidos pelo usurio.

    - Formulrio:

    - Dentro do Boto [+]:

    void__fastcallTForm1::Button1Click(TObject *Sender)

    {

    floatvalor1,valor2,resp;

    valor1 = atof(Edit1->Text.c_str());

    valor2 = atof(Edit2->Text.c_str());

    resp = valor1 + valor2;

    Edit3->Text = resp;

    }

  • 7/21/2019 3393 Apostila TP

    53/190

    Captulo 2

    44

    Agora suponha que o usurio queira somar 10 a cada valor1 fornecido. Pode-se criar um novo

    boto para realizar esta operao como apresentado abaixo:

    - Formulrio:

    - Dentro do Boto [+ 10]:

    void __fastcallTForm1::Button2Click(TObject *Sender)

    {

    floatvalor1,resp;

    valor1 = atof(Edit1->Text.c_str());

    resp = valor1 + 10;

    Edit3->Text = resp;

    }

    Observando-se os dois botes, percebe-se facilmente que os dois realizam uma operao de

    soma de dois valores (valor1 + valor2 ou valor1 + 10).

    Cada uma das operaes de soma ter um cdigo correspondente em linguagem de mquina.

    Ou seja, dois trechos em liguagem de mquina que iro realizar a mesma operao: somar

    dois valores. Pode-se otimizar este programa escrevendo uma nica vez a operao de soma

    de forma que possa ser acessada pelos dois botes.

    Ento podemos criar um procedimento que realiza a soma, da seguinte forma:

  • 7/21/2019 3393 Apostila TP

    54/190

    Captulo 2

    45

    //-----------------------------------------------------------------------

    #include

    #pragma hdrstop

    #include

    #include "Unit1.h"

    #pragma package(smart_init)

    #pragma resource "*.dfm"

    TForm1 *Form1;

    //------------------------------------------------------------------------

    floatresp;

    //-------------------------------------------------------------------------

    voidSoma(floata, floatb){

    resp = a + b;

    }

    //-------------------------------------------------------------------------

    __fastcallTForm1::TForm1(TComponent* Owner)

    : TForm(Owner)

    {

    }

    //-------------------------------------------------------------------------

    void __fastcallTForm1::Button1Click(TObject *Sender)

    {

    floatvalor1,valor2;

    valor1 = atof(Edit1->Text.c_str());

    valor2 = atof(Edit2->Text.c_str());

    Soma(valor1,valor2);

    Edit3->Text = resp;

    }

    //-------------------------------------------------------------------------

    void __fastcallTForm1::Button2Click(TObject *Sender)

    {

    floatvalor1;

    valor1 = atof(Edit1->Text.c_str());

    Soma(valor1,10);

    Edit3->Text = resp;

    }

    //------------------------------------------------------------------------

    1-Bibliotecas e diretivas decompilao

    2-Espao para declarao devariveis globais

    3-Espao para declararprocedimentos e funes ouseus rotti os.

    4-Trecho de programa doboto [+] e a chamada doprocedimento Soma.

    5-Trecho de programa doboto [+ 10] e a chamada doprocedimento Soma.

  • 7/21/2019 3393 Apostila TP

    55/190

    Captulo 2

    46

    Da listagem anterior pode-se observar que a observao nmero:

    1 identifica o local aonde so adicionadas as bibliotecas e diretivas do programa. Sempre no

    incio da Unit,

    2 identifica o local para declarao de variveis globais. As variveis globais devem existir

    antes de serem usadas pelo programa, pos isto vem antes; note que a varivel resp usado

    dentro do procedimento, e tambm dentro de cada boto.

    3 identifica o local para escrever os procedimentos (ou prottipos). Da mesma forma que a

    varivel global, o procedimento precisa primeiro existar para que possa ser usado pelo resto

    do programa. Pode ser escrito o procedimento inteiro ou apenas o prottipo; neste caso obloco do procedimento pode ser escrito em qualquer parte do programa. (menos dentro de

    eventos do formulrio).

    4- identifica a chamada do procedimento. No momento em que precisa-se calcular a soma,

    chama-se o procedimento. Note que existe passagem de parmetros. O contedo de valor1

    passado para a varivel a do procedimneto e o contedo de valor2 passado para a varivel b

    do procedimento. Observe tambm que valor1 e valor2 so variveis locais do boto, portanto

    no podem ser acessadas pelo procedimento; por isto necessrio realizar passagem deparmetros. As variveis a e b so locais do procedimento (s existem dentro do

    procedimento), mas a resposta atribuda a resp, que uma varivel global, portanto pode ser

    acessada por todo o programa.

    5- igual ao item 4, com o valor constante 10 em vez da varivel valor2.

    2.6.3. Prottipo

    Dado o exemplo anterior, formalmente pode-se criar o prottipo de um procedimento com

    apresentado a seguir:

    NomeDoProcedimento(lista de parmetros);

    Sempre declarando o procedimento como global, ele pode ser acessado em qualquer parte do

    programa.

  • 7/21/2019 3393 Apostila TP

    56/190

    Captulo 2

    47

    2.6.4. Parmetros

    Uma ou mais variveis de tipos iguais ou diferentes que so utilizadas pelo procedimento para

    a realizao de alguma operao especfica. Durante a execuo sequencial de um programa,

    um procedimento pode ser chamado e pode receber alguns valores para serem operados.

    2.6.5. Exemplo 2

    Dado o programa em C, que calcula as razes de uma equao do segundo grau, modifique a

    estrutura para a utilizao de um procedimento para limpar a tela (contedo das variveis e

    caixas de texto).

    a) Sem Procedimento

    // declarao de variveis globais

    intA, B, C, D; // parmetros da equao

    floatx1, x2; // razes da equao

    . . .

    //-----------------------------------------------------

    // boto para o clculo das razes

    void __fastcallTForm1::Button1Click(TObject *Sender)

    {

    A = atoi(Edit1->Text.c_str()); // entrada dos valores

    B = atoi(Edit2->Text.c_str());

    C = atoi(Edit3->Text.c_str());

  • 7/21/2019 3393 Apostila TP

    57/190

    Captulo 2

    48

    D = pow(B,2) - 4*A*C; // calcula delta

    if( D >= 0 ) // testa se existe razes

    {

    x1 = (-B + sqrt(D))/ 2*A;

    x2 = (-B - sqrt(D))/ 2*A;

    Edit4->Text = x1; // apresenta resposta

    Edit5->Text = x2;

    }

    else

    {

    ShowMessage("Delta < 0");

    Edit1->Text = ""; // limpa Caixas de Texto

    Edit2->Text = "";Edit3->Text = "";

    Edit4->Text = "";

    Edit5->Text = "";

    A=0;B=0;C=0;D=0; // limpa valores da equao

    x1=0;x2=0; // limpa resultado

    }

    }

    //-----------------------------------------------------

    // boto para limpar os valores da tela

    void __fastcallTForm1::Button2Click(TObject *Sender)

    {

    Edit1->Text = ""; // limpa Caixas de Texto

    Edit2->Text = "";

    Edit3->Text = "";

    Edit4->Text = "";

    Edit5->Text = "";

    A=0;B=0;C=0;D=0; // limpa valores da equao

    x1=0;x2=0; // limpa resultado

    }

    //-----------------------------------------------------

    No exemplo acima , note que os trechos de programa escritos em vermelho se repetem. Ento

    podemos transformar o trecho repetido, em um procedimento.

  • 7/21/2019 3393 Apostila TP

    58/190

    Captulo 2

    49

    b) Com Procedimento

    // declarao de variveis globais

    intA, B, C, D;

    floatx1, x2;

    //----------------------------------------------------

    // procedimento para limpar a tela

    voidLimpaTela(void)

    {

    Form1->Edit1->Text = ""; // limpa Caixas de Texto

    Form1->Edit2->Text = "";

    Form1->Edit3->Text = "";

    Form1->Edit4->Text = "";

    Form1->Edit5->Text = "";

    A=0;B=0;C=0;D=0; // limpa valores da equao

    x1=0;x2=0; // limpa resultado

    }

    //-----------------------------------------------------

    void __fastcallTForm1::Button1Click(TObject *Sender)

    {A = atoi(Edit1->Text.c_str());

    B = atoi(Edit2->Text.c_str());

    C = atoi(Edit3->Text.c_str());

    D = potencia(B,2) - 4*A*C;

    if( D >= 0 )

    {

    x1 = (-B + sqrt(D))/ 2*A;

    x2 = (-B - sqrt(D))/ 2*A;

    Edit4->Text = x1;

    Edit5->Text = x2;

    }

    else

    {

    ShowMessage("Delta < 0");

    LimpaTela();

    }

    }

  • 7/21/2019 3393 Apostila TP

    59/190

    Captulo 2

    50

    //-----------------------------------------------------

    void __fastcallTForm1::Button2Click(TObject *Sender)

    {

    LimpaTela();

    }

    //----------------------------------------------------

    Neste exemplo, foi criado um procedimento com a funo de limpar os edits. Note que neste

    caso no existe passagem de parmetros (void) porque o procedimento no precisa receber

    nenhum valor.

    2.7. FUNO EM C

    2.7.1. Definio

    Uma funo um procedimento que retorna um valor (um resultado). Normalmente um

    bloco de comandos que executa uma tarefa especfica, e aps execut-la devolve um resultado

    das operaes realizadas. Este resultado pode ser atribudo a uma varivel em qualquer parte

    do programa principal. Tanto uma funo, como um procedimento podem ser chamados(executados) vrias vezes, durante o funcionamento do programa.

    2.7.2. Declarao

    tipoNomeFuncao(tipodo parametro 1, tipodo parametro2, ... , tipodo parametroN)

    {

    . . .return valor;

    }

    2.7.3 Parmetros e retorno

    Parmetros so os valores passados para a funo que vo sofrer algum tipo de modificao

    durante a execuo dos comandos da funo. Sempre deve ser retornado um valor (return). A

  • 7/21/2019 3393 Apostila TP

    60/190

    Captulo 2

    51

    varivel que vai retornar o valor deve ser do mesmo tipo da funo. Observe que a funo

    sempre tem um tipo, ou seja, uma funo pode ser do tipo inteiro, real, etc. Quando a funo

    no tem um tipo (void), ento ela no pode retornar um valor, ou seja passa a ser um

    procedimento.

    2.7.4. Exemplo 1

    Desenvolva um programa que calcule a soma de dois valores reais fornecidos pelo usurio.

    - Formulrio:

    No exemplo de procedimento os contedos das variveis locais eram trocados via passagem

    de parmetros, mas a varivel de resposta resp, passou a ser global a fim de receber a soma

    dos contedos passados para a e b.

    Agora, se a varivel resp no for mais declarada como global, ou seja, passar a ser local de

    cada boto, ento pode-se reescrever o procedimento na forma de uma funo, como

    apresentado a seguir:

    //-----------------------------------------------------------------------

    #include

    #pragma hdrstop

    #include

    #include "Unit1.h"

    1-Bibliotecas e diretivas decompilao.

  • 7/21/2019 3393 Apostila TP

    61/190

    Captulo 2

    52

    #pragma package(smart_init)

    #pragma resource "*.dfm"

    TForm1 *Form1;

    //------------------------------------------------------------------------

    //-------------------------------------------------------------------------

    floatSoma(floata, floatb)

    {

    float r;

    r = a + b;

    returnr;

    }

    //------------------------------------------------------------------------- __fastcallTForm1::TForm1(TComponent* Owner)

    : TForm(Owner)

    {

    }

    //-------------------------------------------------------------------------

    void __fastcallTForm1::Button1Click(TObject *Sender)

    {

    floatvalor1,valor2,resp;;

    valor1 = atof(Edit1->Text.c_str());

    valor2 = atof(Edit2->Text.c_str());

    resp = Soma(valor1,valor2);

    Edit3->Text = resp;

    }

    //-------------------------------------------------------------------------

    void __fastcallTForm1::Button2Click(TObject *Sender)

    {

    floatvalor1, resp;

    valor1 = atof(Edit1->Text.c_str());

    resp = Soma(valor1,10);

    Edit3->Text = resp;

    }

    Da listagem anterior pode-se observar que a observao nmero:

    1 identifica o local aonde so adicionadas as bibliotecas e diretivas do programa. Sempre no

    incio da Unit,

    2-Espao para declarao devariveis globais.

    3-Espao para declararprocedimentos e funes ouseus rotti os.

    4-Trecho de programa do

    boto [+] e a chamada dafuno Soma.

    5-Trecho de programa do

    boto [+ 10] e a chamada dafuno Soma.

  • 7/21/2019 3393 Apostila TP

    62/190

    Captulo 2

    53

    2 identifica o local para declarao de variveis globais. Note que neste exemplo, no

    utiliza-se mais variveis globais;

    3 identifica o local para escrever os procedimentos (ou prottipos). Da mesma forma que a

    varivel global, o procedimento precisa primeiro existar para que possa ser usado pelo resto

    do programa. Pode ser escrita toda a funo ou apenas o prottipo; neste caso o bloco do

    procedimento pode ser escrito em qualquer parte do programa. (menos dentro de eventos do

    formulrio).

    4- identifica a chamada da funo. No momento em que precisa-se calcular a soma, chama-se

    o procedimento. Note que existe passagem de parmetros. O contedo de valor1 passado

    para a varivel a do procedimneto e o contedo de valor2 passado para a varivel b do

    procedimento. Observe tambm que valor1 e valor2 so variveis locais do boto, portantono podem ser acessadas pelo procedimento; por isto necessrio realizar passagem de

    parmetros. As variveis a e b so locais do procedimento como tambm agora, a varivel r.

    para que o valor de r possa ser conhecido pelo restante do programa a funo deve retornar o

    contedo de r, atravs do comando return. A varivel local resp recebe o valor retornado por r.

    5- igual ao item 4, com o valor constante 10 em vez da varivel valor2.

    2.7.5. Exemplo 2

    Modifique o programa de clculo das razes, para o uso de uma funo que calcule o valor da

    exponencial de um nmero qualquer (x^y), sem o uso do comando pow().

    #include

    #pragma hdrstop

    #include "raizes.h"

    #include // contm atoi()

    #include // contm pow()

  • 7/21/2019 3393 Apostila TP

    63/190

    Captulo 2

    54

    #pragma package(smart_init)

    #pragma resource "*.dfm"

    TForm1 *Form1;

    //----------------------------------------------------

    // declarao de variveis globais

    intA, B, C, D;

    floatx1, x2;

    //----------------------------------------------------

    __fastcallTForm1::TForm1(TComponent* Owner)

    : TForm(Owner)

    { }

    //-----------------------------------------------------

    voidLimpaTela(void){

    Form1->Edit1->Text = ""; // limpa Caixas de Texto

    Form1->Edit2->Text = "";

    Form1->Edit3->Text = "";

    Form1->Edit4->Text = "";

    Form1->Edit5->Text = "";

    A=0;B=0;C=0;D=0; // limpa valores da equao

    x1=0;x2=0; // limpa resultado

    }

    //------------------------------------------------------

    // funo que realiza o clculo da potncia

    longpotencia(intbase, intexp)

    {

    intx; // conta o nmero de vezes a ser multiplicado

    longresp = base;

    for(x=1; xText.c_str());

    B = atoi(Edit2->Text.c_str());

  • 7/21/2019 3393 Apostila TP

    64/190

    Captulo 2

    55

    C = atoi(Edit3->Text.c_str());

    D = potencia(B,2)- 4*A*C; // chamada da funo

    if( D >= 0 )

    {

    x1 = (-B + sqrt(D))/ 2*A;

    x2 = (-B - sqrt(D))/ 2*A;

    Edit4->Text = x1;

    Edit5->Text = x2;

    }

    else

    {

    ShowMessage("Delta < 0");

    LimpaTela(); // chamada do procedimento}

    }

    //-----------------------------------------------------

    void __fastcallTForm1::Button2Click(TObject *Sender)

    {

    LimpaTela(); // chamada do procedimento

    }

    //-----------------------------------------------------

    2.7.6. Exerccios

    1.Escreva e teste o funcionamento dos exerccios acima.

    2. Modifique o programa do clculo do fatorial para uma funo que calcule o valor do

    fatorial de um nmero.

    3. Desenvolva um programa que permita realizar operaes de adio e subtrao de dois

    valores fornecidos pelo usurio, atravs de uma funo.

  • 7/21/2019 3393 Apostila TP

    65/190

    Captulo 2

    56

    2.8. Incrementos e Decrementos

    Incrementar e decrementar variveis so tarefas muito comuns em programao. A linguagem

    C oferece alguns comandos para realizar estas operaes.

    Exemplo A:

    {

    inttotal, valor;

    valor = 0;

    total = valor + 1; //contedo de valormais 1...

    }

    Exemplo B:

    {

    inttotal, valor;

    valor = 0;

    total = valor++; //contedo de valormais 1 ?...

    }

    2.8.1. Incremento/Decremento a Posteriori

    Neste caso, primeiro feito a operao de atribuio e depois incrementa/decrementa avarivel.

    Exemplo:

    Incremento Decremento

    {

    inttotal;

    intvalor;valor = 1;

    total = valor++;

    /** neste exemplo total recebe valor e depois

    da atribuio somado 1 a varivel valor **/

    ...

    }

    {

    inttotal;

    intvalor;valor = 1;

    total = valor--;

    /** neste exemplo total recebe valor e depois

    da atribuio subtrado 1 da varivel valor

    **/

    ...

    }

  • 7/21/2019 3393 Apostila TP

    66/190

    Captulo 2

    57

    2.8.2. Incremento/Decremento a Priori

    Neste caso, primeiro incrementado o valor, e depois atribudo a varivel.

    Exemplo:

    Incremento Decremento

    {

    inttotal;

    intvalor;

    valor = 1;

    total = ++valor;

    /** neste exemplo valor increme