Chat Computação

sábado, 20 de novembro de 2010

Mais um pouco de Programação em C

Curso de programação em C

Baixem: http://www.descolando.com.br/resources/Curso_de_C_da_UFMG_1.pdf

Páginas de Cursos para Linguagem C


  1. Introdução
  2. Páginas com comentários
  3. Alunos que realizaram a pesquisa
  4. Como conseguir um compilador C gratuito e de qualidade
  5. Como conseguir um Editor para escrever os programas?


Introdução
As páginas abaixo e os comentários são o resultado de um trabalho desenvolvido pela turma de 1999/1 da disciplina Computação para Informática do curso de Bacharelado em Informática do Departamento de Ciência da Computação do IM-UFRJ. Este é o primeiro curso de programação e o primeiro contato dos alunos com o computador no nosso curso.
O objetivo da divulgação do resultado destas pesquisas é facilitar a procura de quem estiver interessado em aprender sobre a linguagem C. Estes endereços são apenas um ponto de partida para uma pesquisa e não cobrem todas as possibilidades. Não estão listados todos os endereços pesquisados pelos alunos devido a falta de tempo.
Os comentários resumidos servem como uma indicação do conteúdo das páginas e foram editados por mim a partir dos comentários emitidos pelos alunos. Portanto, a responsabilidade pelo seu conteúdo é minha. Como a maioria dos alunos não tem experiência em programação procurei fazer uma edição dos comentários recebidos. No entanto,  a minha edição foi somente no sentido de corrigir e acertar algumas frases escritas em linguagem mais do que coloquial e retirar alguns comentários que poderiam ser entendidos como incovenientes. Não procurei fazer uma análise detalhada de todas as páginas (não tive tempo) para verificar se os comentários estão espelhando a verdade.
Como os alunos trabalharam separadamente, algumas páginas aparecem mais de uma vez. Coloquei os diversos comentários enviados pelos alunos para fornecer mais detalhes.
Portanto, nada melhor do que ir até a página e fazer a sua própria análise.
 Não podemos afirmar que todas as páginas da lista estejam ativas.
Resumo: Use os endereços como quiser mas faça a sua própria análise e escolha.
 Adriano Cruz


Alunos
A lista dos alunos que fizeram a pesquisa está em lista.


Páginas
  • http://casadosprogramadores.com.br
    • Contém diversos artigos sobre C/C++, C++ Builder, Pascal, Delphi, Java e Assembly. Contém downloads de alguns programas e seus respectivos arquivos fontes, dentre eles dois jogos. Possui também a opção de download de alguns compiladores (freeware e shareware). Há também uma seção muito boa de perguntas e respostas e links para revistas e livrarias do ramo.
  • http://gd.tuwien.ac.at/languages/c/programming-bbrown
    • Nesta página há uma extensa lista de tópicos (em torno de 40). O site apresenta partes interessantes, contendo importanes recomendações (p. ex. Programming Style). Sem talvez, obedecer a uma sequência didática de assuntos, vale como referência por definir concisamente os assuntos, fornecer vários exemplos de sintaxes e por dispor de uma seção de testes interativos.
  • http://members.tripod.com/~johnt/c.html
    • C tutorial on-line. Learn C in 5 hours. O texto em pouco tempo possibita o entendimento dos aspectos básicos do C e prepara para a leitura de texto mais avançado.
    • Uma rápida introdução à linguagem c, talvez ate rápida demais, que promete ensinar C em apenas 5 horas. Desta maneira só mesmo os programadores com certa experiência podem desfrutar desta página.
    • Neste endereço você encontra um texto simplificado , com vários exemplos, de aspectos básicos de C . ( em inglês )
    • O curso é um tutorial capaz de ensinar conhecimentos básicos de programação em C em 5 horas (segundo o autor), através de exemplos práticos.
  • http://www.cyberdiem.com/vin/learn.html
    • Esse site é interessante, pois dá uma introdução ao C, uma explicação das origens do C e de tudo que é preciso para iniciar-se no C, além de vários livros  sobre C com links.
  • http://www.dinkumware.com/htm_cl/index.html
    • Trata-se de um material de referência on-line, contém todas as funções e macros da biblioteca padrão C.
  • http://www.di.ufpe.br/~if097/
    • (Dep. de info da UFPE) Foi encontrado um curso em C bastante completo. Na introdução podemos ver procedimentos para criar e executar programas. Encontramos ainda, abordagem sobre expressões e operadores, falando sobre operadores lógicos, aritméticos, relacionais e etc. Neste curso, observamos ainda a presença de listas e provas passadas (de 96 ao primeiro semestre de 98), além de projetos (Ccd, Easy cad, Gráficos e Taxiair).
    • Página com um bom material de C, porém eu não o achei muito detalhado. Ela é referente a cadeira Linguagens de Programação I da UFPE, possuindo assim materiais como prova, projetos e outras coisas referentes ao mundo acadêmico.
  • http://www.eskimo.com/~scs/C-faq/top.html
    • Material de consulta e informações sobre a linguagem C, com diversos explicações das funções. Ótimo para iniciantes, e para quem desejar saber um pouco de C. Porém encontra-se em ingles.
  • http://www.geocities.com/Athens/Ithaca/exi/archive.htm
    • Apostilas e Listas de exercícios, fontes de jogos e provas (que são aplicadas àqueles alunos do site).
    • Aulas, lista de exercícios, provas e links para outras páginas de Linguagem C.
    • Página criada para auxiliar o aprendizado da linguagem C. Possui listas de diversos exercícios, provas anteriores do curso, provavelmente ministrado pelo professor Eduardo Argollo, criador da página, lista de discussões e uma interessante oficina de idéias.
  • http://www.lysator.liu.se/c/
    • Informacoes sobre a linguagem C.  Inclui ANSI C, literatura, história e informações culturais sobre a linguagem.
  • http://www.netcom.com/~tjensen/ptr/pointers.htm
    • O curso é oferecido na forma de tutorial em html e é dividido em 10 capítulos, que oferecem conhecimentos básicos de programação em C.
  • http://www.strath.ac.uk/CC/Courses/NewCcourse/ccourse.html
    • Amplo tutorial em língua inglesa sobre programação em C. Possui uma certa ênfase na programação para UNIX.

Compiladores Gratuitos
"Seja contra a pirataria, use somente software gratuito". Adriano Cruz
Aqui apresentamos locais onde podem ser conseguidos compiladores C gratuitos e de qualidade para quem usa o windows. Se você usa o linux, free bsd ou algum outro unix, quase certamente você terá o compilador gcc instalado. Para quem usa o outro sistema aqui vão algumas dicas.
  • MinGW: Minimalist Gnu for Windows - Uma coleção de arquivos específicos para Windows e bibliotecas que combinadas com as ferramentas da GNU permitem a produção de programas nativos para Windows que não precisam de DLLs de outros sistemas.
    Ao chegar na página (http://www.mingw.org) procure no canto direito da página o programa instalador. No dia em que olhei na página (17/03/2006) estava com o nome (Proposed: MinGW 5.0.2 installer). Baixe este programa e o execute. Ele faz o resto. Uma vez instalado o mingw falta colocar na variável de ambiente PATH o caminho para o executável do compilador. Para isto procure no control panel do windows como adicionar na variável de ambiente chamada PATH o caminho completo para o compilador. No meu caso o caminho é d:\mingw\bin. Não esqueça os pontos e vírgula.
  • Versão simplificada do turbo C da Borland aqui.
  • http://www.delorie.com/djgpp: DJGPP is a complete 32-bit C/C++ development system for Intel 80386 (and higher) PCs running DOS. It includes ports of many GNU development utilities. The development tools require a 80386 or newer computer to run, as do the programs they produce. In most cases, the programs it produces can be sold commercially without license or royalties.
  • http://community.borland.com/museum Site da Borland para fazer download do TC++ 1.01 ou to TC 2.01(gratuito). É necessário fazer um cadastro. Mas isto dá direito outras facilidades, tais como listas de discussão. Faça download do programa. Quando terminar, unzip o arquivo em uma pasta no seu HD. O TC++ 1.01 é distribuido em 4 conjuntos equivalentes a 4 disquetes. Copie as 4 pastas para o mesmo diretório. Para instalar o software, execute o programa Install.exe. (A versão TC 2.01 é menor, porém não permite o uso do mouse.)

Editores
Há uma variedade de editores possíveis de serem usados. Cito apenas alguns e em ordem aleatória.
  • Editplus É um editor de textos para programadores que roda em Windows. É possível usar uma versão de testes antes de efetuar a compra.
  • Crimson Possível configurá-lo para que seja possível compilar e executar o programa a partir do próprio editor. Fazendo com que ele se torne um ambiente integrado. Para configurar o editor ir em Tools e escolher Conf User Tools. Em User Tools Escolha uma linha vaga. Aqui estão as minhas configurações para compilar com o gcc:
    Menu Text: Compila C
    Command: C:\MinGW\bin\gcc.exe
    Argument: $(FileName) -o $(FileTitle).exe
    Initial Dir: $(FileDir)
    Hot Key: Digite a sua tecla preferida
    Para executar o programa as minhas configurações são:
    Menu Text: Executa C
    Command: c:\windows\system32\cmd.exe
    Argument: /C $(FileTitle).exe
    Initial Dir: $(FileDir)
    Hot Key: Digite a sua tecla preferida
    Não esqueça de marcar a opção Capture Output

  • vi O O que eu uso. Estranho para quem está acostumado com menus, mouse etc. Agora ele vem com estas firulas também.

Lousa Digital Georreferenciamento

Georreferenciamento (português brasileiro) ou georreferenciação (português europeu) de uma imagem ou um mapa ou qualquer outra forma de informação geográfica é tornar suas coordenadas conhecidas num dado sistema de referência. Este processo inicia-se com a obtenção das coordenadas (pertencentes ao sistema no qual se pretende georreferenciar) de pontos da imagem ou do mapa a serem georreferenciados, conhecidos como pontos de controle. Os pontos de controle são locais que oferecem uma feição física perfeitamente identificável, tais como intersecções de estradas e de rios, represas, pistas de aeroportos, edifícios proeminentes, topos de montanha, entre outros. A obtenção das coordenadas dos pontos de controle pode ser realizada em campo (a partir de levantamentos topográficos, GPS – Sistema de Posicionamento Global), ou ainda por meio de mesas digitalizadoras, ou outras imagens ou mapas (em papel ou digitais) georreferenciados.
No Brasil, a Lei 10.267/01 torna obrigatório o georreferenciamento do imóvel na escritura para alteração nas matrículas, como mudança de titularidade, remembramento, desmembramento, parcelamento, modificação de área e alterações relativas a aspectos ambientais, respeitando os prazos previstos. A mesma lei criou o Cadastro Nacional de Imóveis Rurais - CNIR, que terá base comum de informações, gerenciada conjuntamente pelo INCRA e pela Secretaria da Receita Federal, produzida e compartilhada pelas diversas instituições públicas federais e estaduais produtoras e usuárias de informações sobre o meio rural brasileiro.

Fonte: http://pt.wikipedia.org/wiki/Georreferenciamento

Derivadas de Funções


3. Derivada de uma função do 1.º grau

A derivada de uma função do 1.° grau é igual ao coeficiente de x.

f(x) = ax + b →f’(x) = a

4. Derivada da função potência

A derivada de uma função potência de x, de expoente genérico “n", é verificada pela definição de derivadas e pelo binômio de Newton.

f(x) = xn→ f’(x) = n . xn-1

5. Derivada do produto de função por uma constante

A derivada do produto de uma constante por uma função é igual ao produto da constante pela derivada da função.

g(x) = K . f(x) →g(x) = K . f (x)

6. Derivada da soma de funções

A derivada de uma soma de unções é igual à soma das derivadas dessas funções.

f(x) = u(x) + v(x)→ f(x) = u(x) + v(x)

7. Derivada da função potência

Sendo u uma função real de x, e sendo n um número real, então a derivada da função y = un é dada por y = un→ y’ = n . un-1 . u’ onde u’ é a derivada de u em relação a x.

8. Derivada do produto de funções

Sendo u e v funções de x, a derivada do produto de duas funções é igual à soma dos produtos de uma das funções pela derivada da outra.

y = u . v →y = uv + uv

onde u e v são as derivadas de u e v, respectivamente, em relação a x.

9. Derivada do quociente de funções

Sendo u e v funções reais de x, a derivada do quociente destas funções é dada pela relação:



onde u’ e v’ são as derivadas de u e v, respectivamente, em relação a x.

10. Derivada da função exponencial

Sendo “a” um número real ( a > 0 e a 1) e “u” uma função de x, então a derivada da função y = ax é dada por

y = au →y’ = au . lna . u’

Importante:

Como conseqüência desta relação, obtém-se a seguinte fórmula: y = eu →y’ = eu . u’

11. Derivada da função logarítmica

A derivada de uma função logarítmica é dada pela fórmula:


12. Derivada da função seno

A derivada da função seno de um arco u, onde u é a função de x, é:

y = sen u→ y’ = u’ . cos u

13. Derivada da função co-seno

A derivada da função co-seno de um arco u, onde u é uma função de x, é:

y = cos u→ y’ = – u’ . sen u

14. Derivada da função tangente

A derivada da função tangente de um arco u, onde u é uma função de x, é:

y = tg u →y’ = u’ . sec2 u

Importante:

y = sen x →y’ = cos x

y = cos x →y’ = – sen x


Fonte: http://www.colegioweb.com.br/matematica/derivada-de-funcoes.html

segunda-feira, 15 de novembro de 2010

Linguagem de Programação

Introdução

Os computadores são funcionários quase perfeitos. Fazem tudo o que mandamos, não reclamam, não se importam de trabalhar até tarde da noite, não cobram hora extra nem tiram férias. Mas, em compensação também não pensam. Para que façam qualquer coisa é preciso explicar tudo com os mínimos detalhes e na língua deles.

Considerando que tudo o que os computadores conseguem entender são seqüências intermináveis de números binários, fornecer estas "instruções" pode ser muito penoso para um ser humano. Você consegue se imaginar lendo um manual de 5.000 páginas e decorando um a um centenas de códigos binários que representam as instruções do processador?

Se os programadores precisassem programar diretamente em binários, decorando seqüências como 10111011101101101110110011001010 para cada instrução do processador e para cada endereço de memória a ser acessado, provavelmente não teríamos mais programadores... já estariam todos loucos.

Para facilitar as coisas, começaram a ser desenvolvidas as linguagens de programação, que diferem na sintaxe e recursos, mas tem um ponto em comum, que é a existência de um compilador. Seja programando em C, ou seja em Kylix, você usará um editor para escrever seu programa, respeitando as regras da linguagem escolhida e em seguida rodará o programa compilador, que interpretará os comandos que inclui no programa e os transformará em binários, as instruções que são entendidas pelo processador.

A vantagem é que você poderá trabalhar com instruções como if, else, etc. além de todas as facilidades oferecidas pela linguagem ao invés de gigantescos endereços binários. Sem dúvida muito mais simples.

Existem diversas linguagens de programação, meu objetivo é dar algumas noções básicas sobre as peculiaridades e utilidade de cada uma.

Para começar, existe uma linguagem "básica" para quem quer aprender a programar, ensinada nos cursos de lógica da programação, o pseudocódigo. Ele não e uma linguagem "de verdade", mas e uma maneira mais simples para aprender os fundamentos usados em todas as linguagens de programação.

Podemos começar com um exemplo simples. Vamos fazer um programa capaz de tomar uma decisão fácil. Ele pergunta a nota do aluno e diz se ele passou ou não. Para um ser humano isso seria um problema muito elementar, mas para o computador as coisas não são tão simples assim. Lembre-se que ele e burro e precisa ser orientado passo a passo. Nosso programinha em pseudocódigo poderia ficar assim:


escreva: "Qual é a nota do aluno?"
leia nota

se nota maior ou igual a sete

então:
escreva "Ele passou"

senão:
escreva: "Ele foi reprovado"

fim do se
fim do programa

Este programinha perguntaria a nota e com base no numero que for digitado avisaria se o aluno passou ou não.

Ele poderia ser escrito em qualquer linguagem, mas a lógica seria a mesma. De acordo com os recursos oferecidos pela linguagem escolhida ele poderia ter uma interface simples em modo texto, uma interface gráfica mais trabalhada, aparecer no meio de uma pagina web e assim por diante.

As linguagens de programação são conjuntos de padrões e comandos que você pode usar para dar ordens para nossos amigos burros.

Assim como nas línguas faladas, existem diferenças de sintaxe, gramática e existem linguagens mais simples ou mais complicadas de aprender e linguagens mais adequadas para tipo de tarefa a realizar. Veja alguns exemplos de linguagens de programação:



Assembly

O Assembly foi provavelmente a primeira linguagem de programação da história, surgida na década de 50, época em que os computadores ainda usavam válvulas. A idéia do assembly é usar um comando em substituição a cada instrução de máquina.

No assembly, cada uma destas instruções, equivale a uma instrução do processador. Ao invés de usar instruções como 10101011 você pode usar outras bem mais fáceis de entender e de memorizar, como add, div, mul, and, or, not, etc. Você também pode criar variáveis, que são pequenos espaços na memória RAM reservados para guardar algum tipo de dado, que o programa precisará mais tarde. Você pode usar aquelas instruções que citei para lidar com elas. Por exemplo, a instrução "add" faz com que o processador some duas variáveis; "add x, y" por exemplo, soma os valores de x e y.

Apesar de ser exaustivamente trabalhoso, você pode perfeitamente desenvolver pequenos programas em assembly, para isso só vai precisar de um compilador e bastante paciência para aprender. Você pode baixar um gratuíto em http://www.web-sites.co.uk/nasm nesta mesma página você vai encontrar alguns manuais que podem ajudar bastante.

O compilador transforma o código escrito em assembly em linguagem de máquina, que finalmente poderá ser entendida pelo processador.

Existem também os decompiladores, que fazem o trabalho inverso, de transformar um programa já compilado, em um código em linguagem assembly. Este recurso é chamado de engenharia reversa. É assim que conseguem crackear programas, quebrar códigos de proteção (como o do DVD), etc. Claro que para isso, é preciso alguém que conheça muito de assembly e que tenha disposição para ficar estudando o código até encontrar o que procura.

Por causa desta característica de permitir trabalhar diretamente com as instruções do processador, o assembly é chamado de linguagem de baixo nível. Existem também linguagens de alto nível, como C++ ou Pascal, onde é possível usar várias funções já prontas ou mesmo ferramentas visuais, como o Kdeveloper ou o Kylix, que são ainda mais fácies.



Fortran

O Fortran foi uma das primeiras linguagens de alto nível da história. Enquanto o Assembly é chamado de linguagem de baixo nível, por nele utilizarmos diretamente as instruções e endereços do processador e memória, numa linguagem de alto nível temos várias funções prontas, o que facilita muito a programação, mas em compensação torna em muitos casos o programa maior e mais pesado, já que o compilador jamais conseguirá gerar um código tão otimizado quanto um programador experiente conseguiria.

Fortran é a contração de "Formula Translator". A primeira versão do Fortran foi criada no final da década de 50, mas a linguagem começou a ser usada em larga escala apartir da metade da década de 60, quando surgiram várias versões diferentes. Atualmente o Fortran é pouco usado, mas existe um ícone mágico para instalar o compilador no Kurumin.



Pascal

O Pascal é outra linguagem de alto nível, criada durante a década de 60. O Pascal é uma linguagem bastante estruturada, com regras bastante rígidas, o que a torna difícil de usar. Hoje em dia o Pascal original é pouco usado, mas seus descendentes diretos como o Free Pascal evoluíram muito. O próprio Kylix (unto com o Delphi) é uma evolução do Pascal.



Cobol

Cobol significa "Common Business Oriented Language". Esta linguagem foi desenvolvida no final da década de 50, com o objetivo de ser uma plataforma de desenvolvimento para aplicações bancárias e financeiras em geral. Comparado com o Pascal e o Assembly, comuns na época, o Cobol é uma linguagem bastante amigável, o que garantiu uma grande aceitação. Até hoje esta linguagem é usada em muitos sistemas bancários, o que explica a grande procura por programadores experientes nesta linguagem na época do bug do ano 2000.


C

O C foi desenvolvido durante a década de 70, mas ainda é largamente utilizado. A grande vantagem do C é permitir escrever tanto programas extremamente otimizados para a máquina, como seria possível apenas em assembly, e ao mesmo tempo vir com várias funções prontas, como uma linguagem de alto nível, que podem ser utilizadas quando não for necessário gerar um código tão otimizado.

A maior parte dos programas Linux e o Kernel quase todo foram escritos em C, o que explica o por que do sistema ser tão rápido em algumas tarefas.


C++

O C++ mantém os recursos do C original, mas traz muitos recursos novos, como recursos orientados a objetos, sendo também bem mais fácil de utilizar. O C++ é bastante usado atualmente para desenvolver muitos programas para várias plataformas, ele é por exemplo a linguagem oficial do KDE (a interface gráfica usada por padrão no Kurumin) e da maioria dos programas para ele.


Python

O Python é uma linguagem de programação com uma sintaxe muito simples e intuitiva e ao mesmo tempo bastante poderosa, que pode ser usada por toda classe usuários. É uma boa opção de linguagem para quem está começando a programar.

No Kurumin você pode abrir o Python em Iniciar > Desenvolvimento.

A maior parte das distribuições instalam o Python por default, basta abrir um terminal e chamar "python". Existe também uma versão for Windows que pode ser baixada no: http://www.python.org/download/