saber mais, va para a introducao). Comecaram a surgir diversos diversas implementacoes da tal linguagem e os codigos gerados por tais implementacoes era altamente incompativeis. Nao existia nada que formalizasse essas compatibilizacoes e com o aumento do uso das diversas "vertentes" da linguagem surgiu a necessidade de uma padronizacao, algo que todos devessem seguir para poderem rodar seus programas em todos os lugares que quisessem.O ANSI (American National Standards Intitute, Instituto Americano que ate hoje dita diversos padroes) estabeleceu em 1983 um comite responsavel pela padronizacao da linguagem. Atualmente, a grande maioria dos compiladores ja suportam essa padronizacao.Trocando em miudos, o C pode ser escrito em qualquer maquina que se utilize de tal padrao e rodar em qualquer outra que tambem o faca. Parece inutil? Nao, na verdade isso e a semente de grande parte dos avancos tecnologicos que toda programacao nos tem proporcionado no mundo de hoje. Com o tempo isso ficara mais claro.Caracteristicas da Linguagem C:C e uma linguagem que alia caracteristicas de linguagens de alto nivel (como pascal, basic) e outras de baixo nivel como assembly. O que isso quer dizer? Que C junta flexibilidade, praticidade e poder de manipulacao da maquina diretamente e, por isso, nao traz as limitacoes dessas linguagens, como dificuldade de uso, limitacoes na operacao, etc. C permite liberdade total ao programador e este e responsavel por tudo que acontece, nada e imposto ou acontece simplesmente ao acaso, tudo e pensado pelo programador e isso significa um bom controle e objetividade em suas tarefas, o que nao e conseguido em outras linguagens que pecam em alguma coisa. C e uma linguagem que podemos chamar de estruturada. Nao queremos nos ater muito a nomenclaturas, mas ling. estruturadas sao linguagens que estruturam o programa em blocos para resolver os problemas. A filosofia basica de uma linguagem estruturada e dividir para trabalhar, voce divide um problema em pequenas partes que sejam possiveis de serem feitas. Por exemplo, temos um problema grande que e impossivel de se resolver sozinho, dividimos este problema em pequenas partes simples que se integrando os pedacinhos acabam resolvendo o problema maior complexo.Outra coisa atrelada a essa ideia basica de dividir para trabalhar e que as divisoes sejam feitas de modo que os modulos sejam independentes ao maximo do contexto onde se esta inserido. O que isso quer dizer? Que os modulos tem que ter um carater geral, independente, para que futuramente possa ser encaixado em outro problema que possa necessitar da tarefa que esse modulo realiza. Voce precisa apenas saber o que a rotina faz e nao como ela faz, isso pode ser util para compartilhar codigo. Imagine que daqui a 1 ano, voce tenha diversas funcoes desenvolvidas e deseje criar um programa com algumas similaridades do que voce ja criou. Simples, basta pegar as funcoes que voce nem lembra mais como funcionam mas sabe o que elas fazem e encaixar no lugar certo do seu novo programa, economizara muito codigo e tempo.Vamos a um exemplo, tem-se um problema de matematica de arranjo ou combinacao (probabilidade? matematica combinatoria?) Tambem nao sou muito bom nisso:)