You are on page 1of 108

Curso de Pensamento Computacional

domingo, 15 de setembro de 13

Curso de Pensamento Computacional

domingo, 15 de setembro de 13

Objetivos
Adquirir competncia para representar a resoluo de problemas por meio de algoritmos. Adquirir conhecimentos bsicos em Linguagem de Programao C, padro ANSI Ao final do curso o aluno deve ter adquirido confiana em sua habilidade de ler e escrever cdigo.

domingo, 15 de setembro de 13

Histria
Ada Augusta B. King (1815 - 1852) Primeira programadora de toda a histria Desenvolveu programas para uma mquina chamada Bobbage, que at ento ningum havia desenvolvido.

domingo, 15 de setembro de 13

Histria
Alan Turing (1912 - 1954) Foi responsvel por criar a Mquina que manipulava smbolos ligados a regras prprias Quebrou os cdigos secretos gerados pelos alemes na II G.M. Apesar de tudo, foi humilhado e preso por ser homossexual

domingo, 15 de setembro de 13

Conceito de Algoritmos
Um algoritmo a descrio de um padro de comportamento, expresso em termos de um repertrio bem definido e finito de aes "primitivas", das quais damos por certo que elas podem ser executadas. Introduziremos de forma intuitiva a noo de algoritmo, motivando ao mesmo tempo as estruturas bsicas de controle (seqncia simples, alternativa e repetio) como formas de raciocnio "naturais.

domingo, 15 de setembro de 13

Conceito de Algoritmos

View

domingo, 15 de setembro de 13

Conceito de Algoritmos

View

domingo, 15 de setembro de 13

Conceito de Algoritmos
Linguagem natural

Algoritmo

Linguagem de Programao

Linguagem de mquina

domingo, 15 de setembro de 13

Conceito de Algoritmos
Sequncia Simples
traga a cesta com batatas do poro; traga a panela do armrio; descasque as batatas; devolva a cesta ao poro;

domingo, 15 de setembro de 13

Conceito de Algoritmos
Alternativas
"traga a cesta com batatas do poro"; "traga a panela do armrio"; se "saia clara" ento "coloque avental"; "descasque as batatas"; "devolva a cesta ao poro;

domingo, 15 de setembro de 13

Conceito de Algoritmos
Repeties
"traga a cesta com batatas do poro"; "traga a panela do armrio"; se "saia clara" ento "coloque avental"; "descasque uma batata"; "descasque uma batata"; ... (50 vezes) "descaque uma batata"; "devolva a cesta ao poro. - Nmero finito de repeties

domingo, 15 de setembro de 13

Conceito de Algoritmos
Repeties
"traga a cesta com batatas do poro"; "traga a panela do armrio"; se "saia clara" ento "coloque avental"; se "nmero de batatas insuficiente" ento "descasque uma batata"; se "nmero de batatas insuficiente" ento "descasque uma batata"; ...(50 vezes) se "nmero de batatas insuficiente" ento "descasque uma batata"; "devolva a cesta ao poro;

domingo, 15 de setembro de 13

Conceito de Algoritmos
Repeties
"traga a cesta com batatas do poro"; "traga a panela do armrio"; se "saia clara" ento "coloque avental"; enquanto "nmero de batatas insuficiente" faa "descasque uma batata"; "devolva a cesta ao poro; - Nmero de repeties necessrias, no preciso saber quantas so previamente.

domingo, 15 de setembro de 13

Conceito de Algoritmos
Um algoritmo computacional uma seqncia de instrues que manipula dados. Instrues: comandos que determinam a forma pela qual os dados devem ser tratados. Dados: informaes recolhidas/fornecidas por diversos meios e que sero processadas pelo computador atravs das instrues.

domingo, 15 de setembro de 13

Conceito de Algoritmos
A linguagem C foi proposta por Brian Kernighan e Dennis Ritchie entre o final da dcada de 1960 e incio da dcada de 1970. The Spirit of C: Trust the programmer. Dont prevent the programmer from doing what needs to be done. Keep the language small and simple. Provide only one way to do an operation. Make it fast, even if it is not guaranteed to be portable.

domingo, 15 de setembro de 13

Conceito de Algoritmos
A linguagem C possui 32 palavras restritas

domingo, 15 de setembro de 13

Conceito de Algoritmos
Identificadores: nomes (rtulos) atribuidos s variveis, funes e estruturas de dados que so utilizados em algoritmos. Regras para formao de Identificadores:

O primeiro caractere deve ser, obrigatoriamente, uma letra; Do segundo caractere em diante so permitidos nmeros e
letras;

O smbolo _, underline, pode ser usado para separar nomes


compostos;

No so permitidos acentos, espaos, smbolos especiais (Ex.:


$#%#$&@#), na composio dos identificadores;

Palavras reservadas no podem ser usadas como Id.; H distino entre maisculo e minsculo, ou seja, Case
Sensitive.

domingo, 15 de setembro de 13

Conceito de Algoritmos
Exemplos vlidos:

Exemplos invlidos:

domingo, 15 de setembro de 13

Conceito de Algoritmos
Varivel: um espao reservado na memria do computador para armazenar um determinado tipo de memria. As variveis devem receber identificadores para poderem ser modificadas e referenciadas quando necessrio Um programa deve conter declaraes que especificam de que tipo so as variveis que ele utilizar e s vezes um valor inicial. Embora uma varivel possa assumir diferentes valores, ela s pode armazenar um valor a cada instante.

domingo, 15 de setembro de 13

Conceito de Algoritmos
21 Idade

tiago

Nome

. . .

domingo, 15 de setembro de 13

Conceito de Algoritmos
Inteiros (int): nmeros inteiros, negativos, nulo ou positivos. Ex: -3, 3, 0, 123. Reais(float): nmeros reais, negativos, nulo ou positivos. Ex: 2.3, 3.44. Caractere(char): apenas um nico caractere alfanumrico. Ex: a, b, 3. Existem mais tipos, porm iremos estudar mais a frente

domingo, 15 de setembro de 13

Conceito de Algoritmos
#include <stdio.h> #include <stdlib.h> int main() { // Seo de Declaraes <declarao de variveis> // Seo de Comandos <comandos> system("PAUSE"); //Opcional, necessrio para Windows return 0; }

domingo, 15 de setembro de 13

Conceito de Algoritmos
#include <stdio.h> #include <stdlib.h> int main() { int idade, num_de_filho; float peso, altura; // Seo de Comandos <comandos> system("PAUSE"); return 0; }

domingo, 15 de setembro de 13

Conceito de Algoritmos
Operador de atribuio

domingo, 15 de setembro de 13

Conceito de Algoritmos
Operadores aritmticos

domingo, 15 de setembro de 13

Conceito de Algoritmos
Precendncia de operadores

Se forem de mesma precedncia, o compilador analisa da esquerda para direita Em caso de dvidas, os parnteses sempre ajudam

domingo, 15 de setembro de 13

Conceito de Algoritmos
Menos unrio

domingo, 15 de setembro de 13

Conceito de Algoritmos
Operadores aritmticos (*, /, -, +) Ex: 3*4, 3-4, 2+5; delta = num*3; Operador de mdulo da diviso (%) Ex: num = 17%5;

domingo, 15 de setembro de 13

Conceito de Algoritmos
Operadores aritmticos de atribuio

domingo, 15 de setembro de 13

Conceito de Algoritmos
Operadores de incremento ou decremento

domingo, 15 de setembro de 13

Conceito de Algoritmos
Algumas funes teis:

Funes tem prioridade sobre os outros operadores

domingo, 15 de setembro de 13

Entrada e Sada de Dados


Sada de dados(Imprimir na tela): printf("Sua idade : %d anos. \n", idade); printf("Sua altura : %f metros. \n", altura); printf("A letra : %c. \n", letra); Entrada de dados(Ler do teclado): scanf("%d", &idade); scanf("%f", &altura); scanf("%c", &letra);

domingo, 15 de setembro de 13

I/O Algoritmos
Preciso dos tipos

domingo, 15 de setembro de 13

I/O Algoritmos
Formatao para o printf()

domingo, 15 de setembro de 13

I/O Algoritmos
Formatao para o printf()

domingo, 15 de setembro de 13

Algoritmos
EXERCICIOS!

05 PTS

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Operadores lgicos:

No um tipo bsico do C! O 0 est p/ o FALSO, assim como qualquer valor est para o VERDADEIRO

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Operadores lgicos:

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Operadores relacionais:

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Precedncia entre operadores relacionaise e lgicos:

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Alternativa simples: Se..Ento...Fimse (Portugol)

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Alternativa simples: Se..Ento...Fimse (Portugol) Exemplo 1: Escreva um algoritmo para calcular a rea de um crculo, fornecido o valor do raio, que deve ser positivo. Em seguida o algoritmo deve imprimir o valor da rea na tela do computador.
algoritmo Area1" var real: Area, Raio: inicio escreva ("Entre com o raio do crculo") leia (Raio) se Raio > 0 entao Area <- 3.14*pow(Raio,2) escreva ("A rea ", Area) fimse se Raio <= 0 entao escreva ("Raio no pode ser nulo ou negativo!") fimse fimalgoritmo

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Formato de alternativa simples em C

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Alternativa simples: Se..Ento...Fimse (Em C)

Exemplo 2: Escreva um algoritmo que l o valor da mercadoria, calcula e mostra o valor nal a ser pago incluindo, se for o caso, a taxa de embrulho para presente que de R$ 4,50.

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Alternativa simples: Se..Ento...Fimse (Em C)
#include <stdio.h> #include <stdlib.h> int main() { float valor; char presente; printf("Informe o valor da mercadoria:"); scanf("%f", &valor); getchar(); printf("Dever ser embrulhada para presente?"); scanf("%c", &presente); if (presente == 'S') { valor = valor + 4.50; } printf("Total a pagar: %f",valor); system("PAUSE"); return 0; }
domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Alternativa simples: Se..Ento...Fimse (Em C)

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Alternativa simples: Se..Ento...Fimse (Em C)

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Alternativa simples: Se..Ento...Fimse (Em C)

Outro tipo bsico do C

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Alternativa simples: Se..Ento...Fimse (Em C)

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Alternativa composta: Se..ento...seno...fimse (Portugol)

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Alternativa composta: Se..ento...seno...fimse (Portugol)

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Voltando ao Algoritmo de clculo da rea do crculo (Portugol)
algoritmo Area2" var real: Area, Raio; inicio escreva ("Entre com o raio do crculo") leia (Raio) se Raio > 0 entao Area <- 3.14*pow(Raio,2) escreva ("A rea ", Area) senao escreva ("Raio no pode ser nulo ou negativo!") fimse fimalgoritmo

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Formato de alternativa composta em C

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Voltando ao Algoritmo de clculo da rea do crculo (Em C)
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { float Area, Raio; printf("Informe o valor do raio:"); scanf("%f", &Raio); if (Raio > 0) { Area = 3.14*pow(Raio,2); printf("A area eh: %.2f \n",Area); } else { printf("Raio no pode ser nulo ou negativo! \n"); } system("PAUSE"); return 0; }

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Formato de alternativas aninhadas em C

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Formato de alternativas aninhadas em C

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Formato de alternativas aninhadas em C

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Formato de alternativas aninhadas em C

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Formato de alternativas de mltipla escolha em Portugol

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Formato de alternativas de mltipla escolha em Fluxograma

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Formato de alternativas de mltipla escolha em C

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Formato de alternativas de mltipla escolha em C

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
Formato de alternativas de mltipla escolha em C

domingo, 15 de setembro de 13

Algoritmos c/ Alternativas
EXERCICIOS!

domingo, 15 de setembro de 13

Algoritmos c/ Repeties
Repeties c/ teste no incio: Enquanto...Faa (Portugol) enquanto <expressao> faca <lista de comandos> fimenquanto

domingo, 15 de setembro de 13

Algoritmos c/ Repeties
Repeties c/ teste no incio: Enquanto...Faa (C)

Escreva um programa que solicite ao usurio um nmero N e imprima na tela os nmeros de 0 a N

domingo, 15 de setembro de 13

Algoritmos c/ Repeties
Repeties c/ teste no incio: Enquanto...Faa (C)

domingo, 15 de setembro de 13

Algoritmos c/ Repeties
Formato de Repeties c/ teste no incio

domingo, 15 de setembro de 13

Algoritmos c/ Repeties
Repeties c/ teste no incio: Enquanto...Faa (C)

Exemplo 3: Escreva um programa que solicita ao usurio N notas, calcula e imprime na tela do computador a mdia da turma. O programa deve continuar solicitando notas at que o valor -1 seja digitado pelo usurio.

domingo, 15 de setembro de 13

Algoritmos c/ Repeties
Repeties c/ teste no incio: Enquanto...Faa (C)
#include <stdio.h> #include <stdlib.h> int main() { float numero, soma = 0, media = 0; int N = 0; printf("Escreva uma nota:"); scanf("%f", &numero); while(numero != -1) { N++; soma = soma + numero; printf("Escreva uma outra nota:"); scanf("%f", &numero); } media = soma/N; printf("A media eh: %f \n", media); system("PAUSE"); return 0; }

domingo, 15 de setembro de 13

Algoritmos c/ Repeties
Repeties c/ teste no final:Faa...Enquanto (Portugol) faca <lista de comandos> enquanto <expressao>

domingo, 15 de setembro de 13

Algoritmos c/ Repeties
Formato de repeties c/ teste no final:Faa...Enquanto (C)

domingo, 15 de setembro de 13

Algoritmos c/ Repeties
Repeties c/ teste no final:Faa...Enquanto (C)
#include <stdio.h> #include <stdlib.h> int main( ) { int Npares = 0, Nimpares = 0, Numero; do{ printf("Digite um numero: "); scanf("%d", &Numero); if (Numero > 0) { if (Numero%2 == 0) Npares++;; else } } while(Numero != -1); printf("Numero de pares: %d \n", Npares); printf("Numero de mpares: %d \n", Nimpares); system("PAUSE"); return 0; }
domingo, 15 de setembro de 13

Algoritmos c/ Repeties
Repeties c/ teste no inicio: para...fimpara (Portugol)

para <variavel de controle> de <valor inicial> ate <valor final> [passo <incremento>] faca <lista de comandos> fimpara

domingo, 15 de setembro de 13

Algoritmos c/ Repeties
Repeties c/ teste no inicio: For (C)

domingo, 15 de setembro de 13

Algoritmos c/ Repeties
Repeties c/ teste no inicio: For (C)

Escreva um programa que solicite ao usurio um nmero N e imprima na tela os nmeros de 0 a N

domingo, 15 de setembro de 13

Algoritmos c/ Repeties
Repeties c/ teste no inicio: For (C)
#include <stdio.h> #include <stdlib.h> int main() { int N, i; printf("Digite o valor de N:"); scanf("%d", &N); for(i = 0; i<=N;i++){ printf("%d\n", i); } system("PAUSE"); return 0; }

domingo, 15 de setembro de 13

Algoritmos c/ Repeties
EXERCICIOS!

05 PTS

05 PTS

domingo, 15 de setembro de 13

Vetores!

domingo, 15 de setembro de 13

Vetores!
Em muitas aplicaes precisamos trabalhar com conjuntos de dados que so semelhantes em tipo. Por exemplo, o conjunto de notas dos alunos de uma turma. Dependendo da natureza do problema, seria conveniente colocar estas informaes sob um mesmo conjunto e referenciar cada dado individual deste conjunto por um nmero ndice.

Notas[5]

10 0 1 2 3 4

ndice

domingo, 15 de setembro de 13

Vetores!
Em muitas aplicaes precisamos trabalhar com conjuntos de dados que so semelhantes em tipo. Por exemplo, o conjunto de notas dos alunos de uma turma. Dependendo da natureza do problema, seria conveniente colocar estas informaes sob um mesmo conjunto e referenciar cada dado individual deste conjunto por um nmero ndice.

Notas[5]

10 0

3 1 2 3 4

ndice

domingo, 15 de setembro de 13

Vetores!
Em muitas aplicaes precisamos trabalhar com conjuntos de dados que so semelhantes em tipo. Por exemplo, o conjunto de notas dos alunos de uma turma. Dependendo da natureza do problema, seria conveniente colocar estas informaes sob um mesmo conjunto e referenciar cada dado individual deste conjunto por um nmero ndice.

Notas[5]

10 0

3 1

6 2 3 4

ndice

domingo, 15 de setembro de 13

Vetores!
Em muitas aplicaes precisamos trabalhar com conjuntos de dados que so semelhantes em tipo. Por exemplo, o conjunto de notas dos alunos de uma turma. Dependendo da natureza do problema, seria conveniente colocar estas informaes sob um mesmo conjunto e referenciar cada dado individual deste conjunto por um nmero ndice.

Notas[5]

10 0

3 1

6 2

9 3 4

ndice

domingo, 15 de setembro de 13

Vetores!
Em muitas aplicaes precisamos trabalhar com conjuntos de dados que so semelhantes em tipo. Por exemplo, o conjunto de notas dos alunos de uma turma. Dependendo da natureza do problema, seria conveniente colocar estas informaes sob um mesmo conjunto e referenciar cada dado individual deste conjunto por um nmero ndice.

Notas[5]

10 0

3 1

6 2

9 3

12 4

ndice

domingo, 15 de setembro de 13

Vetores!
Em muitas aplicaes precisamos trabalhar com conjuntos de dados que so semelhantes em tipo. Por exemplo, o conjunto de notas dos alunos de uma turma. Dependendo da natureza do problema, seria conveniente colocar estas informaes sob um mesmo conjunto e referenciar cada dado individual deste conjunto por um nmero ndice. O ndice sempre o tamanho do vetor - 1, N -1.

Notas[5]

10 0

3 1

6 2

9 3

12 4

ndice

domingo, 15 de setembro de 13

Vetores!
Declarao de vetores em C

<tipo> <nome>[<tamanho>];
#include <stdio.h> #include <stdlib.h> int main() { float SALF[100]; int CODF[100]; int FILHOSF[100]; system("PAUSE"); return 0; }

domingo, 15 de setembro de 13

Vetores!
Declarao de vetores em C Um ponto IMPORTANTE que deve ser frisado que na linguagem C o ndice de um vetor de N elementos vai de 0 a N-1, ento F[0] o primeiro elemento, F[N-1] o ltimo elemento e F[N] uma varivel invlida, pois contando de 0 a N-1 possumos exatamente N elementos.

domingo, 15 de setembro de 13

Vetores!
Preenchimento de vetores em C

domingo, 15 de setembro de 13

Vetores!
Acessando o contedo de vetores em C
int main() { float notas[3], media; int i; for(i=0;i<=1;i++) { printf("Digite nota:"); scanf("%f",&notas[i]); } notas[2] = 7.5; media = (notas[0] + notas[1] + notas[2])/3; printf(As notas digiadas foram: \n); for(i=0;i<=2;i++) { printf(NOTA[%d]: %f \n, i, notas[i]); } printf(A media eh: %f \n, media); system("PAUSE"); return 0; }
domingo, 15 de setembro de 13

Vetores!
Erros!!!

domingo, 15 de setembro de 13

Vetores!
Erros!!!

domingo, 15 de setembro de 13

Vetores!
Inicializao de Vetores

domingo, 15 de setembro de 13

Vetores!
Inicializao de Vetores

domingo, 15 de setembro de 13

Vetores!
Inicializao de Vetores

domingo, 15 de setembro de 13

Vetores!
Inicializao de Vetores

domingo, 15 de setembro de 13

Vetores!
Inicializao de Vetores

domingo, 15 de setembro de 13

Vetores!
Inicializao de Vetores

domingo, 15 de setembro de 13

Vetores!
Inicializao de Vetores

domingo, 15 de setembro de 13

Vetores!
Inicializao de Vetores

domingo, 15 de setembro de 13

Vetores!
De novo Alocao Dinmica de forma errada!!!!

domingo, 15 de setembro de 13

Vetores!
De novo Alocao Dinmica de forma errada!!!!

domingo, 15 de setembro de 13

Vetores!
De novo Alocao Dinmica de forma errada!!!!

domingo, 15 de setembro de 13

Desao

domingo, 15 de setembro de 13

Desao Formem seus times!!! Trabalhem como uma equipe

e....

domingo, 15 de setembro de 13

domingo, 15 de setembro de 13

Desao
05 PTS

15 PTS

20 PTS

domingo, 15 de setembro de 13

Desao

60 PTS

domingo, 15 de setembro de 13