paulo1205
(usa Ubuntu)
Enviado em 15/04/2016 - 00:11h
Não se chame de burra, ainda mais em público.
Não sei se você deixou para a última hora (se sim, é uma pena), porque eu acho que posso ajudá-la a perceber que você já sabe programar, e talvez só não tenha consciência disso.
Programar não tem nada a ver com o computador. Se você é capaz de sentar e, com um papel e uma caneta, escrever em Português (e uma ou outra fórmula matemática, mas a prosa em língua natural é mais importante) como VOCÊ faria, passo a passo, para executar a tarefa pedida pela questão, então o texto que você escrever será nada menos do que um programa, justamente aquele para executar a tal tarefa.
Mais ainda: se esse programa em Português for traduzido para outro idioma, respeitando as regras sintáticas desse idioma, ele continuará sendo um programa. Tal idioma pode ser algo como Inglês, Espanhol, Francês ou Japonês, mas também pode ser C, C++, Python, Pascal, BASIC. O esforço de transferir de uma língua natural para outra é muito semelhante ao de traduzir da língua natural para a linguagem de programação.
Quer ver como é programar em Português? Vou dar um exemplo, com a função que tem de retornar a fatorial.
Antes de começar a escrever o “como”, cabe um pouco de organização. Você começa elencando quais são seus elementos iniciais, e o que você pretende entregar. Preste atenção.
Função para cálculo de fatorial de um número natural N.
Dados iniciais: o número natural
N .
Resultados finais: o valor de
N! , que corresponde a
N*(N-1)*(N-2)*...*3*2*1 .
Procedimento:
Defino a função FATORIAL de um número natural N com os seguintes passos:
Passo 1: (Aproveitando o fato de que o elemento neutro da multiplicação é 1)
predefino o valor de RESULTADO com 1;
Passo 2: Se o valor de N for menor do que 2, pulo para o Passo 6.
Passo 3: Multiplico o valor de RESULTADO por N, e faço este ser o novo valor de RESULTADO.
Passo 4: Subtraio 1 do valor de N, e faço este ser o novo valor de N.
Passo 5: Volto para o passo 2.
Passo 6: Devolvo o valor de RESULTADO como valor final da computação.
Concorda que, com o programa acima, você vai conseguir calcular o valor de da fatorial de um número natural
N ? Então você já sabe como fazer um programa simples.
Quando você se torna uma programadora um pouco mais hábil e experiente, percebe que algumas construções com sentido de execução repetida de um certo número de passos, controlada por uma certa condição de repetição, são muito comuns. Quando você tem esse
insight , modifica até seu estilo de escrever em Português. Por exemplo, você poderia reescrever o programa acima de uma forma simplificada e mais estilosa (repare onde eu coloco os pontos e as vírgulas: cada período representa uma única ação, mesmo quando ela tem componentes menores, separados por vírgulas -- exatamente como você aprendeu nas aulas de redação na escola).
Defina-se a função FATORIAL(N) (sendo N um número natural) com os seguintes passos:
Seja RESULTADO igual a 1 (elemento neutro da multiplicação, e valor mínimo de qualquer fatorial).
Enquanto N for maior que 1 (isto é: 2 ou mais),
seja RESULTADO igual a N vezes o valor atual de RESULTADO, e
seja N igual a N menos 1. (Note que o “Enquanto” dá ao período uma ideia de possível repetição.)
Devolva-se o valor de RESULTADO.
Agora vamos traduzir o programa para Inglês (suprimindo os comentários entre parênteses):
Define function FACTORIAL(N) as the following steps:
Let RESULT equal 1.
While N is greater than 1,
Let RESULT be N times present RESULT, and
Let N be N minus 1.
Return value of RESULT.
Podemos também traduzir o programa para uma linguagem específica de programação. No caso da linguagem Python, você poderá ver uma semelhança bem razoável com o programa escrito em Inglês:
def factorial(n):
result=1
while n>1:
result=n*result
n=n-1
return result
Como você fez a pergunta numa comunidade de C, eu não poderia me furtar, numa explicação como esta, de mostrar o mesmo programa em C.
Antes, porém, quero lembrar-lhe que, assim como as línguas naturais têm suas peculiaridades (por exemplo: presença ou não de artigos, posição de adjetivos, gênero gramatical, nível de formalidade, tom do discurso etc.), as quais você deve seguir se quiser que o seu texto gramaticalmente correto em Português possa ser traduzido de modo aceitável para a outra língua, muitas linguagens de programação têm também suas exigências. C, por exemplo, tem diferentes tipos de dados, e exige que você informe antecipadamente o tipo dos dados associados a cada variável que você manipular ou que devolver como resultado de uma função. Essa exigência tem de ser atendida pela versão em C do nosso programa.
/*
O tipo “unsigned” é para números inteiros não-negativos. Ele é aplicado
ao tipo retornado pela função (escrito antes do nome da função) e ao
parâmetro n.
Os sinais de chaves cercam os componentes que definem a função.
*/
unsigned factorial(unsigned n) {
unsigned result=1; /* Declaro uma variável com tipo “unsigned”, e lhe atribuo um valor inicial. */
while(n>1) { /* Sinais de chaves indicam o bloco a ser condicionalmente repetido. */
result*=n; /* Peculiaridade do C: “a*=b” é o mesmo que “a=a*b”. */
--n; /* Outra peculiaridade: “--n” é o mesmo que “n=n-1”. */
} /* Dominar as peculiaridades é o que revela sua fluência em qualquer idioma. Não é? */
return result;
}
Viu só? Em poucos parágrafos, fizemos duas versões de um programa para cálculo da fatorial de um número, e ainda implementamos a segunda versão em quatro linguagens diferentes (duas naturais, e duas de programação).
Agora vá em frente com coragem, e faça os outros exercícios.