Escolar Documentos
Profissional Documentos
Cultura Documentos
Dev C
Dev C
Direitos autorais reservados : Professor Eduardo Reus Souza. Escola QI Porto Alegre
Sumrio Aula 1 ............................................................................................................................... 6 Apresentao da Disciplina .......................................................................................... 6 1. Consideraes iniciais ...................................................................................... 6 1.1. Lgica e Lgica de Programao ................................................................. 6 1.2. Problema ....................................................................................................... 6 1.3. Algoritmo ..................................................................................................... 6 1.4. Programa....................................................................................................... 6 1.5. Formas de se representar um Algoritmo ...................................................... 6 1.6. Regras para a Criao de Algoritmos ........................................................... 7 1.7. Como proceder na construo de algoritmos? .............................................. 7 1.7.1. Leia com ateno o enunciado do problema ............................................ 7 1.7.2. Obtenha os dados de entrada .................................................................... 7 1.7.3. Obtenha os dados de sada ........................................................................ 8 1.7.4. Determinar o que deve ser feito para transformar as entradas determinadas nas sadas especificadas ..................................................................... 8 1.7.5. Testar o algoritmo..................................................................................... 8 1.8. Exerccios propostos ..................................................................................... 8 2. Variveis e Constantes de memria (RAM) ..................................................... 9 2.1. Memria ....................................................................................................... 9 2.2. Como um programa tratado na memria? ................................................. 9 2.3. Variveis ....................................................................................................... 9 2.4. Constantes..................................................................................................... 9 2.5. Regras para formao de Identificadores ..................................................... 9 2.6. Tipos de Dados ........................................................................................... 10 2.7. Principais tipos de dados utilizados na disciplina ...................................... 10 2.8. Exerccios Propostos .................................................................................. 10 Aula 2 ............................................................................................................................. 11 Comeando a programar na Linguagem C ................................................................. 11 3. Linguagens de programao ........................................................................... 11 3.1. Linguagens de Baixo Nvel ........................................................................ 11 3.2. Linguagens de Alto Nvel ........................................................................... 11 3.3. Compilador ................................................................................................. 11 3.4. Estrutura padro de um algoritmo (C) ........................................................ 11 3.5. Indentao..................................................... Erro! Indicador no definido. 3.6. Operadores aritmticos ............................................................................... 13 3.7. Regras de precedncia de operadores ......................................................... 13 3.8. Exerccios Propostos .................................................................................. 13 Aula 3 ............................................................................................................................. 14 3.9. Utilizando instrues de I/O ....................................................................... 14 3.10. Exerccios Propostos .............................................................................. 15 Aula 4 ............................................................................................................................. 17 Introduo ao DEV-C++ ............................................................................................ 17 4. Sobre o software ............................................................................................. 17 4.1. O que DEV-C++? .................................................................................... 17 4.2. Verso do DEV-C++ .................................................................................. 17 4.3. Interface do Software.................................................................................. 17 4.4. Compilando um Projeto .............................................................................. 19 4.5. Tipos de Erros............................................................................................. 21
4.6. Exerccio Proposto...................................................................................... 21 Aula 5 ............................................................................................................................. 22 Algoritmos Condicionais ............................................................................................ 22 5. Introduo ....................................................................................................... 22 5.1. Instruo IF (SE) ........................................................................................ 22 5.2. Operadores Relacionais .............................................................................. 23 5.3. Exerccios Propostos .................................................................................. 24 Aula 6 ............................................................................................................................. 25 Exerccios ................................................................................................................... 25 Aula 7 ............................................................................................................................. 26 Seleo encadeada ...................................................................................................... 26 5.4. Instruo SWITCH ..................................................................................... 27 5.5. Exerccios Propostos .................................................................................. 27 5.6. Operadores (Conectores) Lgicos .............................................................. 29 5.6.1. Operador && (E) .................................................................................... 29 5.6.2. Operador || (OU) ..................................................................................... 29 5.6.3. Operador ! (No) .................................................................................... 29 5.7. Exerccios Propostos .................................................................................. 31 Aula 8 ............................................................................................................................. 32 Aula 9 ............................................................................................................................. 33 Avaliao I.................................................................................................................. 33 6. Introduo ....................................................................................................... 33 6.1. Tipo de avaliao ........................................................................................ 33 6.2. Continuao dos exerccios ........................................................................ 33 Aula 10 ........................................................................................................................... 34 Algoritmos de Repetio (Laos Loops) ................................................................. 34 7. Introduo ....................................................................................................... 34 7.1. WHILE (ENQUANTO) ............................................................................. 34 7.2. DO WHILE (FAA ENQUANTO) ........................................................ 35 7.3. FOR (PARA) .............................................................................................. 36 7.4. Tipos de Variveis ...................................................................................... 36 7.4.1. Variveis Contadoras.............................................................................. 36 7.4.2. Variveis Acumuladoras ........................................................................ 36 7.4.3. Lixo de Memria .................................................................................... 37 7.5. Modificaes do Sinal de Atribuio ......................................................... 37 7.6. Loops Infinitos............................................................................................ 37 7.7. Exerccios Propostos .................................................................................. 37 Aula 11 ........................................................................................................................... 38 Aula 12 ........................................................................................................................... 39 Aula 13 ........................................................................................................................... 40 Aula 14 ........................................................................................................................... 41 Aula 15 ........................................................................................................................... 42 Reviso Geral Para a Prova I ...................................................................................... 42 Aula 16 ........................................................................................................................... 43 Prova I ........................................................................................................................ 43 Aula 17 ........................................................................................................................... 44 Consideraes sobre a prova ...................................................................................... 44 Aula 18 ........................................................................................................................... 45 Variveis Homogneas Unidimensionais (Vetores) ................................................... 45 8. Introduo ....................................................................................................... 45
8.1. O que so vetores? ...................................................................................... 45 8.2. Representao Grfica ................................................................................ 45 8.3. Utilidade para Vetores ................................................................................ 45 8.4. Declarando Vetores .................................................................................... 45 8.5. Exemplo Prtico ......................................................................................... 46 8.6. Exerccios Propostos .................................................................................. 47 Aula 19 ........................................................................................................................... 48 Aula 20 ........................................................................................................................... 49 Aula 21 ........................................................................................................................... 50 Variveis Homogneas Multidimensionais (Matrizes) .............................................. 50 9. Introduo ....................................................................................................... 50 9.1. O que so Matrizes? ................................................................................... 50 9.2. Representao Grfica ................................................................................ 50 9.3. Declarando Matrizes. .................................................................................. 50 9.4. Exemplo Prtico ......................................................................................... 51 9.5. Exerccios Propostos .................................................................................. 52 Aula 22 ........................................................................................................................... 53 Aula 23 ........................................................................................................................... 54 Aula 24 ........................................................................................................................... 55 Introduo a Programao Modular ........................................................................... 55 10. Introduo ................................................................................................... 55 10.1. Por que Utilizar Programao Modular? ................................................ 55 10.2. Como Implementar Programao Modular? .......................................... 55 10.2.1. Funes ................................................................................................... 55 10.2.2. Assinatura ............................................................................................... 55 10.2.3. Argumento .............................................................................................. 55 10.2.4. Parmetro ................................................................................................ 55 10.3. Exemplo Prtico ..................................................................................... 55 10.4. Escopo das Variveis Instanciamento de Variveis ............................ 57 10.5. Exerccios Propostos .............................................................................. 58 Aula 25 ........................................................................................................................... 59 10.6. Passagem de Parmetros por Valor e Referncia ................................... 59
Introduo A disciplina introduz o estudo da programao, destacando a construo de algoritmos. Abrange os conceitos fundamentais da programao at o uso de estruturas bsicas de dados (vetores, matrizes e registros).
Aula 1
Apresentao da Disciplina
1. Consideraes iniciais 1.1. Lgica e Lgica de Programao
Lgica de programao a tcnica de encadear pensamentos para atingir determinado objetivo. Estes pensamentos podem ser descritos como uma seqncia de instrues que devem ser seguidas para se cumprir uma determinada tarefa. Gerando ao final o que chamamos de programa.
1.2. Problema
A definio mais simples para problema uma situao que precisa ser resolvida
1.3. Algoritmo
Algoritmo uma seqncia ordenada e finita de passos lgicos, bem definas e eficazes para a soluo de um problema em um tempo finito. Reparem que algoritmo no est diretamente relacionado informtica. Uma receita de bolo, por exemplo, seria um algoritmo que iria solucionar um problema especfico do cotidiano humano. Reparem tambm que para um problema podemos ter diversos algoritmos, e que muitas vezes, estes s funcionariam dependendo de fatores externos. Como fazer um bolo de chocolate visto que faltou luz? A soluo provavelmente ser diferente da soluo convencional.
1.4. Programa
Um programa no mais do que um algoritmo computacionalmente aplicvel. Isto , serve para resolvermos problemas exclusivos do ambiente computacional. Todo programa um algoritmo, porm nem todo algoritmo um programa.
algoritmo livre de ambigidades e com uma estrutura bastante flexvel e completa, onde todos os elementos esto representados. No estudo da lgica de programao da nossa disciplina, ser utilizada a terceira forma de representao, utilizando a sintaxe da linguagem de programao C. No utilizaremos o padro de portugus estruturado para evitar que nossos algoritmos precisem ser reescritos (faa em portugus, e depois refaa na sintaxe correta da linguagem).
Entrada
Processamento
Sada
Onde: Entrada: So os dados que devem ser informados (pelo usurio, ou no) para que o programa possa ser executado. Processamento: So os procedimentos que devem ser empregados para solucionar o problema. Neste podemos incluir operaes matemticas, comparaes, repeties, etc. Sada: o resultado final do algoritmo que deve ser entregue a algum lugar ou algum. importante ressaltar que: A ordem das instrues devem ser levadas em considerao. No existe processamento sem a entrada de dados. A sada de dados deve ser apresentada. O nmero de instrues deve ser sempre finito. Exemplo Imagine o seguinte problema: calcular a mdia final dos alunos da 3 Srie. Os alunos realizaro quatro provas: P1, P2, P3 e P4. Onde: Mdia Final = P1 + P2 + P3 + P4 4
A entrada de dados sero as quatro notas. O processamento ser o clculo da mdia propriamente dita. A sada de dados ser a exibio dessa mdia.
1.7. Como proceder na construo de algoritmos? 1.7.1. Leia com ateno o enunciado do problema
Nessa primeira etapa devemos compreender perfeitamente o que precisamos fazer. A grande maioria dos problemas encontrados nos programas atuais ocorre por falhas na interpretao inicial do problema.
1.7.4. Determinar o que deve ser feito para transformar as entradas determinadas nas sadas especificadas
Nesta fase que teremos a construo do algoritmo propriamente dito, pois, a partir de alguns requisitos especificados, devemos determinar qual seqncia de aes capaz de transformar um conjunto definido de dados nas informaes de resultado.
1 2 3 a b c
2. Construa um algoritmo que informe os passos necessrios para a trocar o pneu de um carro. Tendo como situao inicial que o carro estava em movimento numa estrada, que h acostamento e espao suficiente para a troca.
2.3. Variveis
Variveis so espaos reservados (alocados) na memria RAM do computador, que devem possuir um nome e um tipo de dado, sendo que seu contedo pode sofrer alterao durante a execuo do programa. Em outras palavras, variveis so as informaes que podemos utilizar na rea de dados de um programa. Por exemplo, o Nome de um cliente, as Notas de um aluno, a Temperatura atual. Mas note que todos estes dados podem mudar a qualquer momento.
2.4. Constantes
Variveis so espaos reservados (alocados) na memria RAM do computador, que devem possuir um nome e um tipo de dado, sendo que seu contedo NO pode sofrer alterao durante a execuo do programa. Repare que a diferena entre uma varivel e uma constante na sua definio sutil, porm na prtica essa diferena muito relevante. O valor que for definido na criao (declarao) de uma constante a acompanha durante todo o ciclo de vida do processo.
O nome de um identificador no pode ser igual ao de qualquer palavra reservada da linguagem de programao. Procure utilizar nomes curtos, e que possuam algum significado associado ao identificador.
10
Aula 2
Comeando a programar na Linguagem C
3. Linguagens de programao
Linguagem de programao uma classe de software (do mesmo jeito que editores de texto, planilhas eletrnicas, etc.) onde todos os seus representantes tm por caracterstica principal a capacidade de desenvolver novos softwares. Sendo que essa classe de software dividida em dois grandes grupos. Linguagens de alto e baixo nvel.
3.3. Compilador
Compilador o nome do software responsvel pela traduo de um cdigo alto nvel para baixo nvel (para que o processador possa executar suas instrues) gerando ao final o que chamamos de arquivo executvel. Sendo que a velocidade de processamento de um programa est diretamente relacionado a qualidade deste compilador.
11
Exemplo de um programa #include <stdio.h> void main() { int valor1, valor2; float soma; valor1 = 23000; valor2 = 15500; soma = valor1 + valor2; } Explicando o cdigo acima Esta linha define que poderemos utilizar no nosso cdigo #include <stdio.h> fonte instrues de I/O (Entrada e Sada de dados). Define onde que o nosso programava vai comear a void main() execuo Inicio do bloco de instrues { int valor1, valor2 float soma; valor1 = 23000; valor2 = 15500; soma = valor1 + valor2; } Cria na rea de dados (declara) duas variveis de tipo inteiro com nomes valor1 e valor2. Cria na rea de dados (declara) uma varivel de tipo ponto flutuante com nome soma Atribui o valor 23000 para a varivel valor1 Atribui o valor 15500 para a varivel valor2 Soma o contedo das duas variveis e joga a resposta do clculo na varivel soma. Encerra o bloco de intrues
3.5. Endentao
Repare que o cdigo acima possui alguns espaos entre os caracteres { e } que servem para facilitar a visualizao do cdigo na busca de possveis erros. Esta tcnica chamase endentao de cdigo. Sendo vital no desenvolvimento de um programa. Na grande maioria das linguagens a endentao tem uma importncia meramente esttica, porm existem linguagens que definem inicio e fim de bloco por ela. Python seria um bom exemplo disso.
12
b2
c2 )
4. Faa um algoritmo que efetue as seguintes operaes: a) A vale 10 b) B vale o dobro de A c) C vale a raiz quadrada do dobro de A d) D vale a metade da raiz quadrada do dobro de A e) E vale o cubo da metade da raiz quadrada do dobro de A f) F vale a tera parte do cubo da metade da raiz quadrada do dobro de A.
13
Aula 3
3.9. Utilizando instrues de I/O
At o momento, nossos algoritmos apesar de funcionarem, no esto respeitando corretamente o principio da informtica (aula 1) que o da Entrada, Processamento e Sada de dados. J que: Nossa entrada de dados sempre fixa No estamos exibindo o resultado de nossos clculos para o usurio do programa. Para solucionar este problema, a linguagem C possui trs instrues para a leitura/escrita de dados, scanf, gets e printf. Onde: scanf: Utilizado para a leitura de valores numricos, sendo que sempre devemos utilizar o operador & antes da varivel de leitura. gets: Utilizado para leitura de valores alfanumricos printf: Utilizado para a escrita de valores tanto numricos quanto alfanumricos. Exemplo de utilizao #include <stdio.h> void main() { int v1, v2; float media; char nome[30]; gets(nome); scanf("%d", &v1); scanf("%d", &v2); media = (v1 + v2)/2.0; printf ("A sua media : %f", media); } Repare a maneira como foi feita a leitura das variveis nome, v1 e v2: Nome como um char, foi lida utilizando a funo gets. v1 e v2 por serem numricas, precisaram ser lidas utilizando o scanf, sendo que %d um atributo da funo que avisa o compilador que ser lido (no caso da printf, escrito) um valor de tipo de dado inteiro. A leitura da linha onde encontra-se o printf seria da seguinte forma: Escreva na tela a frase A sua mdia : juntamente com um valor de ponto flutuante, sendo que esse valor foi passado para a funo logo em seguida separado por uma vrgula. Alguns atributos importantes que podem ser utilizado nas funes scanf e printf: Atributo Utilizao Exemplo %d Leitura/escrita de dados numricos inteiros scanf(%d, &idade); %f Leitura/escrita de dados numricos reais printf(%f,salario); %s Escrita de dados do tipo char (strings) printf(%s, nome);
14
Dentro de uma instruo printf, podemos fazer a escrita de mais valores, compondo uma sentena completa. Exemplo: printf (%s, Os valores %d e %d formam a mdia: %f, nome, v1, v2, media); Podemos tambm utilizar a funo printf para exibir mensagens para o usurio. Por exemplo, no caso anterior, seria interessante exibir uma mensagem ao usurio pedindo para que ele informe o seu nome e dois valores inteiros. O cdigo ficaria da seguinte maneira: #include <stdio.h> void main() { int v1, v2; float media; char nome[30]; printf ("Digite o seu nome: "); gets(nome); printf ("Digite o primeiro valor inteiro: "); scanf("%d", &v1); printf ("Digite o segundo valor inteiro: "); scanf("%d", &v2); media = (v1 + v2)/2.0; printf ("%s, Os valores %d e %d formam a media: %f", nome, v1, v2, media); }
( x2
x1 ) 2
( y2
y1 ) 2
5. Faa um algoritmo que leia trs valores reais e calcule x e x de acordo com a frmula abaixo b b2 4 * a * c x' , x" 2*a
15
6. Faa um algoritmo que leia um valor inteiro equivalente a um determinado valor em segundos. Retorne quantas horas, minutos e segundos so compostos por este valor. Por exemplo o valor 3670 (segundos) formaria 1 hora, 1 minuto e 10 segundos. 7. Faa um algoritmo que leia dois valores inteiros. Logo aps troque os valores entre estas variveis. Ou seja, o contedo da varivel 1 passar para a varivel 2 e vice e versa.
16
Aula 4
Introduo ao DEV-C++
4. Sobre o software 4.1. O que DEV-C++?
DEV-C++ o nome de um dos mais famosos compiladores C para a plataforma Windows, sendo que este um freeware que pode ser baixado dos mais diversos lugares. Alguns links sero escritos no apndice deste manual.
Onde: No canto esquerdo temos o navegador de classes/projetos que ser utilizado para podermos alternar entre arquivos. Na rea superior encontram-se os principais atalhos do compilador Na parte inferior temos uma caixa de mensagens que o compilador ir exibir conforme a necessidade.
17
Criando um novo projeto Para criarmos um novo projeto devemos acessar o menu Arquivo/Novo/Projeto...
Escolha a opo Console Application, certificando-se que a opo Projeto C esteja marcada. Voc pode definir um nome para seu projeto nesta mesma janela.
Ao clicar em OK, o compilador ir solicitar que voc salve seu projeto. Procure salvar um projeto por pasta para evitar um acumulo de arquivos, de modo que seja fcil a seleo do documento certo.
18
Logo aps a criao do projeto. Voc estar apto para comear a programar. Repare que a interface do cdigo muito similar ao que j estamos trabalhando, de modo que apenas precisamos modificar (apagar) algumas instrues e nossa aplicao estar igual ao de nosso caderno.
Repare que existe uma linha obrigatria no final do cdigo fonte: system (pause); Onde: system(pause): Far com que o programa aps sua concluso seja fechado somente aps o pressionamento de alguma tecla. A no existncia desta linha de instruo fecharia o programa sem que o usurio tenha tempo de visualizar as respostas. Podemos utilizar qualquer instruo DOS na funo system.
19
Repare que neste caso o compilador no encontrou nenhum erro durante a traduo do cdigo fonte. Vejamos abaixo uma situao onde existam erros de sintaxe.
No lugar do resumo de compilao, o cdigo teve uma linha destacada e na parte inferior do programa esto sendo exibidos alertas do compilador. Neste caso a informao de que o programa no conseguiu compilar a linha 10, devido a falta de um ; na linha 9.
20
21
Aula 5
Algoritmos Condicionais
5. Introduo
At o momento, todos os algoritmos que estamos fazendo podem ser considerados Algoritmos Seqenciais, isto , executam todas as suas linhas de instruo sem que hajam desvios nem repeties no cdigo fonte. Em um ambiente prtico, este tipo de situao no ocorre, j que durante um programa diversas situaes devem ser testadas para que seu resultado final seja satisfatrio. Por exemplo, se formos fazer um programa para clculo de peso ideal para um indivduo, a frmula para homens e mulheres diferente. Sendo assim, em algum momento do programa deve-se descobrir o sexo da pessoa e caso seja algum do sexo masculino, faa a frmula X, caso contrrio, a frmula Y ser executada. Para podermos trabalhar com algoritmos condicionais podemos utilizar dois tipos de instrues IF (SE) e SWITCH (CASO, no traduo literal):
22
#include <stdio.h> void main() { float n1, n2, media; char nome[25]; printf("Digite o seu nome: "); gets(nome); printf("Digite sua primeira nota: "); scanf("%f", &n1); printf("Digite sua segunda nota: "); scanf("%f", &n2); media = (n1 + n2)/ 2.0; printf ("%f \n", media); if (media >= 6) { printf ("Parabens! Voce esta APROVADO \n"); } else { printf ("Infelizmente voce esta REPROVADO \n"); } system("pause"); } O trecho em destaque no cdigo o que diferencia um algoritmo condicional de um puramente seqencial. Repare que apenas uma das duas mensagens ser exibida na tela, sendo que tudo depende do retorno do teste media >= 6(mdia ser maior ou igual a 6).
23
24
Aula 6
Exerccios
Aula destinada a continuao e implementao dos exerccios sobre algoritmos condicionais.
25
Aula 7
Seleo encadeada
muito comum que dentro de um algoritmo tenhamos vrios testes que tenham que ser feitos a uma mesma varivel ou situao. Para este tipo de situao podemos utilizar o encadeamento (aninhamento) de instrues if. Por exemplo, vamos modificar o exerccio nmero um da lista anterior para que agora ele considere o valor 0 (zero) como nulo. #include <stdio.h> void main() { float valor; printf("Digite um valor: "); scanf("%f", &valor); if (valor > 0) { printf("O valor positivo! \n"); } else { if (valor < 0) { printf("O valor Negativo! \n"); } else { printf("O valor nulo! \n"); } } system("pause"); } Repare que o segundo teste s ser feito caso o primeiro falhe. Este tipo de abordagem interessante para evitar que uma grande quantidade de testes similares sejam feitas quando apenas um deles pode ser executado.
26
27
2. Faa um algoritmo que recebe dois valores reais juntamente com uma varivel controladora de tipo inteiro. a) Caso a varivel controladora seja 1, some os valores digitados. b) Caso a varivel controladora seja 2, multiplique os valores digitados. c) Caso a varivel controladora seja 3, encontre o maior valor. d) Caso a varivel controladora seja qualquer outro valor, calcule a mdia entre os valores. 3. Faa um algoritmo que simule o caixa de um Fast-Food. Sero digitados o cdigo de um produto, juntamente com a quantidade desejada deste produto. Seu programa deve retornar o nome do produto juntamente com o valor final a ser pago. Cdigo 1 2 3 4 Produto Sanduche de Presunto Suco de Tamarindo Pastel de Vento Po com margarina Valor Unitrio R$ 2,30 R$ 1,50 R$ 1,30 R$ 0,70
28
29
Exemplo Prtico Fazer um programa que leia as duas notas de um aluno juntamente com sua freqncia. Informe se o aluno est aprovado ou reprovado sabendo que a mdia mnima de aprovao 6 e que a freqncia mnima de aprovao 75. #include <stdio.h> void main() { float n1, n2, freq, media; printf("Digite sua primeira nota: "); scanf("%f", &n1); printf("Digite sua segunda nota: "); scanf("%f", &n2); printf("Digite sua freqncia: "); scanf("%f", &freq); media = (n1 + n2)/ 2.0; if (media >= 6 && freq >= 75) { printf ("Parabens! Voce esta APROVADO \n"); } else { printf ("Infelizmente voce esta REPROVADO \n"); } system("pause"); } Tente fazer o cdigo acima utilizando operador lgico OU agora.
30
31
Aula 8
Aula destinada a continuao e implementao dos exerccios propostos na lista anterior, bem como novos exerccios disponibilizados pelo professor. Continuao dos exerccios: 6. A Secretaria de Meio Ambiente, que controla o ndice de poluio, mantm 3 grupos de indstrias que so altamente poluentes do meio ambiente. O ndice de poluio aceitvel varia de 0,05 at 0,29. 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 industrias do 1 e 2 grupo so intimadas a suspenderem suas atividades, se o ndice atingir 0,5 todos os grupos devem ser notificados a paralisarem suas atividades. Faa um programa que leia o ndice de poluio medido e emita a notificao adequada aos diferentes grupos de empresas. 7. Desenvolva um algoritmo que efetue a leitura de trs valores para os lados de um tringulo, considerando lados como: A, B e C. O algoritmo dever verificar se os lados fornecidos forma realmente um tringulo (cada lado menor que a soma dos outros dois lados). Se for esta condio verdadeira, dever ser indicado qual tipo de tringulo foi formado: issceles (dois lados iguais e um diferente), escaleno (todos os lados diferentes) ou eqiltero (todos os lados so iguais). Faa um algoritmo que leia o dia e o ms de nascimento de uma pessoa. Ao final do algoritmo retorne o seu signo de acordo com a tabela abaixo:
Nascidos entre: 20/03 a 20/04 21/04 a 20/05 21/05 a 20/06 21/06 a 21/07 22/07 a 22/08 23/08 a 22/09 23/09 a 22/10 23/10 a 21/11 22/11 a 21/12 22/12 a 20/01 21/01 a 18/02 19/02 a 19/03 Signo: ries Touro Gmeos Cncer Leo Virgem Libra Escorpio Sagitrio Capricrnio Aqurio Peixes
32
Aula 9
Avaliao I
6. Introduo
Aula destinada a apresentao do primeiro trabalho a ser desenvolvido na disciplina de lgica de programao.
33
Aula 10
Algoritmos de Repetio (Laos Loops)
7. Introduo
Como visto anteriormente, dentro de um algoritmo existem vrios tipos de estruturas que podem ser utilizadas. At o momento estudamos estruturas seqenciais e condicionais. Dentro de nossos algoritmos vai ser comum encontrarmos trechos de cdigo que precisam ser executados vrias vezes em seqncia (para validaes, por exemplo). Para este tipo de problema, ao invs de repetirmos seguidamente o cdigo fonte, podemos utilizar instrues de repetio que fazem justamente o papel de re-executar um determinado bloco de algoritmo. As instrues que permitem repetio de cdigo so trs:
34
Exemplo: #include <stdio.h> void main() { int valor, soma; valor = 5; soma = 0; while (valor <= 8) { soma = soma + valor; valor = valor + 1; } printf("%d\n", soma); system("PAUSE"); } Este algoritmo ir executar as instrues soma = soma + valor; e valor = valor + 1; enquanto o contedo da varivel valor for menor ou igual a 8. Sendo que quando esta condio for falsa o programa ir exibir essa soma na tela e encerrar.
muito comum quando utilizamos menus, onde as opes devem ser exibidas na tela enquanto no for feita uma escolha vlida.
36
37
Aula 11
Continuao dos exerccios 4. Faa um programa que leia um nmero qualquer e calcule a tabuada desse nmero. A tabuada deve ser exibida ao usurio no seguinte formato (considerando a leitura do nmero 2): 2X1=2 2X2=4 2X3=6 ... 2 X 10 = 20 5. Faa um algoritmo que leia dois valores (X e Y) e calcule XY. Obs.: No utilize a funo pow. 6. Faa um algoritmo que leia dois valores positivos (A e B) e calcule a multiplicao de A por B. Obs.: No utilize o operador aritmtico *. 7. Faa um algoritmo que resolva a seguinte situao. A empresa de Joo tem um quadro de 36 funcionrios, sendo que a cada ano so contratados 5 novos colaboradores. Enquanto que a empresa de Joaquim possui um quadro de 50 funcionrios e a cada ano so contratados 3 novos funcionrios. Quantos anos sero necessrios para que Joo ultrapasse Joaquim?
38
Aula 12
Continuao dos exerccios (leitura de dados dentro dos laos) 8. Faa um algoritmo que leia um nmero indeterminado de valores reais e quando for digitado um valor negativo, exiba a soma destes valores. 9. Faa um algoritmo que leia 25 valores inteiros. Logo aps a leitura dos valores, exiba a mdia entre os valores. 10. Faa um algoritmo que leia um nmero indeterminado de valores. E quando for digitado 0 (zero) exiba a quantidade de nmeros pares e mpares digitados. 11. Faa um algoritmo que leia 15 valores reais e ao final da leitura exiba o maior valor informado. 12. Faa um algoritmo que leia 10 nomes e idades. Ao final da leitura exiba o nome da pessoa mais velha. 13. Faa um algoritmo que leia 50 valores inteiros e logo aps a leitura exiba o percentual de valores mltiplos de 5 digitados.
39
Aula 13
Continuao dos exerccios 14. Faa um algoritmo que leia um valor inteiro e retorne se este valor perfeito ou no. Obs.: Nmeros perfeitos so aqueles cujo a soma de seus divisores (excluindo o prprio nmero) formam exatamente o valor original. Exemplo: 6 (1+2+3 = 6) 15. Faa um algoritmo que leia um usurio e senha digitados pelo usurio. O programa deve exibir a mensagem Bem Vindo caso o usurio digitado seja aluno e a senha digitada seja segredo. O programa deve avisar quando o login no for efetuado e emitir um aviso de bloqueio caso o usurio erre seu login trs vezes. 16. Faa um programa que leia o Nome, Valor Hora, Total de Horas Trabalhadas e a idade de 50 funcionrios. Aps a leitura dos dados exiba: a) A mdia salarial bruta da empresa b) O nome e a idade do funcionrio mais velho c) O nome e o salrio do funcionrio que tiver a maior renda.
40
Aula 14
Continuao dos exerccios (desafios) 17. Faa um algoritmo que leia um nmero inteiro qualquer e retorne se este nmero primo ou no. Obs.: Nmeros primos so aqueles divisveis apenas por 1 (um) e por eles mesmos. 18. Faa um algoritmo que leia 3 valores inteiros e exiba o MMC (Mnimo Mltiplo Comum) entre estes valores. 19. Faa um algoritmo que leia o Nome, Idade e Sexo de 50 pessoas. Retorne ao final o nome da mulher mais velha e do homem mais jovem. 20. Faa um algoritmo que imprima na tela os 10 primeiros valores da seqncia de Fibonacci. (1, 1, 2, 3, 5, 8, 13, 21, 34 e 55). Obs.: Utilizar laos para gerar a seqncia.
41
Aula 15
Reviso Geral Para a Prova I
Aula destinada a reviso de todo o contedo desenvolvido at o momento, bem como concluso de exerccios.
42
Aula 16
Prova I
Boa prova a todos. Lembrem-se sempre de ler com ateno todas as questes da prova. Faa primeiro as questes que voc considerar mais fceis. No fique com dvidas em relao interpretao da prova.
43
Aula 17
Consideraes sobre a prova
Aula destinada a correo da prova e tirar dvidas em relao a avaliao.
44
Aula 18
Variveis Homogneas Unidimensionais (Vetores)
8. Introduo
A partir deste ponto do curso iremos quebrar o paradigma de que uma varivel s pode armazenar um valor por vez.
Na linguagem C, a primeira posio de um vetor sempre a posio 0 (zero), sendo crescente a partir deste ponto. Sendo assim, um vetor de 6 posies possui ndice variando entre 0 e 5.
45
46
47
Aula 19
Continuao dos Exerccios 6. Faa um algoritmo que leia dois vetores string de 10 posies equivalentes a grade de respostas de um aluno e o gabarito da mesma prova feita pelo professor. Seu programa deve informar a nota do aluno sabendo que cada acerto equivale a 1 ponto. Seu programa tambm deve retornar uma mensagem para o usurio de acordo com o seu nmero de acertos a) At 3 acertos: PRECISA MELHORAR b) At 5 acertos: REGULAR c) At 7 acertos: BOM d) Acima de 8 acertos: CONTINUE ASSIM. 7. Faa um algoritmo que leia um vetor inteiro de 10 posies. Logo aps a leitura de todo o vetor, inverta os valores de todo o vetor. 8. Faa um algoritmo que leia um vetor real de 8 posies. Logo aps a leitura exiba o maior valor digitado no vetor. 9. Faa um algoritmo que gere um vetor de 10 posies contendo os primeiros 10 valores da seqncia Fibonacci. 10. Faa um algoritmo que leia um vetor de 6 posies inteiro e reorganize os dados deste vetor de modo que seus dados sejam exibidos de maneira crescente.
48
Aula 20
Aula destinada correo dos exerccios e remoo de dvidas.
49
Aula 21
Variveis Homogneas Multidimensionais (Matrizes)
9. Introduo
Dentro da programao, vetores no so a nica forma de se armazenar mltiplos valores dentro de uma varivel.
indiferente pensarmos que cada posio da matriz indexada pelo nmero de sua coluna seguido por sua linha ou o seu inverso. Para uma maior facilidade de compreenso, iremos trabalhar com o sistema de linha x coluna.
50
51
6. Faa um algoritmo que leia uma matriz 6x6 e exiba a soma de sua diagonal secundria.
7. Faa um algoritmo que leia uma matriz 6x6 e exiba a soma dos seguintes valores da matriz.
8. Faa um algoritmo que preencha uma matriz 10x10 de forma automtica com os valores de 1 a 100 de forma seqencial. Obs.: Utilize apenas os contadores dos laos e a matriz propriamente dita. No utilize uma contadora auxiliar.
52
Aula 22
Aula destinada concluso e correo dos exerccios.
53
Aula 23
Continuao e Correo de Exerccios 9. Faa um algoritmo que leia uma matriz 3x3 de tipo real e adicione seus valores a um vetor real de 9 posies. 10. Faa um algoritmo que ordene os valores de uma matriz 4x4 de forma decrescente. O procedimento a ser executado dever ser: a) Ler a matriz b) Adicionar seus dados a um vetor c) Ordenar o vetor d) Devolver os dados para a matriz. 11. Faa um algoritmo que ordene de forma crescente apenas os valores pares de uma matriz inteira 5x5, sendo que os valores mpares no devem ser deslocados.
54
Aula 24
Introduo a Programao Modular
10. Introduo
O conceito de programao modular consiste no desenvolvimento de rotinas de tal forma que seja permitido o seu reaproveitamento.
10.2.1. Funes
Funes so blocos de algoritmo que devem possuir uma assinatura e que ao final de sua execuo, devem retornar algum valor de resposta.
10.2.2. Assinatura
Conjunto formado pelo nome, lista de argumentos (quando necessrios) e tipo de dado de sada.
10.2.3. Argumento
So todas as informaes que devem ser enviadas pelo usurio da funo, para que esta possa ser executada de forma correta.
10.2.4. Parmetro
So as informaes que sero passadas para os argumentos das funes pelo programa principal (usurio).
55
#include <stdio.h> //Criao da Funo int encontra_maior(int a, int b) { if (a > b) { return a; } else { return b; } } //Programa Principal int main() { int v1, v2, maior; printf ("Digite o primeiro valor: "); scanf ("%d", &v1); printf ("Digite o segundo valor: "); scanf ("%d", &v2); maior = encontra_maior(v1,v2); printf ("O maior valor : %d \n", maior); system("PAUSE"); return 0; } Explicando o cdigo int encontra_maior(int a, int b)
Return
Assinatura da funo. Est sendo informado que existe uma funo chamada encontra_maior que recebe dois valores inteiros como argumentos (a e b) e devolve um valor inteiro no final a instruo que far com que a devoluo do valor seja feita. No caso de a ser o maior valor ser retornado a, caso contrrio a funo devolver b. Chamada da funo. feita a chamada da funo encontra_maior de modo que o contedo dos parmetros v1 e v2 sejam enviados para os argumentos a e b e o retorno da funo ser depositado na varivel maior
Repare que em nenhum momento feita a leitura dos valores dos argumentos dentro da funo. A leitura dos dados deve ser feita nos parmetros, de modo que a funo se torne o mais independente possvel. Exceto em funes especficas para captura de dados do usurio. Apesar de funcional, o exemplo acima poderia ser facilmente desenvolvido sem a utilizao de programao modular. Sendo assim, sua utilidade nesta questo posta em xeque.
56
Porm, este tipo de abordagem mostra seu verdadeiro valor com o decorrer do tempo. Se, por exemplo, fosse necessrio agora que a leitura a ser feita seja de trs valores inteiros. Qual seria sua soluo? Reescrever a funo de modo que encontre o maior valor entre trs parmetros?. Preste ateno no exemplo abaixo, ainda utilizando a funo encontra_maior: int main() { int v1, v2, v3, maior; printf ("Digite o primeiro valor: "); scanf ("%d", &v1); printf ("Digite o segundo valor: "); scanf ("%d", &v2); printf ("Digite o terceiro valor: "); scanf ("%d", &v3); maior = encontra_maior(encontra_maior(v1,v2),v3); printf ("O maior valor : %d \n", maior); system("PAUSE"); return 0; } Com este mtodo, foi possvel reaproveitar o cdigo da funo anterior de modo que encontramos o maior valor entre as variveis v1 e v2 e comparamos este valor com v3 em uma segunda chamada da funo. Sendo assim, a funo original no precisou sofrer nenhuma alterao na sua estrutura. Podemos achar o maior valor entre qualquer grupo de valores utilizando a funo encontra_maior fazendo alteraes apenas no programa principal. Nada impede tambm, que faamos mais de uma funo dentro de um cdigo. Inclusive de modo que uma funo chame outra que esteja desenvolvida acima.
57
58
Aula 25
Continuao dos Exerccios 6. Faa um algoritmo que possua 5 funes a) Uma que calcule a soma entre dois valores reais b) Uma que calcule a multiplicao entre dois valores reais c) Uma que calcule a subtrao entre dois valores reais d) Uma que calcule a diviso entre dois valores reais e) Uma que de acordo com um cdigo fornecido pelo usurio chama as funes acima conforme a tabela abaixo: Cdigo Ao 1 Adio 2 Multiplicao 3 Subtrao 4 Diviso Crie um programa principal que deve apenas ler o cdigo da operao e dois valores reais e exiba o resultado da operao.
59
60
Forma CORRETA de desenvolvimento #include <stdio.h> void inverte(int *a, int *b) { int aux; aux = *a; *a = *b; *b = aux; } int main() { int a,b; printf ("Digite o primeiro valor: "); scanf("%d", &a); printf ("Digite o segundo valor: "); scanf("%d", &b); inverte (&a, &b); printf ("O novo valor de A : %d\n", a); printf ("O novo valor de B : %d\n", b); system("PAUSE"); return 0; } Explicando o cdigo Na funo a nica diferena que nossos argumentos devem ser precedidos pelo operador *, assim estamos nos referenciando diretamente ao endereo do argumento na memria. No programa principal, os parmetros devem ser precedidos pelo operador & para que seja passado para o argumento a posio da varivel na memria em vez do seu contedo propriamente dito.
61
Aula 26
Tratando Vetores Atravs de Funes
Para tratarmos vetores (ou qualquer estrutura de dados) de uma forma eficiente e organizada, aconselhvel que utilizemos funes de manipulao para estes dados. Faremos agora um exemplo prtico implementando a manipulao de um vetor de modo que sejam feitas as quatro operaes bsicas para um sistema. Insero Alterao Excluso Pesquisa Este projeto deve ser bem planejado, para que seu desenvolvimento seja de fcil compreenso. Sendo assim, iremos trabalhar passo a passo o cdigo fonte.
62