Aula1 Algoritmos I

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 20

Algoritmos II

em linguagem C

Prof. Dr. Eliseu LS


EMENTA DO CURSO
Aborda o desenvolvimento de algoritmos, a partir de técnicas de programação iterativa e
recursiva e do estudo de eficiência de algoritmos. Apresenta os métodos de busca e classificação
de dados em memória. Aborda, ainda, o conceito e a implementação de vetores e matrizes, além
de estruturas de dados simples: fila, pilha, fila de prioridade e heap.

BIBLIOGRAFIA BÁSICA

CORMEN, T. H. et al. Algoritmos: teoria e prática. Rio de Janeiro: Campus, 2002.

FEOFILOFF, P. Algoritmos em linguagem C. Rio de Janeiro: Elsevier, 2009.

SZWARCFITER, J. L.; MARKENZON, L. Estruturas de dados e seus algoritmos. Rio de Janeiro: LTC, 2010.

COMPLEMENTAR

MANZANO, José Augusto N. G., Estudo Dirigido: ALGORITMOS.

MIZRAHI, Victorine Viviane, Treinamento em Linguagem C - Módulo 1

Referência: www.cplusplus.com\reference

2
METODOLOGIA DAS AULAS

1. Recursos obrigatórios: Internet, computador e smartphone.


2. Códigos de programas deverão ser digitados, compilados, executados, impressos
digitalmente em um arquivo do ms-word ou PDF, a ser anexado somente pelo Teams,
obrigatoriamente com os prints de execução e enunciado do código.
3. Cada atividade valerá de 2 até 4 pontos e a clonagem de trabalhos de colegas é proibida, será
descontado 1,0 de cada tópico não entregue na atividade.

DINÂMICA (Aulas práticas)

1. Aula interativa com exercícios de Aprendizagem: Nesta parte, o professor apresenta o


princípio de funcionamento de cada comando e também os conceitos de lógica, em seguida
exibe no datashow, de forma dinâmica ou estática, um exercício de aprendizagem contendo os
conceitos de lógica e comandos que foram ensinados.

2. Aula dinâmica com exercícios de Fixação: Nesta parte da aula, caberá aos alunos a prática
dos comandos e conceitos explicados pelo professor. Cabe ao aluno se esforçar para fazer os
exercícios e poderá recorrer ao professor que estará disponível para tirar dúvidas via chat para
sanar possíveis defeitos no código.

3. Forma de correção/entrega de exercícios/avaliações : O processo de correção destas


atividades se dará de forma individualizada e pessoal pelo professor que apresentará a
pontuação e os possíveis comentários de feedback pelo ms-teams. Caberá ao aluno
apresentar ao professor as suas dúvidas através do chat teams e presencialmente, antes
de enviar o código final, no prazo máximo de 7 dias contados a partir da publicação da
atividade, em caso de doença ou exceções, prazo poderá ser de no máximo 14 dias após a
publicação inicial, com perda de 50% da pontuação da atividade. . 3
CORREÇÃO DOS PROGRAMAS/AVALIAÇÕES
a) A nota dos programas/avaliações será considerada nula (Zero), quando:

1. o enunciado não for atendido na íntegra;


2. o código não contiver bibliotecas ou a diretiva namespace;
3. o código não contiver a sub rotina principal int main();
4. Número de sub rotinas (void ou não void) estiver diferente do que a o pedido no
enunciado;
5. Técnica de programação (Linear ou Estruturada) estiver diferente do que a pedida
no enunciado

b) O código das SUB ROTINAS do tipo void ou não void, das avaliações, será
considerado totalmente errado quando:

1. A lista de parâmetros ou argumentos não estiver de acordo com o enunciado;


2. Os parâmetros e argumentos estiverem incorretos ou declarados sem
necessidade;
3. contiver fórmulas erradas ou montadas de forma incorreta

4
COMPOSIÇÃO DA NOTA
Avaliações CP, CC:

1. Avaliação Prática - AP: Avaliação contínua prática, possui peso 0.50,


trata-se da média proporcional de todas as tarefas individuais enviadas
através do Teams que corresponde a prática profissional na construção de
algoritmos;

2. Avaliação Diagnóstica - AD: Avaliação diagnóstica cognitiva teórica ou


prática , aplicada em sala de aula ou laboratório, possui peso 0.50, onde
serão avaliados conceitos teóricos e práticos correspondentes ao conteúdo
trabalhado nas tarefas realizadas.

3. MEDIA: MEDIA = (NP + PD) / 2;

ATENÇÃO: Para a promoção, o aluno deverá obter no mínimo a média 7.


1
Revendo os primeiros
passos em C
BREVE HISTÓRICO
A Linguagem C foi criada e implementada nos primórdios dos anos 70 por Dennis Ritchie tendo
como pano de fundo o Sistema Operacional UNIX criado para computadores de grande porte.

Esta ferramenta de programação é o resultado de um processo iniciado em outra linguagem de


programação chamada BCPL, criada por Martin Richards. Esta linguagem influenciou a linguagem
inventada por Ken Thompson, conhecida simplesmente como linguagem B.

Muito óbvio, a linguagem C é a evolução da linguagem B.

Ainda hoje, o código nativo desta linguagem é utilizado no mundo todo tendo influenciado linguagens
como Java, Php, JavaScript entre outras, sendo utilizada inclusive em trabalhos de robótica, tais
como arduino, etc.

A linguagem C encontra seus limites em códigos que ultrapassam 100.000 linhas, para a solução
desse problema, em 1980 sofreu uma nova evolução com recursos incorporados tornando-se
também uma linguagem orientada a objetos, adaptações feitas por Bjarne Stroustrup cuja evolução
se batizou com o nome de "C com classes" mais tarde em 1983 recebendo o nome de C++.

7
IDE - COMPILADORES
IDE/Compilador é qualquer software que permite a compilação (correção
de erros de sintaxe) e execução de códigos fontes de uma determinada
linguagem. Os compiladores do projeto GNU (Licença Livre) podem ser obtidos
livremente através da Internet. O ambiente BloodShed Dev-C++ roda no
Windows e utiliza os compiladores gcc e g++.

Você poderá também utilizar outros IDEs tais como: Codblocks,


NetBeans, Eclipse, repl.it, onlinegdb.com e outros.

8
BLOCO - Estrutura Básica de um programa em C
Um programa C é composto de funções, cada função com seu código digitado
dentro de duas chaves opostas, o que chamamos de Bloco { }. Todo comando
sempre em letra minúscula finalizando com ponto e vírgula (;) .

#include <stdio>
int main (void)
{
comando 1;
comando 2;
comando 3;

return (0) ;
}

9
DIRETIVAS DO PRÉ-PROCESSADOR
São instruções, colocadas geralmente no início do código fonte, que serão
chamadas por um programa denominado pré-processador com a finalidade de
executar as bibliotecas e códigos incluídos pelas mesmas.

Uma diretiva não contém ponto-e-vírgula no final da linha, quando está


entre < > o arquivo é procurado somente na pasta include e quando entre “ ” é
procurado primeiro na pasta onde está o executável do código fonte, caso não
encontre a biblioteca nesta pasta então irá procurar posteriormente na pasta
default “include”.

De modo geral, os arquivos de bibliotecas na linguagem C são terminados com


a extensão .h. Veja dois exemplos do uso do comando #include:

#include <stdio.h>
#include "D:\Programas\soma.h"

10
PRINCIPAIS DIRETIVAS
#include <> => serve para incluir os arquivos de bibliotecas que contém funções que
poderão ser utilizadas dentro do código.

stdio.h => biblioteca que contém comandos e funções de entrada e saída


entre outras funções em C, por exemplo para utilizar o comando de leitura
scanf ( ) e o comando de impressão printf ( ).

string.h => biblioteca que permite o trabalho com strings.


locale.h => biblioteca para usar o comando setlocale( ) para configurar o
idioma
stdlib.h => biblioteca que permite executar comandos do terminal do sistemas
operacional, exemplo o comando system( );
math.h => biblioteca matemática do C, seno, cosseno, média, mediana, moda,
etc.

Exemplo: #include <stdio.h>


#include "string.h"
#include "math.h"

11
TIPOS PRIMITIVOS SUPORTADOS
Cada variável ou constante poderá armazenar um tipo de informação em forma de
texto ou de números:

bool – tipo lógico/booleano, exemplo: bool maior = true ou maior = false (1 ou 0).

float – tipo real com 32 bits, exemplo float x= 0.55F, y = 1.22F.

char – têm o tamanho de byte ou seja 8 bits, armazena caracteres ASCII ou


números de 8 bits, exemplo char x = ‘a’; (caracteres especiais são representados
entre aspas simples)

int – armazena números inteiros com 32 bits.

string - não é primitivo, mas serve para trabalhar e armazenar texto através da
função getline( )

12
PRIMEIRAS INSTRUÇÕES EM C++
– função main( ) => o código fonte deverá ser digitado dentro do bloco
dessa função principal do C++, sem ela o programa não executa;

– instrução printf ( ) => este comando faz parte da biblioteca stdio.h,


serve para enviar/imprimir texto ou variáveis no vídeo;

– instrução scanf ( ) => permite a entrada/leitura de variáveis, também


da biblioteca stdio;

– instrução system() => permite a execução de um comandos/programas


externos ao código fonte;

– instrução setlocale(LC_ALL, “Portuguese”) => permite acentuação


gráfica em português.

13
Caracteres de composição de Strings
da função Printf ( )
// Composição de Strings com printf()
// Código 1
#include <stdio.h>
int main ( void ) {
char letra = 'E';
int idade = 40;
char nome[] = "Sara Silva";
double media = 5.44;

printf("Meu nome é %s, \ntenho %d anos de idade ,


\nminha média final é %.2f, \ne a inicial do meu nome é
%c", nome, idade, media, letra );

// Usa 5 espaços para exibir a média


// coloca duas casas decimais e o restante
// dos espaços à esquerda
printf("\n\nMedia %5.2f \n", media);

// Usa 5 espaços para exibir a média


// coloca duas casas decimais e o restante
// dos espaços à direita
printf("Media %-5.2f \n", media);
return 0;
}
14
OPERADORES ARITMÉTICOS E RELACIONAIS
São os principais símbolos utilizados em fórmulas matemáticas e comparações
entre dados:

divisão => / produto => * soma => + subtração => -

raíz cúbica: raíz = cbrt ( valor) ex. double x = cbrt (27) resultado 3
raiz quadrada: raiz = sqrt ( valor) ex. double x = sqrt (25) resultado 5
potenciação: potência = pow( base, expoente) ex. x = pow(4, 2) resultado 16
Qualquer Raiz: pow(base, expoente ) ex. raiz quinta de 2 x = pow(2, 0.2)

comparação entre valores => == diferença => !=

! Negação = uso em fórmulas / atribuição

Comparações compostas && AND | | OR (pipe)


15
CÓDIGOS ESPECIAIS
São usados dentro dos textos que serão impressos no vídeo ou
impressora quando necessários.

16
APRENDIZAGEM: Código 2

#include "stdio.h" // printf, scanf


#include "stdlib.h" // system
#include "locale.h" // setlocale
#define pi 3.14 // cria constante pi com #define

int main( void ) {


system("clear");
setlocale(LC_ALL, "Portuguese");

// double const pi = 3.14;


double resultado; // cria a variável resultado
resultado = pi * 10; // faz o cálculo

printf("Resultado %.3f", resultado);


printf("\n);
system("sleep 3");

return 0; }
17
Caracteres de composição de Strings
da função Scanf ( )
// Código 3
#include <stdio.h>
int main ( void ) {
char letra;
int idade;
double media;

printf("Digite a primeira letra do seu nome:");


scanf("%c", &letra);

printf("Digite a sua idade:");


scanf("%d", &idade);

printf("Digite a sua média:");


scanf("%lf", &media);

printf("Sua idade é %d, sua média é %5.2f e a primeira


letra do seu nome é %c \n", idade, media, letra);
Nota: use %lf para double
return 0;
}

18
APRENDIZAGEM: Código 4
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
#include "locale.h"

int main() { system("clear");


setlocale(LC_ALL, "Portuguese");

double nota1=0, nota2=0, media=0;

printf("\nDigite a nota1:");
scanf("%lf", &nota1);

printf("\nDigite a nota2:");
scanf("%lf", &nota2);

media = (nota1 + nota2)/2;

printf("Média é : %.2f \n");


system("sleep 5");
return 0; }
19
TAREFA / AVALIAÇÃO CONTÍNUA

Fazer o código fonte dos enunciados A, C, D, E e H do exercício ( 7 ) das


páginas 25 e 26 do livro de exercícios: Estudo Dirigido de Algoritmos Manzano.

NOTA: Entrega individual obrigatória pelo Teams ou Google Class Room, os


códigos deverão ser inseridos dentro de um único arquivo DOCX ou PDF,
juntamente com o enunciado de cada programa, códigos e prints de execução.
Será descontado no mínimo 1 ponto para item não entregue.

20

Você também pode gostar