Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Programação em C++ com exemplos de algoritmos e funções, Notas de estudo de Informática

Este documento contém exemplos de algoritmos e funções em c++, incluindo a implementação de uma função para calcular a potência de um número, ordenação de elementos em um vetor, conversão de valores numéricos para caracteres e vice-versa, e acesso a elementos de matrizes utilizando ponteiros. Além disso, é apresentado o conceito de variáveis globais e locais, e a troca de valores entre variáveis.

Tipologia: Notas de estudo

2013

Compartilhado em 11/12/2013

Futebol13
Futebol13 🇧🇷

4.5

(204)

196 documentos

1 / 46

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Capítulo 2
45
- Programa em Linguagem C++ Builder
#include <stdlib.h> // contém atoi()
#include <math.h> // contém pow()
// no botão OK:
{
int A, B, C, D;
float x1, 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. Exercício
1. Escreva um programa para converter graus Celsius para Fahrenheit, e vice versa, a partir de
uma temperatura fornecida por um usuário, usando o form A) e o form B).
form A form B
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e

Pré-visualização parcial do texto

Baixe Programação em C++ com exemplos de algoritmos e funções e outras Notas de estudo em PDF para Informática, somente na Docsity!

- Programa em Linguagem C++ Builder

#include <stdlib.h> // contém atoi()

#include <math.h> // contém pow()

// no botão OK:

int A, B, C, D;

float x1, x2;

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

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

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

D = pow(B,2) - 4AC;

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. Exercício

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

uma temperatura fornecida por um usuário, usando o form A) e o form B).

form A form B

2.5. Laços de repetição em C

2.5.1. Loop Para/Faça (for)

Exemplo :

Desenvolva um programa que gere uma tabela de conversão de temperatura de graus

Farenheit para graus Celcius.

Portugol Linguagem C++ Builder

inicio

inteiro x;

real C, F;

para F de 0 até 100 faça

C <- (5 * (F-32)) / 9;

fim para

fim

int x;

float C, F;

for (F = 0; F < 100; F++ )

C = (5 * (F-32)) / 9;

2.5.2. Loop Enquanto/Faça (while)

Portugol Linguagem C++ Builder

inicio

inteiro x;

real C, F;

F <- 0;

enquanto F < 100 faça

C <- (5 * (F-32)) / 9;

F <- F + 1;

fim para

fim

int x;

float C, F;

F = 0;

while (F < 100)

C = (5 * (F-32)) / 9;

F++; // F = F + 1;

2.5.5 Exercícios

1. Altere o loop for do exemplo anterior, para os loops while e do/while.

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

quantidade de números pares e ímpares digitados por um usuário. O usuário pode digitar

quantos números 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 números primos digitados por um usuário. O usuário pode digitar quantos

números quiser, e pode encerrar o programa quando desejar.

2.6. PROCEDIMENTOS EM C

2.6.1. Definição

A utilização de procedimentos permite que um conjunto de comandos possa ser usado

repetidas vezes dentro de um programa, sem a necessidade de reescrever o código várias

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

for necessário 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 usuário.

- Formulário:

- Dentro do Botão [+]:

void __fastcall TForm1::Button1Click(TObject *Sender)

float valor1,valor2,resp;

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

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

resp = valor1 + valor2;

Edit3->Text = resp;

#include <vcl.h> #pragma hdrstop #include <stdlib.h> #include "Unit1.h" #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //------------------------------------------------------------------------

float resp; //------------------------------------------------------------------------- void Soma( float a, float b) { resp = a + b; } //------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { float valor1,valor2; valor1 = atof(Edit1->Text.c_str()); valor2 = atof(Edit2->Text.c_str()); Soma(valor1,valor2); Edit3->Text = resp; } //------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { float valor1; valor1 = atof(Edit1->Text.c_str()); Soma(valor1,10); Edit3->Text = resp; } //------------------------------------------------------------------------

1 - Bibliotecas e diretivas de

compilação

2 -Espaço para declaração de

variáveis globais

3 - Espaço para declarar

procedimentos e funções ou

seus protótipos.

4 -Trecho de programa do

botão [+] e a chamada do

procedimento Soma.

5 -Trecho de programa do

botão [+ 10] e a chamada do

procedimento Soma.

Da listagem anterior pode-se observar que a observação número:

1 – identifica o local aonde são adicionadas as bibliotecas e diretivas do programa. Sempre no

início da Unit,

2 –identifica o local para declaração de variáveis globais. As variáveis globais devem existir

antes de serem usadas pelo programa, pos isto vem antes; note que a variável resp é usado

dentro do procedimento, e também dentro de cada botão.

3 –identifica o local para escrever os procedimentos (ou protótipos). Da mesma forma que a

variável global, o procedimento precisa primeiro existar para que possa ser usado pelo resto

do programa. Pode ser escrito o procedimento inteiro ou apenas o protótipo; neste caso o

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

eventos do formulário).

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

chama-se o procedimento. Note que existe passagem de parâmetros. O conteúdo de valor1 é

passado para a variável a do procedimneto e o conteúdo de valor2 é passado para a variável b

do procedimento. Observe também que valor1 e valor2 são variáveis locais do botão, portanto

não podem ser acessadas pelo procedimento; por isto é necessário realizar passagem de

parâmetros. As variáveis a e b são locais do procedimento (só existem dentro do

procedimento), mas a resposta é atribuída a resp, que é uma variável global, portanto pode ser

acessada por todo o programa.

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

2.6.3. Protótipo

Dado o exemplo anterior, formalmente pode-se criar o protótipo de um procedimento com

apresentado a seguir:

NomeDoProcedimento(lista de parâmetros);

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

programa.

D = pow(B,2) - 4AC; // calcula delta if ( D >= 0 ) // testa se existe raízes { x1 = (-B + sqrt(D))/ 2A; x2 = (-B - sqrt(D))/ 2A; 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 equação x1=0;x2=0; // limpa resultado } } //----------------------------------------------------- // botão para limpar os valores da tela void __fastcall TForm1::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 equação x1=0;x2=0; // limpa resultado } //-----------------------------------------------------

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

podemos transformar o trecho repetido, em um procedimento.

b) Com Procedimento

// declaração de variáveis globais

int A, B, C, D; float x1, x2; //---------------------------------------------------- // procedimento para limpar a tela void LimpaTela( 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 equação x1=0;x2=0; // limpa resultado }

void __fastcall TForm1::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) - 4AC; if ( D >= 0 ) { x1 = (-B + sqrt(D))/ 2A; x2 = (-B - sqrt(D))/ 2*A; Edit4->Text = x1; Edit5->Text = x2; } else { ShowMessage("Delta < 0"); LimpaTela(); } } //-----------------------------------------------------

variável que vai retornar o valor deve ser do mesmo tipo da função. Observe que a função

sempre tem um tipo, ou seja, uma função pode ser do tipo inteiro, real, etc. Quando a função

não tem um tipo ( void ), então ela não 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 usuário.

- Formulário:

No exemplo de procedimento os conteúdos das variáveis locais eram trocados via passagem

de parâmetros, mas a variável de resposta resp, passou a ser global a fim de receber a soma

dos conteúdos passados para a e b.

Agora, se a variável resp não for mais declarada como global, ou seja, passar a ser local de

cada botão, então pode-se reescrever o procedimento na forma de uma função, como

apresentado a seguir:

#include <vcl.h> #pragma hdrstop #include <stdlib.h> #include "Unit1.h" #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //------------------------------------------------------------------------

//------------------------------------------------------------------------- void Soma( float a, float b) { float r; r = a + b; return r; } //------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { float valor1,valor2 , resp;; valor1 = atof(Edit1->Text.c_str()); valor2 = atof(Edit2->Text.c_str()); resp = Soma(valor1,valor2); Edit3->Text = resp; } //------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { float valor1, resp; valor1 = atof(Edit1->Text.c_str()); resp = Soma(valor1,10); Edit3->Text = resp; }

1 - Bibliotecas e diretivas de

compilação.

2 -Espaço para declaração de

variáveis globais.

3 - Espaço para declarar

procedimentos e funções ou

seus protótipos.

4 -Trecho de programa do

botão [+] e a chamada da

função Soma.

5 -Trecho de programa do

botão [+ 10] e a chamada da

função Soma.

#include <vcl.h> #pragma hdrstop #include "raizes.h" #include <stdlib.h> // contém atoi() #include <math.h> // contém pow() #pragma package(smart_init) #pragma resource "*.dfm" TForm1 Form1; //---------------------------------------------------- // declaração de variáveis globais int A, B, C, D; float x1, x2; //---------------------------------------------------- __fastcall TForm1::TForm1(TComponent Owner) : TForm(Owner) { } //----------------------------------------------------- void LimpaTela( 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 equação x1=0;x2=0; // limpa resultado } //------------------------------------------------------ // função que realiza o cálculo da potência long potencia( int base, int exp) { int x; // conta o número de vezes a ser multiplicado long resp = base; for (x=1; x<exp; x++) { resp = resp * base; } return resp; }

void __fastcall TForm1::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) - 4AC; // chamada da função if ( D >= 0 ) { x1 = (-B + sqrt(D))/ 2A; x2 = (-B - sqrt(D))/ 2*A; Edit4->Text = x1; Edit5->Text = x2; } else { ShowMessage("Delta < 0"); LimpaTela(); // chamada do procedimento } } //----------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { LimpaTela(); // chamada do procedimento } //-----------------------------------------------------

2.7.6. Exercícios

1. Escreva e teste o funcionamento dos exercícios acima.

2. Modifique o programa do cálculo do fatorial para uma função que calcule o valor do

fatorial de um número.

3. Desenvolva um programa que permita realizar operações de adição e subtração de dois

valores fornecidos pelo usuário, através de uma função.

2.8.2. Incremento/Decremento a Priori

Neste caso, primeiro é incrementado o valor, e depois é atribuído a variável.

Exemplo:

Incremento Decremento

int total;

int valor;

valor = 1;

total = ++valor;

/** neste exemplo valor é incrementado e

depois é feita a atribuição **/

int total;

int valor;

valor = 1;

total = --valor;

/** neste exemplo valor é decrementado e

depois é feita a atribuição **/

2.8.3. Exercício

Qual o conteúdo das variáveis total e valor após a execução dos seguintes comandos?

int valor, total;

valor = 3;

total = 5;

total = valor++;

total = ++valor;

total = valor--;

total = --valor;

2.9. Atribuição Composta

Através da combinação de operadores pode-se fazer atribuições das seguintes formas:

Exemplo :

total += valor; // total = total + valor;

valor += 1; // valor = valor + 1;

valor *= 10; // valor = valor * 10;

2.9.1. Exercício

Qual o valor das variáveis valor e total após a execução dos seguintes comandos?

int valor = 3;

int total = 5;

total *= ++valor;

2.10. Atribuição Múltipla

Depois de declaradas as variáveis podem-se ter comandos de atribuição da seguinte forma:

total = valor = resposta = 0; // atribui 0 a todas as variáveis

2.10.1. Exemplo

int resposta, valor, total;

resposta=total=0;

valor=4;

reposta = total + valor;

ou, {

int resposta, valor, total;

resposta=total=0;

reposta = total + (valor = 4);