You are on page 1of 94

APOSTILA DE ESTRUTURA DE DADOS

2009 PROFESSORES: AQUILES F FILHO/ DANILO DIAS ETEC DR DEMTRIO AZEVEDO JUNIOR Av. Europa, 1097- Jardim Europa CEP 18406-460 - Itapeva/SP Tel/fax: (15) 3522-1077 dir.azevedojunior@centropaulasouza.sp.gov.br

C. H SEMANAL: 2,5 HORAS/AULA PARTE I - AULAS 01 a 10 COMPETENCIAS 1. Interpretar pseudocdigos, algoritmos e outras especificaes para codificar programas. 2. 3. Desenvolver algoritmos e fluxogramas. Avaliar resultados de testes dos programas estruturados.

4. Distinguir e avaliar linguagens de programao estruturada, aplicando-a no desenvolvimento de software HABILIDADES Utilizar estruturas de dados na resoluo de problemas

computacionais. Utilizar modelos, pseudocdigos e ferramentas na representao da soluo de problemas. Executar procedimentos de testes de programas. Aplicar as tcnicas de programao estruturada. Utilizar compiladores e ambientes de desenvolvimento na

elaborao de programas.

CRONOGRAMA BASE TECNOLGICA


Escrevendo um bloco de cdigo em C, instruo printf (), uso da diretiva #include, tipos de dados numricos e caracteres, Operadores matemticos, entrada de dados usando scanf (), operadores de atribuio, regras de precedncia Funes predefinidas, operadores lgicos, operadores relacionais, estruturas de deciso simples Estruturas de deciso seqenciais: IF ELSE IF E SWITCH CASE Estruturas de Repetio em C: WHILE, estrutura FOR e estrutura DO WHILE, Somatrias em C Declarao de matrizes, leitura e escrita em vetores, Uso do FOR com matrizes, exemplos prticos Funes e Procedimentos em C, passagem de parmetros por referencia e valor, prottipos de funes Estruturas e enumeraes em C Classes em C++, conceitos, definio e sintaxe, Construindo projetos de classes em Visual C++, arquivos de extenso h e cpp, escopo private e public, operador de alcance::, Funes de Converso da Biblioteca Convert em Visual C++, objeto TextBox,Button,Label, propriedades name,TextAlign,AutoSize,Text, etc. Construindo projetos de classes em Visual C++, Funes de Converso da Biblioteca Convert em Visual C++, objeto TextBox, Button, Label, ListBox e suas propriedades, usando objetos visuais em classe do usurio, uso do gcnew, eventos Load de formulrio e Click de botes, adicionar e remover itens em listas, mudar o foco em caixas de texto, usando espaos de nomes em classes. Construindo projetos de classes em Visual C++, manipulando a Classe DateTime, usando o objeto temporizador.

SEMANA / AULA

01

02 03 04 05 06 07

08

09

10

Construindo projetos de classes em Visual C++, manipulando a Classe Drawing, usando o objeto PictureBox. Construindo projetos de classes em Visual C++, manipulando a classe MenuStrip, construindo menus em formulrios, criando novos formulrios em tempo de execuo. Construindo projetos de classes em Visual C++, manipulando a classe RadioButton e CheckBox, construindo listas de opo e listas de seleo em formulrios. Construindo projetos de classes em Visual C++, manipulando a classe PrintDialog e PrintDocument, impresso de relatrios e formulrios em visual C++, usando outras caixas de Dilogo no Visual C++ ( Fontes, abrir Arquivos, Fechar Arquivos Construindo projetos de classes em Visual C++, trabalhando com banco de dados em Visual C++, mecanismos de conexo. Construindo projetos de classes em Visual C++, trabalhando com banco de dados em Visual C++, tcnicas de exibio em banco de dados, rotinas de pesquisa, alterao e excluso em Banco de Dados. Manipulao de arquivos em C, leitura e escrita em arquivos, arquivos seqenciais, funes de acesso a arquivo Estruturas avanadas de programao: programando filas em Visual C++ Estruturas avanadas de programao: programando listas em Visual C++ Uso da linguagem Visual C++ em projetos: consideraes sobre o uso de classes e estruturas de dados, exemplos prticos

11

12

13

14

15

16

17 18 19 20

PROGRAMAO EM C/C++
A linguagem C foi uma linguagem criada e implementada por Denis Ritchie para o ambiente UNIX. Por muitos anos C foi padro de desenvolvimento de aplicaes para UNIX. Com a popularidade dos microcomputadores um grande nmero de implementaes de C foi criado. Quase que por milagre uma grande parte desses cdigos criados era compatvel entre si, o que garantia certa portabilidade. Atualmente C definida por uma norma ANSI chamada C ANSI que define como a linguagem deve se comportar. C uma linguagem de mdio nvel

Isto quer dizer que C combina elementos de uma linguagem de alto nvel (como Delphi ou VB) a funcionalidade e eficincia de linguagens de baixo nvel como o Assembly. Ou seja, se permite que se manipulem bytes e endereos e tipos de dados definidos pelo programador. Lembre-se que C uma linguagem que no faz checagem de compilador, ou seja, no espere por mensagens de erro em seus programas alm daqueles dos erros de sintaxe, portanto, cuidado! C uma linguagem estruturada

C construdo em blocos, o que lhe d um carter estruturado, permitindo a compartimentalizao do cdigo, tpica de linguagens modernas. C uma linguagem para programadores

Curiosamente nem todas as linguagens so para programadores. COBOL, por exemplo, foi criada presumindo-se que no programadores fossem capazes de ler e entender o cdigo escrito nessa linguagem e pudessem modific-la. C foi criada por programadores profissionais visando total liberdade que estes queriam, ou seja, sem restries, reclamaes, funes isoladas ou conjunto compacto de palavras chaves, tentando obter a mxima eficincia possvel. Em outras palavras, programador profissional programa em C.

Kit do desenvolvedor C /C++


Um conjunto de software da programao em C ser utilizado neste curso e contm tudo do que voc necessita para criar programas em C / C ++. Para criar um cdigo fonte em C voc poder utilizar qualquer editor ASCII como o EDIT do DOS ou o bloco de Notas do Windows, porm mais prtico usar uma IDE de desenvolvimento, pois a mesma garante a sintaxe correta do cdigo e uma certa facilidade na criao de programas. A IDE que utilizaremos por padro ser a DEV-C++, que freeware e poder ser encontrada no site do desenvolvedor conforme tela abaixo:

AULA 01
Vamos comear a programar criando um projeto em C / C++ da seguinte forma: a) Clique em Arquivo, selecione Novo e acesse a opo arquivo Fonte:

Surgir uma tela em branco onde voc ir digitar agora o seu cdigo fonte:

Digite o cdigo abaixo:

Vamos analisar o cdigo: A primeira linha a diretiva #include. Ns a usamos para carregar uma srie de funes j prontas em uma biblioteca da linguagem. Existem vrias bibliotecas e elas podem mudar de sistema operacional e mesmo de compilador, porm algumas so definidas de forma universal. A biblioteca stdio.h a bilblioteca padro e define duas funes usadas neste programa: printf(char *txt) define um texto a ser impresso na tela. getche() espera que o usurio pressione uma tecla.

Esses comandos devem ser sempre executados num bloco contido dentro de um par de chaves:

Essas chaves definem onde comea e termina o bloco a ser codificado. O bloco que inicia o programa recebe sempre o nome de main, quando um cdigo em C for criado. O bloco deve informar o tipo de retorno, j que a linguagem assume que todo bloco uma funo e deve retornar um valor a quem o chamou. No nosso caso estamos retornando um nmero inteiro, por isso o uso do int no inicio da expresso.

Alguns compiladores (como o Borland C++ e o Turbo C) usam a palavra void antes do main, para indicar que a funo nada retorna. Porm o DEV-C++ usa o mtodo ANSI C que exige que a funo retorne um inteiro. Voc poderia ento ter escrito a funo main desta forma:

As duas formas podem gerar ou no advertncias, conforme o compilador a ser utilizado, portanto teste para ver qual o melhor a ser usado em cada caso. Note que cada linha de comando em C deve encerrar com ponto e virgula. Cuidado tambm para no colocar ponto e vrgula antes de uma chave, isto um erro. Exemplo:

Em seguida clique na opo Salvar, no menu Arquivo.

Salve o arquivo com o nome de teste.c

Agora vamos compilar o programa: Clique no menu executar, opo compilar.

Se nenhum erro acontecer aparecer a seguinte janela:

Para executar o programa pressione a opo executar no menu executar.

Uma janela DOS ser exibida com o resultado do seu programa.

a) Variveis As variveis so elementos que podem assumir vrios valores, tais como as vemos em matemtica. Por exemplo:

=
Nela podemos verificar o uso de 02 variveis: A varivel A representa a rea, cujo valor depende de r, o raio. O igual representa a operao de atribuio, de acordo com a mudana do valor de r, muda tambm o valor de A. b) CONSTANTE um valor que no pode ser modificado, ou seja, na expresso, seu valor fixo: Na expresso:

A expresso e o expoente 2 so constantes, pois seu valor no pode ser modificado na expresso. Uma varivel est preparada para assumir vrios valores, ela pode assumir um valor inicial, mas mais tarde poder assumir outro valor em conseqncia de uma nova atribuio.

I.

Tipos numricos Inteiros

Os dados numricos representam os conjuntos de valores que correspondem os nmeros naturais, inteiros e fracionrios (computadores no representam diretamente em sua memria nmeros complexos). Os tipos mais usados so: a. Inteiro Simples nmeros inteiros no fracionrios, positivos ou negativos, que no excedam o tamanho de 16 bits em sua representao: Exemplos:

- 45, -1, 0, 80, 90, 120, 890, 4569, etc.

Faixa para um inteiro simples:

-32768 at 32767, ou seja, nenhum inteiro possui mais que 16 bits de extenso, por isso a limitao finita do tipo.
Uma observao: Os tipos inteiros que permitem valores negativos reservam o primeiro bit para o sinal. Em Cl usamos a declarao

short int para esse tipo de varivel. Exemplo:

b. Inteiro longo nmeros inteiros no fracionrios, positivos ou negativos, que no excedam o tamanho de 32 bits em sua representao: Exemplos: - 4345, -31, 0, 480, 903, 120, 82390, 65345, etc. Faixa para um inteiro longo:

-2147483648 at 2147483647

Uma observao: Os tipos inteiros que permitem valores negativos reservam o primeiro bit para o sinal. Em C usamos a declarao

int para esse tipo de varivel. Exemplo:

Podemos combinar vrias declaraes de tipos de dados em um cdigo. Exemplo:

O programa acima soma dois nmeros inteiros guardados nas variveis a e b. Usamos a funo printf para som-los. A funo printf precisa identificar o tipo da varivel que ela deve armazenar. No nosso caso ela armazenar a soma na posio %d encontrada na expresso ente aspas.

%d dentro de uma funo printf indica que o nmero a ser exibido ser um inteiro.

possvel declarar e atribuir a expresso ao mesmo tempo.

Se voc usar a vrgula poder atribuir de forma simultnea a duas variveis:

ou declarar as variveis separando por ponto e vrgula:

Voc pode tambm usar sufixos na frente dos nmeros. Eles existem para impedir que variveis sejam tratadas incorretamente pelo compilador numa operao matemtica. Exemplo:

Observao: ao contrrio de outras linguagens de programao, C no inicializa as variveis com valores padres, ou seja, ao criar um inteiro no colocado zero na varivel e sim o valor contido na varivel quando alocada. No prximo exemplo o resultado da soma ser um valor enorme, pois a varivel no foi inicializada com zero e sim com um valor gigante, ou seja, 4206576 Exemplo:

A resposta ser:

II.

Tipos numricos Reais

O tipo real representa qualquer valor numrico que possua mantissa (vrgula decimal) e tanto podem ser negativos como positivos. C prev 02 tipos de dados a serem definidos como reais, de acordo com a necessidade de uso:

TIPO
Float Double

FAIXA 2.9e-39 a 1.7e38 5.0e-324 a 1.7e308

DGITOS 11 15

Note que o separador decimal o ponto, pois usada a notao inglesa.

A = 4.23454543453524525;
O Nmero pode ser escrito tambm em notao cientifica como:

= 4.23 12,
Exemplo:

Cujo valor real matemtico :

= 4,2310

%f dentro de uma funo printf indica que o nmero a ser exibido ser um inteiro.

Perceba que a funo sempre devolve o resultado com vrgula, e um certo nmero de casas decimais. Por padro as casas decimais so sempre 06 dgitos. possvel alterar isto:

%.nf dentro de uma funo printf indica que o nmero a ser exibido ser um inteiro e n o nmero de dgitos a serem exibidos na parte fracionria.

Uma varivel do tipo ponto flutuante pode ser declarada usando a palavra double. O tipo double oferece 15 dgitos significativos.

Operador de Atribuio

O operador de atribuio em C/C++ o

. Ele define que o valor da expresso

do lado direito ser atribudo a varivel do lado esquerdo da expresso. A atribuio sempre encerrada com ponto e vrgula. Exemplo 01:

A=
Exemplo 2:

2 + 6;

A=

2.3 + C;

C possui tambm outros operadores de atribuio, conforme a tabela abaixo:


Operador = += -= /= *= %= ^= &= |= X+=10 x-=10 X/=10 X*=10 X%=10 X^=10 X&=10 X|=10 Exemplo / significado X=y+z X= X+10 X= X 10 X=X/10 X=X*10 X=X%10 X=X^10 X=X&10 X=X|10 Significado ATRIBUIO SIMPLES ADIO SUBTRAO DIVISO MULTIPLICAO MDULO OU (XOR) EXCLUSIVO E (AND) BIT A BIT OU (OR) BIT A BIT

Exemplo:

Ter como resposta o valor 17.

Operadores Matemticos
Operadores matemticos so elementos funcionais que atuam sobre os elementos que compem uma expresso produzindo um determinado resultado. Os valores relacionados so chamados de operandos. Em C os operadores matemticos maus utilizados so: Operador Significado Exemplo

+ * / % SQRT(x) ++

Adio Subtrao Multiplicao Diviso flutuante Inverso de sinal Resto de diviso Raiz Quadrada Incrementa uma varivel em uma unidade

A = B +C A=B-C A=B*C A=B/C A = -B A=B%C A = SQRT (9) A++

--

Decrementa uma varivel em uma unidade

A--

Exemplo de uso dos operadores matemticos.

A resposta ser:

Tipo caractere
O Tipo caractere constitudo por uma seqncia de caracteres contendo letras, dgitos e smbolos especiais. Este tipo pode ser denominado por alfanumrico ou cadeia de caracteres. Deve ser sempre iniciada e terminada pelas aspas ou meia aspas quando apresentar apenas um caractere. No exemplo a seguir criaremos uma varivel para armazenar a letra ai e iremos imprimi-la na tela com a funo printf. %c dentro de uma funo printf indica que o valor a ser exibido ser um caractere.

Voc tambm pode usar %c com inteiros desde que seja um nmero menor que 255 para representar uma letra. Exemplo:

O exemplo imprime a letra A, porque 65 o cdigo ASCII desta letra. Quando queremos usar mais de um caractere teremos que definir uma matriz de caracteres. Suponhamos que desejemos imprimir a palavra Roma na tela. Para isso precisaremos armazenar espao suficiente para as letras na memria:
R Posio zero O Posio um M Posio dois A Posio trs \0 Posio quatro

A matriz tem 05 caracteres. Isto acontece porque precisamos indicar aonde a cadeia de letras termina. Isto feito pelo caractere especial \0 que indica fim de seqncia de letras. Para definir a matriz de caracteres usamos a seguinte sintaxe:
char tipo p varivel [n] Quantidade de letras

Veja um exemplo:

%s dentro de uma funo printf indica que o valor a ser exibido ser uma cadeia de caracteres. Note que preenchemos letra por letra na cadeia de caracteres. O ndice da matriz comeou em zero, a ltima posio 04. Toda matriz em C/C++ inicia-se em zero. claro que voc no precisa inicializar a varivel letra a letra, possvel fazer isto de duas formas:

No exemplo acima voc no precisa contar quantos caracteres a varivel ter uma vez que durante a atribuio ele realiza o processo de clculo do nmero de caracteres.

No exemplo acima usamos as aspas para a atribuio. A vantagem deste mtodo que voc no precisa definir \0, isto feito de forma automtica. Cuidado! No tente atribuir a varivel uma seqncia entre aspas, isto gera um cdigo de erro: Exemplo:

O cdigo acima ir gerar uma mensagem de erro. Para corrigir voc deve copiar letra por letra da matriz de caracteres. Para isso usaremos a funo strcpy () da biblioteca <string.h>

strcpy (char *srt1 , char *str2 ) - copia para a str1 o contedo de str2.
Caracteres especiais
Em C/C++ voc pode utilizar o Unicode para representar e utilizar caracteres especiais, como o <ENTER>, <ESC> e outros cdigos no imprimveis. Escape \b \n \t Significado Retrocesso Nova linha Tabulao

\r \\ \ \ \ddd \udddd

Retorno de carro Barra invertida Apstrofo Aspas Nmero em Octal Caractere Unicode

\xdd

Nmero em Hexadecimal

Regras de Precedncia
Regras de Precedncia definem que operaes sero executadas em primeiro em relao a outras dentro de uma expresso em pascal. A regra esta estabelecida conforme a tabela abaixo: (de maior para menor precedncia)
Precedncia 01 02 03 04 05 06 07 Operador ++ -*/ % ++ (CONCATENAO) & ^ | Associatividade Direita Esquerda Esquerda NO TEM ASSOCIATIVIDADE Esquerda Esquerda Esquerda

Veja o cdigo abaixo:

Repare que % e * tem a mesma associatividade de precedncia. A resposta ser:

O operador * foi executado antes do operador %.

A resposta ser:

Funes de Entrada de Dados de Console do C/C++ scanf( char *formato, [variveis]) entrada de dados segundo a mscara de informao A funo scanf permite que voc digite informaes a partir do console de acordo comum separador a ser utilizado. Exemplo: somar dois nmeros digitados pelo usurio:

& (smbolo do e comercial) indica que os valores digitados pelo usurio devem ser atribudos a varivel. Seu uso obrigatrio no scanf () se a varivel for numrica. %d avisa ao scanf que o valor a ser digitado inteiro. %f avisa ao scanf que o valor a ser digitado flutuante. %c avisa ao scanf que o valor a ser digitado um caractere. %s avisa ao scanf que o valor a ser digitado uma cadeia de caracteres. O exemplo a seguir faz que a primeira letra da palavra digitada seja exibida em maiscula:

No use o & quando a varivel for um caractere ou uma cadeia de caracteres. O scanf no trata corretamente o uso de espao em branco quando manipula textos. Se voc precisar digitar espao em branco no use scanf e sim a funo gets ().

gets (char *str) entrada de dados do tipo cadeia de caracteres. Exemplo:

ATIVIDADES 01 (cada atividade vale 2.5 pontos) 1. Escreva um algoritmo em C capaz de calcular a rea de qualquer figura geomtrica do tipo circunferncia.

=
2. Escreva um algoritmo em C capaz de calcular o dimetro de um crculo de qualquer figura geomtrica do tipo circunferncia.

3. Escreva um algoritmo em C capaz de calcular a rea de um retngulo e o permetro do mesmo.

= 2

= 2 + 2
4. Escreva um algoritmo em C capaz de calcular a posio de um objeto conforme a formula abaixo:

= + +

S0 a posio inicial

V0 a velocidade final T o tempo a a acelerao


Exerccios serem entregues em grupos de 02 alunos. (O formato de entrega digital, tipo arquivo pdf). Data de Entrega: 2 Semana.

AULA 02
Operadores Relacionais
Os operadores relacionais so utilizados sempre que se deseja efetuar comparaes entre objetos da mesma natureza. Usamos operadores relacionais sempre que estivermos estabelecendo ordens de grandeza entre variveis ou dados. O resultado sempre um valor lgico, TRUE (-1) ou FALSE (0).
Operador < > >= <= != == Significado Menor que Maior que Maior ou igual Menor ou igual Diferente Comparao Exemplo A<B A>B A>=B A<=B A <> B A=B

Operadores Lgicos
Operadores so aqueles cujo resultado da avaliao um valor lgico TRUE OU FALSE. Os operadores lgicos usados em C so: && (operador lgico E) - conhecido com soma lgica ou conjuno, nesta operao o resultado ser TRUE se os operandos forem TRUE, caso contrrio o resultado ser FALSE. A TRUE TRUE FALSE FALSE B TRUE FALSE TRUE FALSE A && B TRUE FALSE FALSE FALSE

|| (operador lgico OU) - conhecido com multiplicao lgica ou disjuno, nesta operao o resultado ser FALSE se os operandos forem FALSE, caso contrrio o resultado ser TRUE. A TRUE B TRUE A || B TRUE

TRUE FALSE FALSE

FALSE TRUE FALSE

TRUE TRUE FALSE

! (operador lgico No) - conhecido como negao lgica, nesta operao o resultado ser F se o operando for V, caso contrrio o resultados ser V se o operando for F. um operador unrio. A TRUE FALSE !A FALSE TRUE

Funes Pr-Definidas
O C/C++ oferece um conjunto de funes predefinidas (built-in functions), que so usadas com vrios tipos de dados simples. As funes, na maioria das vezes, necessitam de dados como parmetro (dados de entrada). Vejamos algumas dessas funes: Funo Matemtica acos (double num) Significado Devolve o arco do co-seno que deve estar entre -1 e 1 Devolve o arco do seno que deve estar entre -1 e 1 Devolve o arco da tangente que deve estar entre -1 e 1 Devolve o co-seno do ngulo dado em radianos Devolve o logaritmo natural de e elevado potncia expressa entre os parnteses. Considere e = 2.718282 Exemplo r = acos (0.3);

asin (double num)

r = asin (0.3);

atan (double num)

r = atan (0.3);

cos (double num)

r = cos (2);

exp (double num)

r = exp (5);

log e x

log10 (double num)

Devolve o logaritmo natural na base 10 elevado potncia expressa entre os parnteses.

r = log10 (2);

log10 x

Funo Matemtica sin (double num)

Significado Devolve o seno do ngulo dado em radianos Devolve a raiz quadrada do nmero dado > 0 Devolve a tangente do ngulo dado em radianos

Exemplo r = sin (2);

sqrt (double num)

r = sqrt (9);

tan (double num)

t = sin (2);

Exemplo: calcular a raiz quadrada de um nmero digitado pelo usurio.

Exemplo2: Algoritmo que calcula seno, cosseno, logaritmo natural e logaritmo neperiano de um nmero.

Controle de fluxo e execuo de um programa em C/C++


At o momento os programas que fizemos realizam apenas operaes simples de atribuio e entrada de dados. No entanto a prtica de programao tem mostrado executar diversas tarefas de acordo com o dado fornecido pelo usurio ao programa. Iniciaremos nosso estudo sobre controle de fluxo de dados atravs do estudo das estruturas de deciso:

Estrutura de Deciso
Neste tipo de estrutura uma condio deve ser satisfeita para que um bloco de cdigo seja executado. Uma condio sempre uma expresso lgica que de devolve TRUE ou FALSE.

ESTRUTURA IF ELSE
O comando IF ELSE permite efetuarmos um desvio bidirecional na lgica do programa, segundo uma determinada condio booleana. Observe a sintaxe:

No necessrio a chaves se apenas um comando executado no bloco, como tambm obrigatrio o uso do ponto e vrgula antes do ELSE. Cuidado para escrever os comandos de deciso sempre em letras minsculas ou o sistema ir apontar erro de sintaxe. Exemplo: Escrever um algoritmo que verifique se a idade digitada por um usurio maior que 18 anos, se isto for verdadeiro escrever que a pessoa maior de idade:

Exemplo 2: verifica o pressionamento de uma tecla vlida.

No programa acima esperamos que uma tecla seja pressionada e colocamos o resultado na varivel a. Se a letra digitada estiver entre os cdigos 65 e 90 (correspondente da letra A maiscula a letra Z minscula), a letra impressa com seu cdigo na tela, caso contrrio ser exibido uma mensagem de erro.

Exemplo 3: Escrever um algoritmo que dado o salrio bruto, calcular o imposto de 5% e o salrio liquido apenas se o salrio bruto maior que 1.200. Exibir o salrio e o imposto calculado.

ATIVIDADES 02 (cada atividade vale 2.5 pontos) Escrever usando a linguagem C os exerccios abaixo. 1. Faa um algoritmo que leia um n inteiro e mostre uma mensagem indicando se este nmero par ou mpar. 2. Faa um algoritmo que leia um n inteiro e mostre uma mensagem indicando se este nmero positivo ou negativo. 3. Faa um algoritmo que leia um n inteiro e mostre uma mensagem indicando se este nmero divisvel por 03 ou divisvel por 05. 4. Faa um algoritmo que leia um n inteiro e mostre uma mensagem indicando se este nmero divisvel por 02 e divisvel por 07. 5. Faa um algoritmo que leia um ano inteiro e mostre uma mensagem indicando se este ano ou no bissexto. 6. Faa um algoritmo que leia uma varivel numrica N e imprimi-la somente se a mesma for maior que o valor 100, caso contrrio imprimila com o valor zero. 7. Faa um algoritmo que leia duas variveis numricas e imprima qual delas o maior valor. 8. Faa um algoritmo que leia um ano inteiro e mostre a que sculo este ano pertence.

9. Faa um algoritmo que dado 03 notas digitadas pelo usurio, calcule a mdia aritmtica, se a nota maior que 05 escreva Aprovado, se for menor que 05, escreva reprovado. Imprimir o valor da nota aps a verificao. 10. Faa um algoritmo que digitado a altura (em centmetros) e o sexo de uma pessoa calcule seu peso ideal, utilizando as seguintes frmulas: Homens:

P = (72.7 altura) 58 P = (62.1 altura) 44.7

Mulheres:

Exerccios serem entregues em grupos de 02 alunos. (O formato de entrega digital, tipo arquivo pdf). Data de Entrega: 3 Semana

AULA 03
Controle de fluxo de deciso em C ESTRUTURA IF ELSEIF-ELSE
Como seu nome sugere, uma combinao de IF e ELSE. Da mesma forma que o ELSE, ele estende um comando IF para executar uma instruo diferente no caso de a expresso IF original ser avaliada como FALSE. Porm, ao contrrio do ELSE, ele executar aquela expresso alternativa somente se a expresso condicional do ELSEIF for avaliada como TRUE. Essa estrutura muito usada quando temos algoritmos que precisam controlar uma grande quantidade de condies em uma tabela. Elabore um algoritmo que dada idade de um nadador classifica-o em uma das seguintes categorias: CATEGORIA Infantil A Infantil B Juvenil A Juvenil B Adulto FAIXA DE IDADE 5 - 7 anos 8-10 anos 11-13 anos 14-18 anos Maior de 18 anos

Podemos reescrever as faixas de idade em notao Pascal para facilitar: CATEGORIA Infantil A Infantil B Juvenil A Juvenil B Adulto IDADE INVALIDA FAIXA DE IDADE (idade >=5 && idade <=7) (idade >=8 && idade <=10) (idade >=11 && idade <=13) (idade >=14 && idade <=18) (idade > 18) Idade < 5 (padro do ELSE)

Escrever as faixas em C facilita a codificao, simplificando a colocao posterior no cdigo. O Cdigo em C seria executado conforme a seguir:

ESTRUTURA SWITCH CASE


O comando SWITCH CASE permite efetuarmos um desvio multidirecional na lgica do programa. Ele consiste de uma expresso (chamada seletor) e uma lista de comandos, cada um deles precedido por constantes ou subintervalos separados por vrgulas (chamados rtulos de case), de mesmo tipo do seletor, que pode ser qualquer escalar ordenado (int, char). Sintaxe:

Exemplo: Fazer um algoritmo que dado 02 nmeros, calcular uma operao conforme o caractere selecionado, segundo a tabela: + X / soma subtrao multiplicao Diviso

ATIVIDADES 03 (cada atividade vale 2.5 pontos) Escrever usando a linguagem C os exerccios abaixo. 1. Um banco conceder um crdito especial aos seus clientes, varivel com o saldo mdio no ltimo ano. Faa um algoritmo que leia o saldo mdio de um cliente e calcule o valor do crdito de acordo com a tabela abaixo. Mostre uma mensagem informando o saldo mdio e o valor do crdito concedido. SALDO Zero a 200,00 201,00 a 400,00 401,00 a 600,00 601,00 a 900,00 901,00 a 1.200,00 Acima de 1.200,00 PORCENTUAL O% 20% 30% 35% 40% 50%

2. Fazer um algoritmo que dado os 03 lados de um triangulo informar o tipo de triangulo de acordo com a tabela abaixo:

LADOS A=B=C A <> B <> C A = B ou A = C ou B = C

TIPO EQUILATERO ESCALENO ISCELES

3. Elabore um diagrama de bloco que leia as variveis C e N, respectivamente cdigo e nmero de horas trabalhadas de um operrio. Calcule o salrio sabendo-se que ele ganha R$ 10,00 por hora. Quando o nmero de horas excederem a 40 calcule o pagamento da hora extra, armazenando-o na varivel E, caso contrrio zerar tal varivel. A hora excedente de trabalho vale R$ 20,00. No final do processamento imprimir o salrio total e o valor total da hora extra. 4. A Secretaria de Meio Ambiente que controla o ndice de poluio mantm 03 grupos de indstrias que so altamente poluentes do meio ambiente. O ndice de poluio aceitvel varia de 0,05 at 0,25. Se o ndice sobe para 0,3 as indstrias do 1 grupo so intimadas a suspenderem suas atividades, se o ndice crescer para 0,4 as indstrias do 1 e 2 grupo intimado a suspenderem suas atividades, se o ndice atingir 0,5 todos os grupos devem ser notificados a paralisarem suas atividades. Faa um algoritmo que leia o ndice de poluio medido e emita a notificao adequada aos diferentes grupos de empresas. Exerccios serem entregues em grupos de 02 alunos. (O formato de entrega digital, tipo arquivo pdf). Data de Entrega: 4 Semana.

AULA 04
Controle de fluxo: Estruturas de Repetio em C
So muitas as situaes em que se necessrio repetir um determinado bloco um determinado nmero de vezes. Por exemplo, numa folha de pagamento necessrio realizar o mesmo clculo e dedues para todos os funcionrios. As estruturas tambm so conhecidas como laos ou pela palavra em lngua inglesa chamada LOOP. As estruturas de repetio podem ser classificadas em dois tipos: condicionais e contados.

Laos Contados em C: FOR


So aqueles em que se sabe previamente o numero de vezes que sero executados. Estes laos possuem mecanismos que permitem definir com exatido o nmero de repeties do lao. A sintaxe em C :

Notas: 1. A varivel pode ser float ou int; 2. O incremento no necessita ser de 01, pode ser outro valor. 3. O ponto e vrgula separam os blocos do for 4. O comando deve ser escrito em minscula Exemplo 1: calcula a soma dos 1000 primeiros nmeros naturais

Exemplo 1: Imprime os 10 primeiros nmeros naturais em ordem decrescente:

possvel declarar mais de uma inicializao e incremento em um for usando vrgulas, porm no permitida mais de uma condio. Veja um exemplo:

Ateno! No coloque ponto e vrgula em fim de for, isto pode gerar um erro:

SOMATRIAS
Um dos usos clssicos dos laos de repetio em somatrias. Uma varivel recebe um valor que acumulado pelos valores do lao. Um exemplo:

Esta somatria muito sugestiva, pois transform-la em um algoritmo computacional simples. A soma inicia-se em 01 e termina em n. Em C a sua soluo seria da seguinte forma:

Controle de fluxo condicional em C


Utilizamos os comandos de repetio condicionais quando desejamos que um determinado conjunto de instrues seja executado um nmero definido ou indefinido de vezes. Sua semntica simples: Uma condio testada, enquanto ela for verdadeira o bloco executado, quando a condio no mais verdadeira o bloco encerrado e a execuo passa para a instruo seguinte ao bloco.

Comando while
O comando WHILE faz com que um comando seja executado enquanto a expresso de controle permanecer verdadeira (TRUE). Sintaxe:

A expresso que controla a repetio dever ser do tipo booleano, sendo a mesma avaliada antes que o comando do lao seja executado. Isto quer dizer que, se logo no incio o resultado da expresso for FALSE, o lao no ser executado nenhuma vez. Exemplo 01: somar um intervalo digitado pelo usurio. Poderamos fazer isso usando o FOR, porm aqui utilizaremos a estrutura WHILE.

Comando do while
A prxima estrutura conhecida como faa enquanto. O bloco de comandos ser executado enquanto uma condio seja satisfeita. Difere do Enquanto porque ele obriga que o bloco seja executado pelo menos uma vez. Sintaxe:

A expresso que controla a repetio dever ser do tipo booleano, sendo a mesma avaliada antes que o comando do lao seja executado. Isto quer dizer que, se logo no incio o resultado da expresso for FALSE, o lao no ser executado nenhuma vez. O mesmo exemplo apresentado com o WHILE, agora escrito usando o Do While:

Saindo dos laos: break


Para sair de um lao utilize a expresso break; int resp; for (int i ; ; i ++) { // lao infinito resp + = i;

if (i == 100) // sai do lao se i = 100 break; }

Instruo continue
Haver ocasies em seu programa que voc desejar pular a interao atual e passar para a seguinte. A instruo continue faz exatamente isso. Exemplo: (exibir somente pares menores que 100) int resp; int i ; i = 1; do { if (i % 2 != 0) continue; i++; } while (i == 100) ; // sai do lao se i = 100

ATIVIDADES 04 (cada atividade vale 2.5 pontos) Escrever usando a linguagem Pascal os exerccios abaixo. 1. Faa um algoritmo que calcule a soma dos 100 primeiros nmeros naturais. 2. Escreva um algoritmo que leia 12 valores e encontre o maior deles. Mostre o resultado na tela. 3. Escreva um algoritmo que leia 12 valores e encontre o menor deles. Mostre o resultado na tela. 4. Escreva um algoritmo que sorteie 40 valores e encontre o menor e o maior valor sorteado. Mostre o resultado na tela. 5. Escreva um algoritmo que analise os nmeros de 01 at 12000 e escreva aqueles que dividido por 11 do resto igual a 5. 6. Escreva um algoritmo que calcule e mostre a mdia aritmtica de 30 nmeros digitados pelo usurio. 7. Escreva um algoritmo que calcule e mostre a soma e o produto de 10 nmeros digitados pelo usurio. 8. Escreva um algoritmo que calcule o fatorial de um nmero dado:

( = ! 1) ( 2) 1

9. Escreva um algoritmo que calcule a seguinte somatria:

+1
10. Escreva um algoritmo que calcule a seguinte somatria:

2 1
11. Escreva um algoritmo que calcule a seguinte somatria:

2 3 4 5 6 +1 =+ + 1 2 3 4 5
Exerccios serem entregues em grupos de 02 alunos. (O formato de entrega digital, tipo arquivo pdf). Data de Entrega: 5 Semana.

AULA 05
ESTRUTURA DE DADOS TIPO ARRAY
Um array um tipo de dado estruturado consistindo de um nmero fixo de componentes, todos do mesmo tipo. Cada componente de um array pode ser explicitamente acessado atravs de um ndice. As variveis desse tipo se subdividem em duas categorias, as unidimensionais (tambm chamados de vetores), e as multidimensionais, a depender do nmero de ndices usados para individualizar cada elemento do conjunto. Os arrays bidimensionais so comumente chamados de matrizes, onde no primeiro ndice visualizamos como sendo as linhas de uma tabela, e o segundo ndice, as colunas. Declarao do Tipo Array A definio de um tipo array feita de acordo com a seguinte sintaxe:

Exemplos de declarao:

Leitura e Impresso de Arrays A leitura e impresso de arrays so feitas indicando individualmente quais elementos se desejam ler ou imprimir. A forma mais fcil percorrer a matriz usando uma estrutura de repetio, sendo a mais usada a estrutura FOR. Note que ao contrrio de Pascal, o ndice comea sempre na posio zero, a ltima posio o tamanho da matriz menos 1, como no vetor de 5 elementos abaixo 23 A [0] 18 A [1] 67 A [2] 5 A [3] 19 A[4]

Se o vetor pequeno podemos declar-lo diretamente, sem a instruo scanf para preench-lo.

Exemplos 2: Somar os valores digitados das 05 posies do exemplo anterior:

Voc manipula matrizes de forma semelhante a cadeia de caracteres. Vejamos um exemplo:

Para preencher a matriz mova-se elemento por elemento:

Um exemplo usando matriz de 02 linhas por 04 colunas:

ATIVIDADES 05(cada atividade vale 2.5 pontos) Escrever usando a linguagem C os exerccios abaixo:

1. Escreva um algoritmo que l um conjunto de 30 valores e os coloca em 02 vetores conforme forem pares ou mpares. O tamanho do vetor de 05 posies. Se algum vetor estiver cheio, escrev-lo. Terminada a leitura escrever o contedo dos dois vetores. 2. Escreva um algoritmo que leia dois vetores de 10 posies e faa a multiplicao dos elementos de mesmo ndice, colocando o resultado em um terceiro vetor. Mostre o vetor resultante. 3. Escreva um algoritmo que leia um vetor de 20 posies e mostre-o ordenado em ordem crescente. 4. Reescreva o exerccio anterior para 100 posies e preenche-os com valores sorteados entre zero e 500. 5. Escreva um algoritmo que leia um vetor de 80 elementos inteiros. Encontre e mostre o menor elemento e sua posio no vetor. 6. Faa um algoritmo que inverta os valores de um vetor de 20 posies 7. Faa um algoritmo que calcule o produto de todos os elementos que compem um vetor. 8. Faa um algoritmo que calcule a soma dos elementos de dois vetores de mesmo tamanho e os exiba na tela. Exerccios serem entregues em grupos de 02 alunos. (O formato de entrega digital, tipo arquivo pdf). Data de Entrega: 5 Semana.

AULA 06
Procedimentos e funes em C
Funes so blocos de construo em C / C++ onde toda a atividade do programa ocorre. A forma de especificao de uma funo : Tipo retornado nomedafuno (lista de argumentos passados a funo) obrigatria na funo a palavra return, que indicar o valor de retorno da funo. Uma funo pode ter mais de uma palavra return, porm em blocos distintos. Para cada funo necessrio criar um prottipo. Os prottipos so utilizados no incio do cabealho de programa C / C++ como uma forma do compilador testar os argumentos passados para uma funo. O Compilador checa a funo com o prottipo em busca de erros de sintaxe. Eis um exemplo de funo:

Uma variao da funo com o uso de mais de um return.

Para criar um procedimento (funo que no retorna nenhum valor) usar a palavra void. Exemplo:

Nota: ao utilizar void no podemos usar dentro da funo palavra return.

Chamada por valor numa funo


Quando voc passa uma cpia do valor na lista de argumentos. No possvel modificar o valor do argumento ao modificar o parmetro. Exemplo:

Chamada por referncia


O valor passado para a funo na lista de argumento pode ser alterado. Basta passar o parmetro como ponteiro do valor a ser modificado. Exemplo:

ATIVIDADES 06(cada atividade vale 2.5 pontos) Escrever usando a linguagem C os exerccios abaixo, usando funes. Faa uma funo que recebe por parmetro o raio de uma esfera e calcula o seu volume.

=
2. Escreva um procedimento que recebe as 3 notas de um aluno por parmetro e uma letra. Se a letra for A o procedimento calcula a mdia aritmtica das notas do aluno, se for P, a sua mdia ponderada (pesos: 5, 3 e 2) . A mdia calculada tambm deve retornar por parmetro. 3. Faa uma funo que recebe por parmetro um valor inteiro e positivo e retorna o valor lgico Verdadeiro caso o valor seja primo e Falso em caso contrrio. 4. Faa um procedimento que recebe por parmetro os valores necessrios para o clculo da frmula de Bskara e retorna, tambm por parmetro, as suas razes, caso seja possvel calcular.

5. Faa uma funo que recebe por parmetro o tempo de durao de uma fbrica expressa em segundos e retorna tambm por parmetro esse tempo em horas, minutos e segundos. 6. Faa uma funo que recebe a idade de uma pessoa em anos, meses e dias e retorna essa idade expressa em dias. 7. Faa uma funo que recebe um valor inteiro e verifica se o valor positivo ou negativo. A funo deve retornar um valor booleano. 8. Faa uma funo que recebe um valor inteiro e verifica se o valor par ou mpar. A funo deve retornar um valor booleano. 9. Faa um procedimento que digitado a altura (em centmetros) e o sexo de uma pessoa calcule seu peso ideal, utilizando as seguintes frmulas: Homens:

P = (72.7 altura) 58 P = (62.1 altura) 44.7

Mulheres:

10. Faa um procedimento que recebe, por parmetro, um valor N e calcula e escreve a tabuada de 01 at N. Exerccios serem entregues em grupos de 02 alunos. (O formato de entrega digital, tipo arquivo pdf). Data de Entrega: 7 Semana.

AULA 07
Estruturas e enumeraes em C
Enumeraes em C Usamos enumerao quando queremos dizer ao compilador quais os valores que uma determinada varivel pode assumir. Sua forma geral :

Vamos considerar o seguinte exemplo:

O valor impresso ser 0 pois dlar o primeiro valor da lista e assim de forma sucessiva. ESTRUTURAS EM C Uma estrutura agrupa vrias variveis numa s. Funciona como uma ficha pessoal que tenha nome, telefone e endereo. A ficha seria uma estrutura. A estrutura, ento, serve para agrupar um conjunto de dados no similares, formando um novo tipo de dados. Para se criar uma estrutura usa-se o comando struct. Sua forma geral :

Vejamos um exemplo:

A estrutura extremamente semelhante a uma classe em Java, apenas no contm mtodos. Voc pode tambm preencher cada uma das variveis com scanf. Exemplo:

possvel criar uma matriz de estruturas. Veja um exemplo:

ATIVIDADES 07(cada (cada atividade vale 2.5 pontos) Escrever usando a linguagem C os exerccios abaixo, usando estruturas ou enumeraes. 1. Monte te a seguinte estrutura e crie um programa para preencher e exibir os dados:

Restaurante int mesa; double valor; int pessoas;

2. Crie a seguinte estrutura e crie um programa para preencher e exibir os dados:

Aluno int num; char nome[60]; int nota;

O programa deve permitir preencher uma matriz de 20 alunos.

Exerccios serem entregues em grupos de 02 alunos. Exerccios (O formato de entrega digital, tipo arquivo pdf). Data de Entrega: 8 Semana.

AULA 08
Classes em C++
No sentido simples, uma objeto uma entidade do mundo real. Quando se cria um programa, tenta-se ao mximo escrever rotinas genricas que manipulem operaes distintas. Um objeto arquivo ter diversas funes como ler, gravar, imprimir etc. Podemos dizer que a orientao a objetos significa organizar o mundo real como uma coleo de objetos que incorporam estrutura de dados e um conjunto de operaes que manipulam estes dados Mas o que so Objetos? So coisas tangveis, que podem ser tocadas. Exemplo: o livro Violetas na Janela. Incidentais: ocorre num espao tempo (evento x ocorrncia).Exemplo: a Copa das Confederaes. Interativas: acontecem em termos de transao ou contrato: o dbito de R$100,00 na conta x do dia 11/8/1999. Pode-se ento entender o objeto como sendo uma estrutura de dados que armazena o estado (valores dos atributos), e operaes que definem o comportamento desta estrutura regendo essas mudanas de estado atravs da passagem de mensagens com outros objetos.

EXEMPLO

Em C/C++ os objetos so definidos em termos de classe. Uma classe nada mais que a definio io de um objeto em termos de operaes (funes) e dados manipulados (variveis). Para programadores um objeto uma coleo de dados e os mtodos so as operaes que manipulam os dados. A Programao Orientada a Objetos (OOP) normalmente fornecem estruturas estruturas que permitem agrupar os dados e mtodos em classes definidas como variveis. Vejamos um exemplo de classe sendo definida em C++. Partindo de um diagrama UML abaixo: (No exemplo iremos ignorar o conceito de construtores e destrutores).

Media private float a private float b public setAB (float x, float y ) public float getMedia()

Podemos escrever o cdigo da classe conforme abaixo:

A rotina principal que executar a classe ser:

NOTAO DE CLASSE
interessante que antes de comear um programa em C++ voc modele conceitualmente a classe em papel. Um exemplo. Vamos fazer um modelo visual da classe Circulo.

No exemplo acima, voc determina claramente os elementos que compem a classe dividindo em atributos e mtodos que compem a classe. medida que seu cdigo em C++ crescer a complexidade tambm aumenta, um bom planejamento visual das classes permite que o cdigo evolua a partir de uma base conceitual slida. Vejamos um pequeno programa C++ desenvolvido usando esses conceitos. Nesses exemplos tambm demonstraremos mais algumas caractersticas da programao OOP em C++.

VISUAL C++
Visual C++ a ferramentas para o desenvolvimento rpido de aplicaes para Windows. Os usurios podero desenvolver aplicaes de 32 bits do tipo console (DOS) quanto quelas que utilizam a GUI (interface grfica).

Ele permite criar interfaces de usurio e de sistema de maneira rpida e simples, somente arrastando e soltando seus componentes sobre o formulrio que se est criando. Estes componentes podem ser botes, menus. Quadros de dilogo, etc. O procedimento consiste em colocar os componentes que faro parte da aplicao e da interface do usurio sobre o formulrio de trabalho. Voc poder selecionar estes componentes por intermdio das guias correspondentes e inspecionar suas propriedades atravs do inspetor de objetos.

Desenvolvendo um projeto em C++


Vamos comear desenvolvendo um projeto em C++ que some calcule a soma de 02 valores a serem digitados pelo usurio e calcula-se a sua mdia. Nosso Projeto possuir uma classe chamada Media numrica. Usarei este nome do lugar de Mdia porque j existe uma classe chamada Media em Visual C++ e o nome iria conflitar com a classe existente, dando erro de ambiguidade MediaNumerica Float a Float a + setA ( float a) + setB ( float b) + setAB( float a, float b) + float Aritmetica()

Inicie criando um projeto em C++:

Na janela apresentada selecione um novo projeto em uma pasta conforme o desejado e tome apenas cuidado de gravar em arquivo de disco rgido, pois normalmente discos removveis so lentos em termos de compilao. Normalmente o nome do Projeto inicia sempre com o termo prj, siga esta nomenclatura para facilitara criao dos seus projetos em C++. No esquea de selecionar Windows Forms Application, antes de criar o projeto.

Se voc seguiu corretamente as coisas at aqui, ir obter o seguinte resultado:

Vamos agora cria a nossa classe. A linguagem C++ possui um passo a passo que facilita a criao da classe evitando a necessidade de se criar uma quantidade absurda de cdigo na mo.

Para isso selecione uma nova classe conforme o passo abaixo: (Menu Project, add class)

Uma janela ser aberta, pressione o boto add para adicionar a classe.

Preencha a janela seguinte com as informaes da classe e clique em finish: (desmarque a opo managed).

Lembre-se que aqui se aplica as mesmas regras de Java, a classe deve iniciar com letra maiscula. (cuidado em evitar que os arquivos de extenso h e cpp tenham o mesmo nome da classe para que no haja erro, no meu caso, escrevi ambos em

minsculas). Se aparecer uma mensagem de erro de chamada a procedimento ignore-a, ela devido ao IE8 instalado na mquina. Feche a janela de gerao de classes e abra o arquivo media.h clicando nele com o mouse.

Note que a estrutura bsica da classe esta pronta, vamos agora adicionar nossas propriedades e mtodos, deixe como se encontram o destrutor e o construtor.

Agora iremos modificar o arquivo media de extenso cpp, onde esto escritos os nossos mtodos:

Aqui seguimos os mesmos princpios da linguagem Java, o uso do operador de alcance para acessar a varivel ou o mtodo, isto permite que as variveis de parmetro possam ter o mesmo nome que as propriedades da classe. No Java usamos a palavra this, em C++ usamos o prprio nome da classe.

A diferena apenas de notao: (Supondo que a classe se chama Media, conforme o exemplo seguinte) JAVA C++

Vamos agora o formulrio de desenho e criar a janela que ir conter os elementos visuais a serem usados para passar os valores na nossa classe:

Acesse a caixa TOOLBOX e crie duas caixas de texto dentro do formulrio (use o mesmo principio de desenho da IDE do Delphi), usando o componente TextBox

A tela ficar conforme abaixo:

Cada objeto selecionado aparece com contorno e a caixa de dilogo PROPERTIES permite que voc altere as propriedades do objeto criado no formulrio. NO exemplo acima a caixa de texto selecione apresenta as seguintes propriedades:

Localize a propriedade Name dos objetos das caixas de texto e altere para A e B

Altere a propriedade Text de ambas as caixas para 0. Altere tambm TextAlign para direito:

O resultado final ser:

Adicione um boto agora para calcular a Mdia:

Altere a propriedade Name para cmdMedia e acrescente o texto Mdia na propriedade Text.

O resultado visual ser:

Acrescente um label para armazenar a resposta da Mdia.

Altere a propriedade Name para lbResp e acrescente o texto Mdia= na propriedade Text e a propriedade AutoSize para False.

O resultado visual ser:

Vamos agora acrescentar a nossa classe Media ao formulrio para que ele possa us-lo. Com o boto direito clicado em alguma rea livre do formulrio acesse a opo view code.

Logo aps a primeira linha azul d programa inclua o arquivo de cabealho que contm a sua classe:

Volte para Form1.h(Design),e selecione o boto que ir calcular a mdia.

Procure pelo boto de eventos na caixa de dilogo propriedades: (o smbolo de raio)

Procure na lista o evento click.

De dois cliques com o mouse onde o cursor esta piscando para que ele crie o evento click para o boto selecionado.

Dentro das chaves iremos agora escrever o cdigo que ir calcular a mdia.

Pronto agora s executar o programa.

Funes de Converso da Biblioteca Convert em Visual C++ Essa classe retorna um tipo cujo valor no equivale ao valor de um tipo especificado. Os tipos de base com suporte so Boolean, Char, SByte, Byte, Int16, Int32, Int64, UInt16, UInt32, UInt64, Single, Double, Decimal, DateTime e String. Um mtodo de converso existe para converter cada Tipo base para todos os outros tipos base. No entanto, a chamada real para um mtodo de converso especfica pode produzir um dos quatro resultados, dependendo do valor do tipo base em tempo de execuo e o tipo de base de destino. Para usar as funes de converso necessrio incluir a biblioteca com a seguinte chamada em arquivo cpp:

Abaixo as funes mais comuns usadas em tabela: Funo Convert::ToChar(); Convert::ToDouble(); Convert::ToSingle(); Convert::ToInt16(); Descrio Converte para char[] o texto Converte para double o texto Converte para float o texto Converte para long int o texto (16 bits) Convert::ToInt32(); Converte para long int o texto (32 bits) Convert::ToInt64(); Converte para long int o texto (64 bits) Convert::ToString(); Converte para texto o nmero

Os Tipos de Classe Button, TextBox e Label suportam as seguintes propriedades: Funo Name Descrio Define o nome do objeto, no pode estar em branco Text Define o contedo do Texto a ser exibido no componente AutoSize Detrmina se o componente redimensionar seu tamanho em funo da propriedade Text, o padro true podendo ser tgambm false TextAlign Determina a posio do texto no componente, pode ser:

Funo

Descrio TopLeft:alinhado a esquerda MiddleLeft:alinhado a esquerda no centro BottomLeft: alinhado a esquerda em baixo TopCenter: centralizado a direita MiddleCenter: centralizado no meio BottomCenter: centralizado em baixo

Font

Determina o tipo de fonte a ser usado no componente

BorderStyle

Determina o tipo de borda a ser usado pelo componente, podendo ser: FixedSingle: borda 2D Fixed3D: borda 3D

Enabled

Se o componente est habilitado, aparecendo em cinza ou no. Aceita as opes true ou false

BackColor ForeColor Width Height Top

Define cor de fundo do componente Define a cor do texto no componente Define a largura do componente Define a altura do componente Posio vertical do componente no formulrio

Left

Posio horizontal do componente no formulrio

ATIVIDADES 08(cada atividade vale 2.5 pontos) Escrever usando a linguagem Visual C++ os exerccios abaixo, usando classes. Desenvolva o seguinte projeto UML especificado abaixo: Projeto de Controle Escolar: Tem por objetivo desenvolver uma classe em C++ que represente um aluno. A Entrada de Dados ser feita atravs de um formulrio especificado no projeto.

Diagrama UML:

Aluno
- String nome - Double nota1 - Double nota2 - Double nota3 - Double media

Form1
- TextBox cxNome - TextBox cxNota1 - TextBox cxNota2 - TextBox cxNota3 - Label lbMedia - Button cadastra - Button listar

+ void cadastrarAluno() + void listarAluno() + void situao ()

Eventos: Cadastra: Clique Listar: Clique

CLASSE ALUNO Mtodo Cadastrar Aluno Descrio Ler e inserir dados nos atributos nome, nota1, nota2, nota3. Inicializa media com zero Listar Aluno Situao Apresenta o contedo dos atributos Calcula a mdia das 3 notas e armazena no atributo media. Verifica se a mdia final igual ou superior a sete e apresenta mensagens de aluno aprovado ou reprovado concatenando o nome e a mdia final na mensagem.

Observao: as respostas devem ser colocadas nos campos da classe Form1, que criada durante o projeto e onde voc desenha o formulrio. Para efeito de UML ela considerada uma classe no desenho do projeto. O desenho final do formulrio de responsabilidade do aluno.

Exerccios serem entregues em grupos de 02 alunos. (O formato de entrega digital, tipo arquivo pdf). Data de Entrega: 9 Semana.

AULA 09 Desenvolvendo projetos de classe em visual C++ - Uso de Formulrios


Projeto: calcular a Soma de uma lista de nmeros digitados em uma classe atravs de um formulrio. Vamos comear com o diagrama UML da classe que ir receber os valores:

Lista
- ListBox lista;

+ SetLista ( ListBox lista) + void Add (TextBox t) + String Somar


Esta classe possui apenas um atributo, um ListBox, que ir conter os valores a serem recebidos pela classe. CLASSE LISTA Mtodo Add Descrio Insere um nmero na lista recebendo como parmetro um objeto de texto do formulrio Somar L a lista e calcula a soma dos nmeros, retorna uma String contendo a soma dos nmeros SetLista Define um valor padro para a lista, recebido do formulrio Vamos comear criando o projeto:

Vamos agora adicionar uma classe a esse Projeto chamada lista, conforme a figura seguinte:

A nossa class esta criada, porm devemos modific-la agora. Veja como o arquivo lista de extenso h se encontra:

Vamos modific-lo. Primeiro indicaremos que queremos que esta classe seja capaz de referenciar objetos ou receb-los a partir de um formulrio. Para isso tornaremos esta classe referencivel. Para isso faa a seguinte modificao:

Agora iremos criar o atributo lista dentro da classe Lista, para tal precisaremos cham-lo a partir de uma biblioteca esttica do visual C++ usando espaos de nomes.

A codificao dos mtodos dentro da classe ficar da seguinte forma:

Percebe-se que o acesso a um ListBox se da atravs do uso do mtodo Items. Suas propriedades permitem adicionar, remover e contar quantos elementos h na lista. Mtodo em Items-> Count Descrio Quantidade de Items dentro da lista

Mtodo em Items-> Add( String^ x) Clear () Remove (Object^ value)

Descrio Adiciona um texto a lista Remove todos os elementos da lista Remove elemento da lista, normalmente o elemento selecionado

Mtodo (obj um Listbox) Obj->SelectedItem()

Descrio Retorna o objeto selecionado, normalmente usado em conjunto com Items->Remove () para remover um item da lista

Agora vamos desenhar o formulrio, conforme especificado no diagrama abaixo:

Form1
+ Textbox cxNum + Listbox numero +Button Add +Button Remover + Button Somar + Label lbResp

Eventos: Add: Clique Remover: Clique Somar: clique

Evento Add

Descrio Chama o objeto e adiciona o contedo de cxNum para a lista

Remover Somar

Remove o item selecionado na lista; Apresenta o resultado da soma em lbResp

Sabendo a estrutura do formulrio agora basta que ns desenh-lo, um aspecto possvel o que se encontra abaixo:

Algumas propriedades que voc pode definir na caixa de texto esto definidas abaixo: CLASSE TEXTBOX Mtodo Maxlength Descrio Mximo de caracteres que podem ser digitados na caixa, o maior valor 32767. MultiLine Permite que a caixa possua mais de uma linha de digitao, por padro o valor false. PasswordChar Define um caractere que ser usado no lugar do caractere digitado ao ser exibido no formulrio. Normalmente usamos * quando queremos simular entrada de senha. CharacterCasing Permite definir se entrada de dados ser normal, maiscula ou minscula.

Vamos agora programar o formulrio para reconhecer a nossa classe lista. Como no exemplo do capitulo anterior acrescente-a no bloco inicial do formulrio:

Vamos agora referenciar um objeto na nossa classe que fique visvel em todo o formulrio. O melhor local aps a instruo abaixo:

Qualquer varivel declarada aps endregion visvel em todo o formulrio, ou seja, uma varivel privada do formulrio. Agora vamos fazer nossa classe apontar para a lista do formulrio, assim o que fizermos na classe afetar visualmente a lista do formulrio. O melhor local para isso o evento Load do formulrio Form1, que voc deve adicionar da mesma forma que na aula anterior:

O gcnew uma instruo de alocao de memria, ela permite criar o objeto na memria para voc utiliz-lo, voc pode at no us-lo, no haver erro de compilao, porm ao executar o programa que faa alguma referencia ao objeto criado pela classe teremos problemas de referencia a um objeto nulo, portanto acostume-se a usar o gcnew, mesmo porque ele tambm usado para chamar qualquer outro tipo de objeto, inclusive objetos do prprio Visual C, como formulrios por exemplo. Lista () um construtor que voc definiu na sua classe, ele est em branco no momento, voc poderia modific-lo se quisesse, porm comum deix-lo em branco em C++, ao contrrio da linguagem Java que comum adapt-lo as nossas necessidades. Note que agora ns usaremos na classe o smbolo de indireo, pois a definimos como ponteiro atravs do smbolo (

^).

Vamos agora criar o evento clique do boto Add:

Acostume a usar a instruo Focus () para posicionar o cursor em um objeto, facilita o preenchimento do mesmo. Se voc executar o cdigo ir perceber que a medida que eu altero os valores da classe acabo refletindo estas mudanas no formulrio, devido a integridade referencial entre os objetos da classe e os do formulrio, que apontam para a mesma coisa. Esta a beleza da linguagem C++ e da linguagem Java ( alis Java compilado em C++). Vamos agora programar a rotina do boto somar:

As duas rotinas esto prontas. Agora iremos programar o boto remover. Nesta rotina no iremos usar a classe, mas como ela referencia a lista do formulrio ir perceber qualquer mudana que acontea na lista.

ATIVIDADES 09(cada atividade vale 2.5 pontos) Escrever usando a linguagem Visual C++ os exerccios abaixo, usando classes. No projeto desenvolvido na aula, acrescente na classe Lista os seguintes mtodos: Mtodo que limpe os nmeros contidos na lista; Modifique o mtodo Add para que no permita nmeros menores que zero ou valor que no sejam nmeros. Mtodo que mostre a soma dos nmeros pares e dos nmeros impares

Mtodo que preencha a lista com nmeros primos menor que o nmero digitado na caixa de texto do formulrio. Crie um novo boto para isso. Exerccios serem entregues em grupos de 02 alunos. (O formato de entrega digital, tipo arquivo pdf). Data de Entrega: 10 Semana.

AULA 10 Desenvolvendo projetos de classe em visual C++ - Uso de Formulrios


Projeto: Criar um relgio em tempo real. Este projeto ir desenvolver um relgio em C++ usando um temporizador e acesso a classe de Manipulao de Data e Hora. Vamos comear com o diagrama UML da classe que ir receber os valores:

Relogio
- Label horario - int hh -int mm - int ss +void setRelogio ( Label r) + void SetHora(DateTime t) + String avancar

Esta classe possui apenas um atributo, um Label que ir conter o horrio na classe. Os demais atributos controlam hora, minutos e segundo CLASSE LISTA Mtodo Avancar SetHora Descrio Avana em 1 segundo o relgio Define um valor padro para o horrio recebido do formulrio, os valores sero atualizados nas variveis hh, mm e ss contidos na classe, de acordo com a lgica de funcionamento dos ponteiros de um relgio. setRelogio Referencia o label que aponta para o horrio a ser mostrado no formulrio, toda alterao feita em horrio ser exibida no formulrio Vamos comear criando o projeto:

Criar a classe Relogio bsica usando o passo a passo no menu Project, add class

Temos agora a nossa classe base, como se encontra escrito no arquivo relgio de extenso h:

Vamos agora modific-lo para receber a nossa classe:

Classe DateTime: A classe DateTime inclui recursos para calcular e obter horas, minutos, segundos e fraes de segundo. Alm disso, esta classe fornece suporte bsico a fusos horrios. O tipo de valor DateTime representa datas e horas com valores que variam de 12: 00:00 meia-noite, 1 de janeiro, 0001 Anno Domini (era comum) at as 11:59:59 horas, dezembro 31, 9999 DC.

Valores de tempo so medidos em unidades de 100 nano segundos chamados ticks (pulsos), e uma data especfica o nmero de tiques desde a meia noite de 01 de janeiro do ano 01 no calendrio Gregoriano. Por exemplo, um valor em pulsos de 31241376000000000L representa a data de sexta-feira, 0100, dia 12. Um valor de DateTime sempre expresso no contexto no calendrio padro. O valor real DateTime independente da maneira na qual esse valor aparece quando exibidas em um elemento de interface do usurio ou quando gravados em um arquivo. A aparncia de um valor DateTime o resultado de uma operao de formatao. Formatao o processo de converter um valor em sua representao de Cadeia de Caracteres. Como a aparncia dos valores de data e hora dependente de fatores como cultura, de padres internacionais, requisitos do aplicativo e preferncia pessoal, a estrutura DateTime oferece uma grande quantidade de flexibilidade na formatao valores de data e hora por meio de sobrecargas de seu mtodo ToString. O mtodo padro DateTime::ToString() retorna a representao de seqncia de caracteres de uma data e valor de tempo usando da cultura atual de data curto e longo tempo padro. Descries dos valores de hora no tipo de DateTime so geralmente expressos usando o padro Tempo Universal Coordenado (UTC), que o nome reconhecido internacionalmente de Greenwich (GMT). Tempo Universal Coordenado hora, medida em zero longitude graus, o ponto de origem UTC. Horrio de vero no aplicvel ao UTC. As propriedades mais usadas em DateTime so abaixo referenciados: CLASSE DATETIME Propriedade Hour Minute Second DayOfWeek DayOfYear Millisecond Month Descrio Retorna a hora da data, um valor entre 0 e 23 Retorna o minuto da data, no formato de 0 a 59 Retorna o Segundo da data, no formato de 0 a 59 Retorna o dia da Semana, de 0 a 6 onde 0 domingo Retorna o nmero do dia a partir de 1 de janeiro da data Retorna o milissegundo da data, no formato de 0 a 1000 Retorna a Ms da data, um valor entre zero e 11, onde zero janeiro Year Day Now NowUTC Retorna o ano da data, um valor entre zero e 9999 Retorna o dia da data, um valor entre 01 e 31 Retorna a Data do Sistema armazenado pelo Windows Retorna a Data do Sistema armazenado pelo Windows no

CLASSE DATETIME Propriedade Descrio horrio de Londres (UTC) Programando os mtodos da classe escolhida no arquivo relgio de extenso cpp:

Agora vamos desenhar o formulrio de acordo com o diagrama proposto:

Form1
+ Timer t + Label mostrador Eventos: Form1: load T: Pulso (Tick)

Para desenhar o formulrio usaremos a classe Timer, que um temporizador contendo as informaes necessrias para a execuo de uma rotina em um determinado intervalo de tempo. Procure no Toolbox por esse componente:

Ao arrast-lo para o formulrio, perceba que ele no um componente visual e permanecer abaixo do formulrio:

As propriedades que iremos modificar do Timer sero as seguintes:

CLASSE TIMER Propriedade Enabled Descrio Informa se o temporizador se encontra ativado ou no, por padro false, para ativ-lo mude o valor para true Interval O perodo em milissegundos em que o temporizador executado, por padro 100, um segundo equivale a 1000 Name Nome do temporizador

Altere o nome do temporizador para T e mude o valor de Interval para 1000. Acrescente o label no formulrio que ser nosso mostrador, deixe com o texto padro de 00:00:00.

Agora iremos adicionar a nossa classe no Form1 para podemos us-la:

Agora vamos criar a varivel para ser usada no formulrio:

Criar o evento Load do Form1 e iniciar a nosso objeto:

Agora vamos programar o evento Tick do nosso temporizador:

Nele iremos programar o uso da classe para acionar o relgio:

Ao executar o programa teremos um relgio digital funcionando dentro do nosso sistema. ATIVIDADES 10(cada atividade vale 2.5 pontos) Escrever usando a linguagem Visual C++ os exerccios abaixo, usando classes. No projeto desenvolvido na aula, acrescente na classe Lista os seguintes mtodos: Mtodo que exiba a data do sistema e usar um novo label dentro do formulrio para exibir a resposta. Modifique o mtodo acertar para que os nmeros menores que 10 tenham um zero exibido a esquerda.

Mtodo que mostre quantos dias se passou desde o inicio do ano, usar um label no formulrio para exibir a resposta. Mtodo que verifique se o ano bissexto, usar um label no formulrio para exibir a resposta. Mtodo que verifique qual o dia da semana, usar um label no formulrio para exibir a resposta.

Exerccios serem entregues em grupos de 02 alunos. (O formato de entrega digital, tipo arquivo pdf). Data de Entrega: 11 Semana.

You might also like