Issuu on Google+

FACULDADE DO ESPÍRITO SANTO UNES

PROGRAMAÇÃO DE COMPUTADORES DOUGLAS YEE ELIZEU BAPTISTA MARCOS RIBEIRO THOMAS SOUZA

25 DE JUNHO DE 2012, CACHOEIRO DE ITAPEMIRIM, ES


ALGORÍTMO Um algoritmo é uma sequência finita de instruções bem definidas e não ambíguas cada uma das quais pode ser executada mecanicamente num período de tempo finito e com uma quantidade de esforço finita. O conceito de algoritmo é frequentemente ilustrado pelo exemplo de uma receita culinária, embora muitos algoritmos sejam mais complexos. Eles podem repetir passos (fazer iterações) ou necessitar de decisões (tais como comparações ou lógica) até que a tarefa seja completada. Um algoritmo corretamente executado não irá resolver um problema se estiver implementado incorretamente ou se não for apropriado ao problema. Um algoritmo não representa, necessariamente, um programa de computador, e sim os passos necessários para realizar uma tarefa. Sua implementação

pode ser feita por

um computador, por outro tipo de autômato ou mesmo por um ser humano. Diferentes algoritmos podem realizar a mesma tarefa usando um conjunto diferenciado de instruções em mais ou menos tempo, espaço ou esforço do que outros. Tal diferença pode ser reflexo da complexidade computacional aplicada, que depende de estruturas de dados adequadas ao algoritmo. Um programa

de

computador é

essencialmente

um

algoritmo

que

diz

ao computador os passos específicos e em que ordem eles devem ser executados, como por exemplo, os passos a serem tomados para calcular as notas que serão impressas nos boletins dos alunos de uma escola. Logo, o algoritmo pode ser considerado uma sequência de operações que podem ser simuladas por uma máquina de Turing completa. Quando os procedimentos de um algoritmo envolvem o processamento de dados, a informação é lida de uma fonte de entrada, processada e retornada sob novo valor após processamento, o que geralmente é realizado com o auxílio de uma ou mais estrutura de dados. Para qualquer processo computacional, o algoritmo precisa estar rigorosamente definido, especificando a maneira que ele se comportará em todas as circunstâncias. A corretividade do algoritmo pode ser provada matematicamente, bem como a quantidade assintótica de tempo e espaço (complexidade) necessários para a sua execução. Estes aspectos dos algoritmos são alvo da análise de algoritmos. A maneira mais simples de se pensar um algoritmo é por uma lista de procedimentos bem definida, na qual as instruções são executadas passo a passo a partir do começo da lista, uma idéia que pode ser facilmente visualizada através de umfluxograma. Tal formalização adota as premissas da programação imperativa, que é uma forma mecânica para visualizar e desenvolver um algoritmo. Concepções alternativas para algoritmos variam em programação funcional e programação lógica.


Fluxograma, um exemplo de algoritmo imperativo. O estado em vermelho indica a entrada do algoritmo enquanto os estados em verde indicam as possíveis saídas.

DIRETIVAS As diretivas são os comandos utilizados pelo pré-processador, na qual o préprocessador é um programa que examina e modifica o código-fonte antes da compilação. Estes comando estarão disponíveis no código-fonte, mas não no código compilado. As diretivas iniciam com # . -Exemplo: # include <stdio.h> Essa diretiva permite inserir um arquivo qualquer no código-fonte.

COMANDOS DE LEITURA E ESCRITA *ESCRITA A função printf é uma das funções de entrada e saída que mostra na tela parâmetros que são passados como argumento. Seu protótipo stá na biblioteca <stdio.h>. -Exemplo: Pintf ( “<expressão de controle>”, lista de argumento)


*LEITURA A função scanf realiza a leitura de um texto a partir do teclado. Os paramentros são, uma string, indicando os tipos das variáveis que serão lidos e o formato da leitura, e uma lista de variáveis. Ela aguarda que o usuário digite um valor e atribui o valor digitado a variável.

COMANDOS LÓGICOS Uma ação muito importante que o processador de qualquer computador executa, e que o torna diferente de qualquer outra máquina, é a tomada de decisão definindo o que é verdadeiro e o que é falso. Se quisermos fazer um bom programa, esse programa deve ser capaz de definir caminhos diferentes de acordo com decisões que o próprio programa toma. Para isso, precisamos de uma estrutura seletiva da qual o único valor possível é o bit 1 ou 0, resumindo: retornar o valor VERDADEIRO ou FALSO. Em C / C++, como em muitas linguagens de programação, quem faz isso é o IF (SE traduzindo). Ou seja, se for tal coisa, faça isso! Simples desse jeito. O ELSE é o que chamamos de caso contrário, ou seja, se for falso execute o que está no ELSE. Exemplificando: Se (IF) for tal coisa, faça isso! Caso contrário (ELSE), faça aquilo! Usando IF Para usar o IF basta digitar entre parênteses o que deve ser comparado. IMPORTANTE: IF é uma palavra reservada que não aceita ponto-e-vírgula (;) no final. Se for verdadeiro, o programa executará a primeira linha logo abaixo do if. Mas, e se quisermos executar várias linhas se if for verdadeiro? Se o if tiver que executar várias linhas, todas as linhas que devem ser enquadradas dentro do bloco de dados - as chaves ({}). Usando ELSE O ELSE só existe se tiver um IF. O else só será executado se o IF for falso. Else executará só a primeira linha abaixo dele. Se o else tiver que executar várias linhas, vale a mesma regra de if. Todas as linhas a ser executadas deverão estar contidas dentro do bloco de dados ({}). No exemplo abaixo está um exemplo de uso do if e else com apenas uma linha a ser executada.


01.#include <cstdio> 02.#include <cstdlib> 03. 04.int main (void){ 05.int nr; 06.printf ("Digite um numero:\n"); 07.scanf ("%d", &nr); 08.getchar (); 09.if (nr>=0) 10.printf ("O numero digitado e positivo\n\n"); 11.//se nr for maior ou igual a 0 o numero sera positivo 12.else 13.printf ("O numero digitado e negativo\n\n"); 14.//caso contrario, ele sera negativo! 15.system ("pause"); 16.}

COMANDOS DE REPTIÇÃO (LOOP) *FOR As estruturas de repetições são muito importantes para programas, pois muitas vezes o mesmo procedimentos têm que ser executados mais de uma vez. Em C/C++, basicamente existem três tipos de estrutura de repetição: FOR, WHILE e DO WHILE. Nessa seção estudaremos o FOR. O FOR como qualquer iteração* precisa de uma variável para controlar os loops (voltas). Em for, essa variável deverá ser inicializada, indicada seu critério de execução, e forma de incremento ou decremento. Ou seja, for precisa de três condições. Vale salientar que essas condições são separadas por ponto-e-vírgula (;). *ITERAÇÃO é sinônimo de repetição.


Como procedemos: FOR (inicialização ; até quando irá ser executado ; incremento ou decremento). No exemplo, faremos um programa que contará de 1 a 100. Você verá que é um programa que faz algo muito simples, ele soma um a uma variável várias vezes. O x começa em 1, o loop só será executado enquanto x for menor ou igual a 100 e a cada loop será somado 1 a x. Veja:

//loop com FOR 02.#include <iostream> 03.#include <cstdlib> 04.using namespace std; 05. 06.int main (void){ 07.int x; 08.for (x=1; x<=100; x++) 09./* inicialização: x começa em 1 10.critério: executar enquanto x for menor ou igual a 100 11.incremento (++) será somado 1 a x */ 12.cout << x <<"\t"; system ("pause");

O FOR também segue a mesma regra de IF. Caso haja mais de uma linha a ser executada pelo comando FOR, essas deverão estar agrupadas num bloco de dados ( { } ). Este comando não se limita a operações com constantes, por exemplo: x=1, executar enquanto x for menor ou igual a 100... Às vezes, o usuário pode entrar com dados para controlar o loop. Veja: No exemplo 1, a contagem começará a partir do número que o usuário digitar. 01.//exemplo 1 02.#include <iostream> 03.#include <cstdlib> 04.using namespace std;


05. 06.int main (void){ 07.int x, user; 08.cout <<"Digite um numero menor que 100 para iniciar a contagem\n"; 09.cin >> user; 10.cin.ignore (); 11.system ("cls"); // limpa a tela 12.for (x=user; x<=100; x++) 13.cout << x <<"\t"; 14.system ("pause"); 15.}

No exemplo 2, a contagem começará no 1 e terminará no número digitado pelo usuário.

01.//exemplo 2 02.#include <iostream> 03.#include <cstdlib> 04.using namespace std; 05. 06.int main (void){ 07.int x, user; 08.cout <<"Digite um numero menor que 100 para iniciar a contagem\n"; 09.cin >> user; 10.cin.ignore (); 11.system ("cls"); // limpa a tela 12.for (x=1; x<=user; x++) 13.cout << x <<"\t";


14.system ("pause"); 15.}

*WHILE Uma outra forma de iteração (repetição) em C/C++ é o WHILE. While executa uma comparação com a variável. Se a comparação for verdadeira, ele executa o bloco de instruções ( { } ) ou apenas a próxima linha de código logo abaixo. Procedemos da seguinte maneira: WHILE (comparação) Veja o exemplo abaixo. 01.#include <iostream> 02.#include <cstdlib> 03.using namespace std; 04. 05.int main (void){ 06.int par=0; 07.cout <<"Os numeros pares de 0 a 100 sao:\n\n"; 08.while (par<=100) 09.{ 10.cout <<par<<"\t"; 11.par+=2; //o mesmo que par=par+2 12.} 13.system ("pause"); 14.return 0; 15.}


Neste exemplo serão mostrados os números pares entre 0 e 100. Algumas precauções O WHILE muitas vezes pode nos pregar peças. Se prestarmos atenção, no exemplo acima inicializamos a variávelpar em 0, pois quando usamos no while uma variável sem inicializa-la pode causar comportamentos estranhos. E por que isso acontece? É simples. C/C++ não inicializa variáveis automaticamente em 0, ou seja, se você comparar uma variável não inicializada, essa variável pode ser qualquer coisa, ex.: 1557745, -9524778, 1 ou até mesmo 0. Outro problema comum com o while é o loop infinito. O WHILE, diferentemente de FOR, não incrementa ou decrementa automaticamente uma variável, isso deve estar expressado dentro do bloco de instruções, como podemos ver na linha par+=2. Caso contrário, par sempre seria zero e nunca chegaria a 100 para o loop parar, causando o loop infinito. O ideal é utilizar o WHILE em um loop definido pelo usuário, que a partir de uma entrada ele termine. Ou seja, enquanto o usuário não fizer determinada ação, o loop continuará a dar voltas. Como no exemplo abaixo. 01.#include <iostream> 02.#include <cstdlib> 03.using namespace std; 04. 05.int main (void){ 06.int nr=1; 07.while (nr!=0) //enquanto nr for diferente de 0 08.{ 09.cout <<"Digite um numero (0 para finalizar): "; 10.cin >> nr; 11.cin.ignore (); 12.if (nr>0) 13.cout <<"Este numero e positivo\n"; 14.else 15.cout <<"Este numero e negativo\n"; 16.}


17.return 0; 18.} No exemplo, o programa só irá parar quando o usuário digitar 0, qualquer outro número fará com que o programa continue dando loop. Perceba que a variável ainda está sendo inicializada.

MATRIZ – VETORES As matrizes em geral são caracterizadas por se tratarem de uma única variável de um determinado tamanho que guarda varias informações do mesmo tipo. Essas informações são gravadas na memória seqüencialmente e são referenciadas através de índices. As matrizes podem ser tanto unidimensionais (vetores) como multidimensionais. *MATRIZES UNIDIMENSIONAIS São matrizes de uma única dimensão. Essas matrizes também são chamadas de vetores. A declaração de vetores em C deve obedecer a seguinte sintaxe: Tipo nome_vetor[tamanho]; O tipo deve ser especificado conforme a tabela 2 do primeiro artigo. E o tamanho representa a quantidade de elementos que esta matriz irá conter. É importante dizer que na linguagem c as matrizes começam pelo índice 0 que guarda o primeiro elemento da matriz. Para entender melhor, considere que seja necessário declarar um vetor do tipo inteiro que contenha 10 elementos. Isto é feito da seguinte forma: int vetor_exemplo[9];

Isso por que a matriz “vetor_exemplo” vai de 0 a 9, ou seja, contém 10 elementos. Também é possível inicializar o vetor no momento de sua declaração. Para isso veja a sintaxe abaixo: Tipo nome_vetor[tamanho]={lista_de_valores};

Sendo que todos os elementos da lista de valores devem ser separados por virgula e serem todas do mesmo tipo de dados especificado. A seguir temos a declaração do “vetor_exemplo” com os valores atribuídos. int vetor_exemplo[9]={0,1,2,3,4,5,6,7,8,9};


Exemplo de um programa completo utilizando vetores e outros conceitos estudados até o momento.

#include<stdio.h> void main() { int vet1[5]={1,2,3,4,5}; /*declaração e inicialização do vetor vet1*/ int vet2[5]={6,1,2,2,5}; /*declaração e inicialização do vetor vet2*/ int vetSoma[5]; /*declaração do vetor vetSoma que vai guardar o resutado da soma dos dois vetores(vet1 e vet2).*/ int x; printf("Este programa soma os dois vetores abaixo:\n"); printf("vet1={1,2,3,4,5}\n"); printf("vet2={6,1,2,2,5}\n"); printf("\n"); printf("vetor resultante da soma:\n");

for(x=0; x<5; x++) { vetSoma[x]=vet1[x]+vet2[x]; /*soma os valores*/ printf("vetSoma[%d]:%d\n",x,vetSoma[x]); /*exibe na tela*/ } /*fim do for*/

} /*fim do programa*/

O programa acima soma dois vetores (vet1 e vet2) e exibe sua resposta na tela. O objetivo deste exemplo é mostrar como declarar e inicializar um vetor. Veja a seguir a saída do programa:


Este programa soma os dois vetores abaixo: vet1={1,2,3,4,5} vet2={6,1,2,2,5}

vetor resultante da soma: vetSoma[0]:7 vetSoma[1]:3 vetSoma[2]:5 vetSoma[3]:6 vetSoma[4]:10

Os vetores são muito usados para criar uma string de caracteres, pois em C não existe nenhum tipo de dados para definir uma string.A declaração de um vetor contendo uma string sempre deve ser maior que o número de caracteres, pois o compilador acrescenta automaticamente no final da string um espaço nulo que indica o seu término. Este segundo exemplo é muito simples, mostra apenas como podem ser feitas a declaração e inicialização de um vetor de string. #include<stdio.h> void main() { char c1 = 'a'; char vet1[30]="Aprendendo a mexer com string\n"; /*Imprimindo os dados na tela*/ printf("O tipo de dado char guarda apenas um caractere\n"); printf("A variavel c1 do tipo char contem o caractere: %c\n",c1); printf("\n"); printf("Para trabalhar com uma string deve ser declarado um vetor do tipo char"); printf("\nO vetor do tipo char contem a string: %s",vet1); } /*fim do programa*


COMANDOS LÓGICOS IF/ELSE

COMANDOS LÓGICOS IF/ELSE


COMANDOS LÓGICOS IF/ELSE

COMANDOS DE REPETIÇÃO FOR


COMANDOS DE REPETIÇÃO FOR

COMANDOS DE REPETIÇÃO WHILE


COMANDOS DE REPETIÇÃO WHILE


Tutorial Linguagem C