A maior rede de estudos do Brasil

Grátis
62 pág.
DevC++

Pré-visualização | Página 11 de 12

8x2. Ambas as matrizes de tipo char. 
 
5. Faça um algoritmo que leia uma matriz 6x6 e exiba a soma de sua diagonal 
principal. 
 
 
 
 
 
 
 
6. Faça um algoritmo que leia uma matriz 6x6 e exiba a soma de sua diagonal 
secundária. 
 
 
 
 
 
 
 
7. Faça um algoritmo que leia uma matriz 6x6 e exiba a soma dos seguintes valores da 
matriz. 
 
 
 
 
 
 
 
8. Faça um algoritmo que preencha uma matriz 10x10 de forma automática com os 
valores de 1 a 100 de forma seqüencial. Obs.: Utilize apenas os contadores dos laços 
e a matriz propriamente dita. Não utilize uma contadora auxiliar. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 53 
Aula 22 
Aula destinada à conclusão e correção dos exercícios. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 54 
Aula 23 
Continuação e Correção de Exercícios 
 
9. Faça um algoritmo que leia uma matriz 3x3 de tipo real e adicione seus valores a um 
vetor real de 9 posições. 
 
10. Faça 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. Faça um algoritmo que ordene de forma crescente apenas os valores pares de uma 
matriz inteira 5x5, sendo que os valores ímpares não devem ser deslocados. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 55 
Aula 24 
Introdução a Programação Modular 
10. Introdução 
O conceito de programação modular consiste no desenvolvimento de rotinas de tal 
forma que seja permitido o seu reaproveitamento. 
10.1. Por que Utilizar Programação Modular? 
Um algoritmo que implementa programação modular possui inúmeras vantagens. 
Dentre as quais se destacam: 
 O código fonte diminui drasticamente de tamanho 
 A manutenção do código fonte fica simplificada 
 Uma possível mudança de plataforma pode ser menos traumática (portabilidade) 
Exemplo 
Imagine que estamos desenvolvendo um software com uma gama de cálculos 
assombrosa. O que aconteceria se uma fórmula muito comum em todo o programa 
tenha sido passada errada para o programador? A resposta é simples, reescrever a 
fórmula em todos os lugares em que a mesma se encontra. Esse trabalho pode levar 
horas, dependendo do tamanho do código. 
Se utilizarmos o conceito de programação modular, a alteração precisará ser feita em 
apenas um lugar. Sendo que todo o programa irá se atualizar automaticamente. 
10.2. Como Implementar Programação Modular? 
Programação modular dentro da linguagem C é feita utilizando o que chamamos de 
funções. 
10.2.1. Funções 
Funções são blocos de algoritmo que devem possuir uma assinatura e que ao final 
de sua execução, devem retornar algum valor de resposta. 
10.2.2. Assinatura 
Conjunto formado pelo nome, lista de argumentos (quando necessários) e tipo de 
dado de saída. 
10.2.3. Argumento 
São todas as informações que devem ser enviadas pelo usuário da função, para que 
esta possa ser executada de forma correta. 
10.2.4. Parâmetro 
São as informações que serão passadas para os argumentos das funções pelo 
programa principal (usuário). 
10.3. Exemplo Prático 
Utilizando os conceitos de programação modular. Faremos um algoritmo que retorne o 
maior valor entre dois valores inteiros. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 56 
#include <stdio.h> 
//Criação da Função 
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 código 
int encontra_maior(int a, int b) 
 
Assinatura da função. Está sendo informado que 
existe uma função chamada “encontra_maior” 
que recebe dois valores inteiros como argumentos 
(a e b) e devolve um valor inteiro no final 
Return É a instrução que fará com que a devolução do 
valor seja feita. No caso de “a” ser o maior valor 
será retornado “a”, caso contrário a função 
devolverá “b”. 
maior = encontra_maior(v1, v2) Chamada da função. É feita a chamada da função 
“encontra_maior” de modo que o conteúdo dos 
parâmetros “v1” e “v2” sejam enviados para os 
argumentos “a” e “b” e o retorno da função será 
depositado na variável “maior” 
 
Repare que em nenhum momento é feita a leitura dos valores dos argumentos dentro da 
função. A leitura dos dados deve ser feita nos parâmetros, de modo que a função se 
torne o mais independente possível. Exceto em funções específicas para captura de 
dados do usuário. 
 
Apesar de funcional, o exemplo acima poderia ser facilmente desenvolvido sem a 
utilização de programação modular. Sendo assim, sua utilidade nesta questão é posta em 
xeque. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 57 
Porém, este tipo de abordagem mostra seu verdadeiro valor com o decorrer do tempo. 
Se, por exemplo, fosse necessário agora que a leitura a ser feita seja de três valores 
inteiros. Qual seria sua solução? Reescrever a função de modo que encontre o maior 
valor entre três parâmetros?. 
Preste atenção no exemplo abaixo, ainda utilizando a função “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 método, foi possível reaproveitar o código da função anterior de modo que 
encontramos o maior valor entre as variáveis “v1” e “v2” e comparamos este valor com 
“v3” em uma segunda chamada da função. 
Sendo assim, a função original não precisou sofrer nenhuma alteração na sua estrutura. 
Podemos achar o maior valor entre qualquer grupo de valores utilizando a função 
“encontra_maior” fazendo alterações apenas no programa principal. 
Nada impede também, que façamos mais de uma função dentro de um código. Inclusive 
de modo que uma função chame outra que esteja desenvolvida acima. 
10.4. Escopo das Variáveis – Instanciamento de Variáveis 
Trabalhando com múltiplas funções em um código, é muito comum de termos em 
vários pontos do programa variáveis com utilizações totalmente diferentes porém com o 
mesmo nome. 
Variáveis declaradas dentro de uma função, possuem validade apenas dentro desta 
função. Permitindo assim que seu nome seja repetido em outras funções. Estas variáveis 
também são conhecidas como variáveis locais. 
Existem também, variáveis que podem ter validade dentro de todo o nosso projeto 
(sendo visualizadas por todas as funções). Estas são denominadas como variáveis 
Globais. 
Esta “área de validade” é o escopo de uma variável. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 58 
 
10.5. Exercícios